课程设计开发总结的详细介绍
前几天做了个学生管理系统的课程设计,现在做点小结。
首先,由于自己对java比较熟悉,所以决定用java作为开发语言。数据库采用SQL Server2000,开发工具选用开源的 Eclipse3.0 。由于这是我第一次用 Eclipse,所以花了不少时间在熟悉工具上。
实现功能:
能够实现对数据库中学生、课程、班级三个表的维护与查询,可以添加、修改、删除、浏览任一条记录,对任一表中的数据按不同的条件查询,并可以多个条件组合查询。出于基本的安全考虑,数据库操作只能由特定的授权人员进行,所以也包含身份验证功能。
开发过程:
1月7日~1月9日:这几天基本都在摸索工具的使用。Eclipse 的功能是比较强大的,加上可视插件,可以方便地自动生成界面代码。整个程序的框架借鉴了jdk自带的demo中的 Metalworks ,这个demo演示了多文档程序的实现,对我有很大的参考价值,最后我的程序从代码到界面都受其影响,对于代码的规范化有很大帮助。
这次吸取了以前的教训,在开发前对整个程序的结构做了一定的规划,把各个功能分成不同模块,最后整合在一起,然后单独一个包含main方法的类。这样做虽然开始花费了不少时间,但在后面却极大地方便了功能的添加和实现,这次经历使我深刻体会到软件工程的重要性,对以后做大的项目积累了一定的经验。
由于Eclipse的插件都是自己寻找并安装的,所以有很大的自由性。界面的设计我采用了Jigloo插件,只需拖拖控件就可以完成,但是在设计中我犯了个错误,手动修改了自动生成的代码,结果导致修改界面后出现多处错误,手动修改后只要改动界面就又出错,最后只好全部重做,耽误了不少时间。
1月10日:在完成了基本框架和学生维护界面后,从这天开始就涉及到数据库的操作了。Java连接SQL Server数据库有两种方式,一种是安装微软提供的JDBC驱动,一种是通过JDBC:ODBC桥。考虑到这仅仅是个桌面应用程序,就采用了第二种方式,不需要另外安装驱动了。首先要在系统数据源管理中添加数据源,然后用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 连接数据库。数据库连接是在Bridge类中完成的,数据库操作由Manage类实现。先以实现登录功能来测试连接,由于用户信息包含在users表中,直接执行"select upassword from users where uname=/'"+ log.getUser() +"/'" ,得到upassword字段的内容,把它与文本段的内容比较即可,登录成功则激活维护和查询菜单。
1月11日:前天已经把学生表维护的界面做好,这天就来实现其中的功能。实现的过程虽不复杂但比较繁琐,因为字段很多。其中遇到了ResultSet游标不能往回移的情况,经过查阅JDK文档,发现ResultSet默认属性是TYPE_FORWARD_ONLY,所以创建连接时把参数设成ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY就解决了,这样就可以访问表中任何位置的数据了。
1月12日:下午停电踢了半天球,晚上抓紧完成学生表的查询功能。我通过几个checkBox来生成查询语句,选中的话对应的字符串就为查询内容,否则为空,最后把所有字符串组合起来,生成查询语句,执行后把结果放到一个textArea中。这个过程中遇到一个小问题,由于几个条件查询时要用"and"连接,由于条件个数是不定的,所以只能在生成的每个字符串后面加上"and",这样组合起来后最后面就多了一个"and",我再用subString()方法把最后的"and"去掉,这样就成功了。还有一点,由于我的结果输出是用的组合成字符串的方法,这样显示时由于字长不同会不对齐,尽管我用了"/t"来自动缩进,但是如果遇到很长的字符串,就会比其它行多退一格,似乎没有什么好的解决办法。也许把结果输出到一个表格里会比较好,但是表格的大小是固定的,所以必须在查询完毕后生成,这个方法应该是可行的,但为了赶时间,最终没能实现它,其他几个查询界面也是用了这个有缺陷的文本输出的方法。这个做好后,技术上已经没有障碍了,我一口气把课程表的维护和查询也都完成了。
1月13日:最后两个界面,班级表的查询和维护。这些基本和前面的一样,由于我把功能的实现和界面、事件注册都分离了,所以新做的只要把界面设计好,然后把代码复制过来,再根据现在的要求把控件名、字段名改一下就好了,所以进展很顺利,一个小时一个界面,很快就做好了。最后做了个说明对话框,大功告成了!
下面是登录后的界面:
存在问题:
一个在上面已经说过了,就是查询结果中的超长文本无法对齐显示,不过一般不会遇到这种情况,因为需要填很长的文本的机会很少,但这毕竟是一个缺陷。还有,为了去掉字段中的空格,我用了trim()方法忽略返回结果中的空格,但一旦返回的是null,就会出现空指针的异常,出现这个矛盾主要还是为了输出时美观产生的,如果用JTable应该不会有这种问题。还有就是在删除记录时应该有个警告对话框,我根据文档里的说法做了一下却没成功,不知道哪里出了问题。另外,我想不设置数据源来连接,即所谓的无源连接,用access倒是可以,这个搞不定。最后,在得到查询结果时,我用了getString(String columnName)的方法,把每列的内容一个个赋到结果字符串里,但还有一个方法:getString(int columnIndex)即用列号来返回结果,这样用一个循环就可以完成所有赋值。但是我用这种方法就会得到"非法的描述符索引"异常,百思不得其解,上网和别人讨论也没得出结果。这点问题希望各路豪杰能不吝赐教!
本文地址:http://www.45fan.com/dnjc/69026.html