校园导航系统---2019暑期项目第二周总结

序:

      HALO,各位看客们大家好,距离暑假已经过去了两周,我们实验室的暑期留校生活也已经过去了两周,在第一周之后的一个星期,对暑期项目----校园导航系统进行了最后的完善.

历时两周完成了校园导航系统.

首先是登陆界面:

新增功能:

1,记住密码,在普通用户登录时可选择记住密码,在下次登陆时,密码会在密码框内以圆点方式出现.

2,自动登陆,用户登陆时可选择自动登录,在程序下次启动时会自动登陆至改用户,可在用户界面注销登陆,注销后会自动取消自动登陆的选中,选中自动登陆的同时会附带添加记住密码.

3,优化界面设计,添加背景.优化各组件大小.

4,新增输入框输入事件,在注册,登陆时均只允许输入字母以及数字,避免出现非法字符的干扰.

5,增加长度限制,限制输入用户名及密码输入长度上限.

6,注册逻辑优化:添加验证二次密码功能,用户名验重.

7,在登录时,用户名输入框会获得以及登陆的用户名称,方便下次登陆.

校园导航系统---2019暑期项目第二周总结_第1张图片

用户端:(用户可查询两建筑之间的最短路径,查询地点基于模糊搜索,全程可鼠标操作,无需键盘,在鼠标点击地图时,底下文本框自动更新地点信息,右侧出发地以及到达地随左右键点击自动更新)

新增功能:

1,新增星标建筑功能,星标建筑只可由已登陆用户设置,在设置星标建筑后,在下次用户登陆时,坐标点会自动跟踪至星标建筑,及方便查找路线.(注:星标建筑功能可用户决定是否关闭,关闭后星标建筑图标不会显示,无法设置星标建筑).

2,增加注销功能,用户可注销选择其他用户登陆.

3,增加道路信息显示,由鼠标左右键控制,在没有道路时获得提示信息.

4,新增三种线路,共四种,最短,最快,最美,最绿.优化算法设计,由Floyd算法改写为Dijkstra算法,优化时间复杂度.

5,新增鼠标事件,用户左右键坐标点不允许自由自动,一定会位于建筑上方.

6,界面优化,大幅提升用户体验,建筑不同类型会决定图片的类型,星标建筑由不同颜色图标提示,优化路径颜色,路径透明,不会遮挡建筑名称.设置背景图片,图片风格与登陆界面一致.

7,新增修改密码功能,修改密码需原密码,需验证新密码.

校园导航系统---2019暑期项目第二周总结_第2张图片

 

          

校园导航系统---2019暑期项目第二周总结_第3张图片

管理员端使用界面(实现了建筑的添加,删除,修改位置,修改资料,以及实现了增加两建筑之间的路,删除一条路)

新增功能:

1,实现全程连接数据库,将图片存入数据库,无需本地文件.

2,添加判断逻辑:在添加建筑时不允许与附近建筑重叠.

3,添加非法输入判断:不允许过长输入,长度以及美化程度绿化程度的输入均只能输入数字,同时对所有的输入均会进行长度检验,长度根据具体输入设置.

4,对删除建筑进行优化,原删除建筑会删除附带的路,但需要在下次启动程序时刷新,现在可直接刷新.

5,新增逻辑判断,在查询或者修改道路信息时优先判断是否有路,没有路会提示是否创建.

6,新增界面美化:按钮的名字均有所修改,优化管理员使用体验.

校园导航系统---2019暑期项目第二周总结_第4张图片

 

在用户查询两地点后,地点以及路线将标红,为用户提供舒适的体验.

整个程序的地图又AWT的绘图类绘制,可自动更新,在删除,添加操作后将进行重新绘图,无需重启程序.

 

章一:

    编写程序的过程:

    第一周:

    第一天:完成对程序架构的设计,确认程序实现的功能,以及基础信息类的编写.

    第二-三天:完成对用户管理员登陆界面的编写,以及用户管理员使用界面的UI设计. 

    第四天:完成最短路径的查询,以及输出(算法基于Floyd以及Dijkstra).

    第五天:完善部分BUG,对程序进行全面测试. 

    第二周:

    第一天:完成部分界面优化,优化使用逻辑.

    第二天:完成对键盘事件的添加,增加对非法输入的判断.

    第三天:完成对算法的优化,以及多种路径查询的添加,基于Dijkstra与dfs.

    第四天:完成对所有输入长度的检查,完成管理员部分功能的逻辑优化.

    第五天:对程序进行全面的测试.

章二:

    程序编写时遇到的问题:

    第一周:

    1.首要问题,程序编写的过程其实不是很难,在完成了第一个JAVA项目聊天室以后(被骂的有点惨,小声bb),对接下来的程序编写确实更为流程,程序编写的最大难题还是程序框架的设计,以及程序功能的设计,以及对程序性能的优化.在第一天刚接触项目时,基本没有头绪,在看到长篇的项目要求时,确实头脑中一团浆糊,但是在一天漫长的思索过后,还是通过写txt文档,将思路理顺,这才成功的构思出全部框架.

    2.在连接数据库时出现了连接错误,因为MySql下载的是8.0以后的版本,所以在连接数据库时连接方式与书中方式颇有不同,但是问题不大,通过网上查资料成功解决.

    3.在程序性能的优化上做的不够理想,学长的要求是用迪杰斯特拉最基本,一开始使用的是弗洛伊德,但是弗洛伊德的代码是简单了,时间复杂度确实太高了,后面改成了迪杰斯特拉,在下一个星期里,争取学会A*算法,完成多线程迪杰斯特拉的使用!!

    第二周:

    1,相对于第一周的整体框架设计,第二周的编写速度有所加快,但是仍有部分不足,第一是在第一周的类建立目标不明确,部分类的使用不清晰,在第二周对部分类进行重构,使程序中类的耦合程度降低,

    2,在部分数据库的使用上有所疑难,在集合类的使用上有所疑难.但是基本问题以及解决.

 

章三:

     感想:

       第一周:

       编程方面:最大的感想还是要加强基础知识,在遇到很多基础知识的使用方面确实有不少问题,比如容器使用方面,以及对于变量命名方面一定要加强!!!不然确实写着写着就容易找不到地方.但是因为对类的分类已经开始有所感觉了,所以编程起来比一起容易了不少.然后就是算法能力需要加强,毕竟计算机就是学数学的,算法还是编程的根本.

       生活方面:确实程序员也不是大家想象中的那么简单,才过了五天,真实的996生活,确实摧残着我的精神,也坚定了我考研去955的信念.

       第二周:

       编程方面:在闲暇时间看了别人对HashMap源码以及ArrayList源码的分析,使得我对集合的使用能力更上一层楼,在连续编程两个星期以后,对面向对象的编程更为熟悉,能基本开始使用面向对面的思想进行编程,虽然不是很熟练,但是还是一点,基础知识的使用能力一定要加强,不能停留与面向过程的编程思想.然后就是进度有点落后了,要开始在web编程上下功夫了.

       生活方面:这该死的皇家邮电,两天洗一次澡那是真滴难受.

你可能感兴趣的:(周常,java编程,校园导航系统)