说明:笔者重新规划了博客方向,想更详细的讲解微信小程序的所有技术内容,本文于2020年5月24日已做修改。
同时笔者也欢迎一起合作共赢,愿意写杂志,写书,贡献自己的一份微薄之力!
作为第零篇的讲解,本文主要谈谈在大学初次写项目的体验
原文链接 https://blog.csdn.net/qq_41464123/article/details/104982019 ,转载请带上本段内容,谢谢配合。
已经近三周没写博客了,最近一直在忙着写一个项目,趁现在项目所用的服务器申请还在审核备案,写一篇博客,谈谈我在大学第一次写正规付费项目的体验哈哈。
一:写项目的前提
1.有良好的java基础
一般来说,写项目都是在大三才开始的,大一大二都是在打基础,那些基础课程,比如专业课《C语言程序设计》、《C++程序设计》、《JAVA程序设计》、《数据结构》、《网页制作技术》、《数据库基础》、《移动应用开发》(Android开发),甚至是《办公自动化》;公共课比如《高等数学》、《离散数学》、《线性代数》......
不说别的,写项目最最常用的《JAVA程序设计》、《数据库基础》总要会把,Java要理解类和对象、继承、多态、封装等等,如果没有这些基础,相信没有老师愿意给你写项目的机会;数据库是99.9%的项目必备的模块,可以说,一个项目没有连数据库,根本就不叫项目,对数据库的基本sql语句,触发器,存储过程、游标总要会的吧?
2.熟悉前端的html+css+JavaScript基础
写项目前后端都要会,现在流行前后端分离,但是在大学里老师接的项目,以及我们未来工作时写的项目,难道真的会让我们只单独写前端,或者只单独写后端吗?我想,在广大中小公司,恐怕没人敢保证,而html+css+JavaScript正式前端界公认的基础知识,无论是Ext,或者最近很火的Vue,或者JQuery模板,以及其他的前端框架,html+css+JavaScript都是基础,这个会在《网页制作技术》这门课中详细学习。
二:寻找老师
注重时机,有机会则抓住机会,无机会则创造机会。一般来说很多计算机老师会去校外接项目,一方面给自己的学生创造机会,锻炼学生的实践能力,另一方面也可增加自己的经济来源。
俗话说得好,是金子总会发光的,只要你是真的大佬,老师自然看的出来,当然也自然会同意你加入他的项目组,如果你特别厉害,老师们还会主动联系你。这个时候你就要好好考虑,自己未来想要哪个方向发展,是做软件开发?还是从事游戏开发?还是考研?还有是做嵌入式转硬件?这个要结合你自己的学习经历,想想自己会什么?对什么东西不熟练?对什么东西感兴趣?对什么东西不感兴趣?以及未来是去哪里发展?是北上广深的大城市,还是回家就业?如果回家就业,自己家乡的城市,哪些岗位比较多,哪方面工资比较高......这些都是你需要考虑的问题,想好了,再做选择,比如我,我综合考虑,决定从事软件开发,找到了我心仪的项目导师。
三 : 老师能帮到你什么
1.给你提供写项目的机会
写项目也有一个不约而同的流程,比如需求分析,什么物理、逻辑、概念设计等等,可能你没写过项目,在课堂上做这些过程的时候,会觉得很烦,可能回想,我要这个E-R图有什么用?数据库设计不是很简单的吗?其实这些流程是非常重要的,因为这直接决定了,你接下来项目的代码编写的高效性(时效性)。具体的会在后面详细讲解。
作为初入项目组的萌新,你可能会一点java编写,可能听说过spring,但是基本上所有的人,都不可能把所有的流程都做的完美,老师可以根据你的能力和兴趣,给你分配到合适的位置,比如让你写代码,让你做设计,甚至是图片的美工。闻道有先后,术业有专攻,老师会挖掘你的闪光点。
如果你只是在课堂上,自己会写一个 Hello World! ,或者是那种老掉牙的师生请假系统,或者是说那些课程设计的课堂中,拿了老师的代码,改了几个字,就沾沾自喜,那你就out了。知其然,不如知其所以然,你要彻底搞懂老师给的代码中,那些功能是如何 实现的,不懂得一定要找老师答疑。写项目和课堂中的不一样,你要面对客户难缠的需求,还有时间的约束,最重要的,你还会用到那些最近流行的框架,比如Vue、SSM、Spring boot,这对你的开发事半功倍。
2.给你答疑解难
当你在写项目的时候遇到不能实现的点,可以找老师求助,一方面作为老师,另一方面也为了赶项目时间,大多数情况会给学生答疑解难。这会让你的学习生涯上,少走很多弯路。比如我之前再写SSM的时候,一个BUG可能要卡一天,网上䙳资料,也不一定找到某个能用的解决方法。但是老师经验会比你丰富的多,一般来说会短时间内看出你的错误,给你相应的解决方案,或者给你实现该功能的另外一个思路。虽然说自己思考,能锻炼自己的思维能力,但是我们花大量时间在配置环境,安装破解软件上,你凭心自问,划算吗?可以看看下面这个段子:
今天一同学远程面试移动端开发岗。
HR问:请介绍一下你掌握的具体技能?
同学说:本人擅长Ai、Fw、Fl、Ae、Pr、Id、Ps等软件的安装与卸载,精通CSS、JavaScript、PHP、ASP、C、C++、C#、Java、Ruby、Perl、Lisp、Python、Objective-C、ActionScript、Pascal等单词的拼写,熟悉Windows、Linux、Mac、Android、Ios、WP8等系统的开关机
如果你是HR,你会如何认为?
我们要学的东西有很多,大学时间很宝贵!要花时间在后续用得到的技术上!
我们要学的东西有很多,大学时间很宝贵!要花时间在后续用得到的技术上!
我们要学的东西有很多,大学时间很宝贵!要花时间在后续用得到的技术上!
四:项目需求分析
下面给一个真实的项目的客户需求
房东扫描二维码或点击进入某个页面,可以提交某些数据(比如姓名、手机号(短信验证码)、身份证号码、出租房地址(45个村社供选择后填写详细,比如选择长街村后自己填写5弄5号)、出租房地图上定位、房屋信息(有几间,面积)等信息),如房东有多套房子,可在同一界面进行多套房子的提交。提交后,后台或者村管理员点击进行验证通过。
然后还可以提交自己的各个租户(比如甲(里面又能包含姓名、手机号、身份证号、户籍、工作单位、住在哪一间房间、开始入住、结束入住等信息),还有乙、丙、丁很多人),提交后能够返回一个二维码。每个出租房一个二维码。我们这里做出来后贴在房子外面。
对外公开后,只有房东和管理员扫描此二维码能显示里面(房东和此租户)的所有内容。别人看不到里面的信息。
同时房东能对里面信息进行编辑(比如谁什么时候退租了,谁新来租了),二维码能显示目前的租户,
管理员能看到二维码里面信息(比如房东是谁,租户谁什么时候退租了,谁什么时候新来租了),并进行编辑,后台(包括管理员)能看到这间房屋的历史所有租户的信息。
然后比如公司宿舍,能大批量进行数据导入。EXCEL类型。
我们后台也能对目前的所有在租户进行统计和管理。比如刷选某个省份的租户比较多,在户籍处输入河南,能显示全部河南户籍的租户,(目前在租的和已退租的),然后刷选某个公司的,能显示在某个公司上班的所有租户。然后在地图界面,能显示镇上,各个出租房的分布区域状况。同时能导出EXCEL,里面包括房东、租户的信息。
这是一个微信小程序的项目,针对最近的新型冠状病毒,XX市XX县需要一套出租房登记系统,对外来的租户进行登记。
他分为房东用户端(小程序)和管理员端,老师把小程序(包括前后端)交给了我,自己写了管理员部分。
首先可以看出,功能大致分为5个部分:登入注册、房屋登记、租客登记、查询房屋、查询租客,所以我在主界面分为了这五块
然后点击某个模块,能实现该模块的功能:
具体实现技术,我会在后续专门写一篇博客,现在不予讨论。
五:数据库设计
我们的几乎所有的项目,都需要和数据库打交道。比如上面这个项目,房东用户新增房屋,我们就要在数据库插入一条房屋记录,如果用户要修改房屋数据,我们就要在数据库更新这条记录,删除同理。比如房屋表,房屋需要用到哪些数据段?房屋ID?房屋名称?房屋地址?房屋面积?这些都是我们需要考虑的,以及如何把房屋和房东、房东和租客关联起来,都要事先想好,不要等到项目写了一半了,再想起数据库少个字段,这样会反复在原有代码上打补丁,造成不理想的后果。
比如我首次写这个项目,老师看了我的代码,想说:
其实说实话,我也想哭....
六:前后端开发
有了上面的这些设计准备,我们就可以开始进行软件开发了。我们先要学习一些知识,比如微信小程序的基本语法、如何发起请求,如何实现前后端交互,如何实现图片上传,如何实现地图定位,如何实现页面跳转传值,这些基本功都是我们需要的。
而我首次写项目的时候,因为时间紧,我是需要什么,就去学什么,而不是先学完再去做,比如某个功能需要实现定位,那么我就去网上查找相关资料,一个一个去尝试,直到成功为止。
这节的技术部分,我会在后续专门写一篇博客,现在不予讨论。
七:软件测试
软件开发基本完成后,就进入测试阶段。老师会把项目放在服务器上部署,并且会让我们配合,一起前后端联合调试,确保软件功能万无一失,满足客户的需求。这个时候就是反复调BUG,直到BUG被消灭。前期的代码可读性高,数据库设计合理,需求分析到位,那么这个流程就会进展的很顺利,否则是真的痛苦啊。
八:项目交付
就是我们把项目给客户,客户把资金给我们,物物交换,那么,我们也可以拿到老师的分红啦。
大学写项目大致就是这样的流程,写项目会给我们带来很多好处。现在想想,以前写的那些所谓的“项目”是多么肤浅,我们要做真正客户需要的项目,而不是自己想当然的写。