1,引言
1.1系统概述
本项目是通过开发一个学生学籍管理系统,进一步了解使用Java语言进行GUI设计和数据库编程方面的知识。
学生学籍管理系统是学校管理的重要工具,是学校不可或缺的部分。学生管理是学校重要的内容。随着在校大学生人数不断增加,教务系统的数量的也不断上涨,学校工作繁琐、资料众多,人工管理信息的难度越来越大。因此一个学生学籍管理系统可以给学校带来解决信息管理繁琐、工程量大、效率低、保密性差、难维护的问题。
学生学籍管理系统会因为学生的数量、访问者的身份等不同而具有不同的复杂度。学生基本信息维护、考试及成绩的管理与安排等操作是学生学籍管理系统的基本功能。在规模较大、业务较多的学生管理中还需要对用户进行权限设置、以及系统维护等更复杂的功能。
本项目将考虑学生学籍管理的四个模块:学生信息管理、学生成绩管理、考试管理、用户管理。分别对每个模块分化其能实现的功能,又将每个模块相互联系在一起,最终实现该系统。
1.2需求分析
知识爆炸的时代里,求学的人数越来越多,但学校的数量及学校所能提供的资源很有限。为优化管理学生的人力资源,设计了这个系统。
学生学籍管理系统,可用于学校等机构的学生学籍进行查询、更新与维护,使用方便、易用性强、图形界面清晰明了,让使用者能简单易懂的操作。通过这个系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。毋庸置疑,切实有效的把计算机管理引入学校教务管理中,对于促进学校管理制度提高学校教学质量与办学水平有着显著意义。
在计算机网络,数据库和先进的开发平台上,利用现有的软件、硬件资源,开发一个具有开放体系结构的,易扩充的,易维护的,具有良好人机交互界面的学生学籍管理系统。这个简单的学生信息管理系统将考虑学校学生处、教务处、管理员三种用户类型,为其分别提供不同的操作。
因此,需求分析阶段的最终结果是“需求分析说明书”,设计该系统将需要Java开发平台、数据库等工具。
1.3运行环境
操作系统:Windows 10
数据库系统:MySQL 5.7
编程语言:Java 9.0
开发工具:Eclipse 4.3
2,概要设计
2.1设计思路
学生学籍管理系统先将系统划分为四个模块,又将每个模块分成多个子模块,然后一一实现。将其划分是能够更好的理解各功能的实现以及组员分工。但各个模块又是相互联系、密不可分的。
划分模块后,思考数据库设计,联系各个模块设计所需要的表及表中所需的字段,考虑各表中的联系,并用MySQL实现数据库及各表的创建且录入一些信息方便操作测试。
将数据库设计好后,将eclipse连接数据库,并思考系统所需要的界面,根据系统模块的划分,用户使用是需要明确是以什么身份使用的,即实现一个界面中有三个按钮分别有学生处、教务处、管理员字样,点击学生处将调用学生信息管理的界面,该界面可直接根据学号查询学生信息,要进行信息的其他操作,则要经过该界面通过用户名和密码验证之后登录才能使用;点击教务处也根据同样的思路设计;管理员则直接进入登录界面。
通过登入界面之后将进入学生学籍系统的主界面,即该系统所有功能操作的界面。首先设计好这些界面,并找一些符和内容的图片放入界面中,让界面更加的美观,在稿纸上设计好各界面时候,就利用所学知识实现各界面。
完成前面所提到的界面之后将设计各个模块的子模块,并将其放入主界面中,编译运行然后一一测试各功能。
2.2模块功能介绍
2.2.1学生信息管理模块
学生信息管理模块主要是对学生信息如学号、姓名、性别、家庭住址等进行管理。本模块将实现以下功能:
◇学生信息录入 ◇学生信息查询 ◇学生信息修改/删除
◇将查询的学生信息实现另存文件
其中,学生信息查询不需登录即可使用,信息录入和修改/删除模块则需要先登录后才能使用;
2.2.2学生成绩管理模块
学生成绩管理模块主要是对学生成绩进行管理。本模块又分为五个子模块:
◇学生成绩录入 ◇学生成绩查询 ◇学生成绩修改/删除 ◇计算总分与排名 ◇目标分管理 ◇毕业管理
其中,学生成绩查询不需登录即可使用,其他模块则需要先登录后才能使用;且除了查询操作学生能访问之外其余学生都不能访问。
2.2.3考试管理模块
考试管理模块主要对考试进行如下管理:
◇添加新考试 ◇对已有的考试信息进行修改/删除 ◇对考试科目进行添加/删除 ◇对考试科目查询
本模块需要先登录后才能使用;其中除了查询功能学生可使用,其余功能都由教务处操作。
2.2.4用户管理模块
用户管理模块主要对使用本系统的用户进行如下管理:
◇添加新用户 ◇对已有的用户进行更改用户名、密码和权限(管理员或普通用户)等操作 ◇删除用户
本模块只有管理员才能使用,普通用户不能进入。
系统维护:如数据安全管理(含备份与恢复)、操作员管理、权限设置等。
权限:限定学生处、教务处、管理员所能访问的模块,即在用户登录时识别登入者的身份,给予相关能访问的权限。
2.3模块结构图
2.4程序流程图
2.4.1系统流程图
2.4.2细分流程图
3,详细设计
3.1数据库设计
根据所有的模块,设计了相关数据库student_management,其中信息管理与用户管理分别用到了以下七张表:
其表结构分别为:
3.2学生基本信息管理
根据模块的功能利用Java的GUI设计系统的界面,然后连接数据库,写相关的sql语句。
登录中,为了识别是学生登录定义了一个变量identify来记录,且在主界面的程序中借用setRights()方法来限制访问权限,用menu1.setEnabled(false);menu2.setEnabled(false);限定了学生不能基础维护、教务管理。学生的查询中调用写好的executeQuery()方法来连接数据库实现查询,借助数组Object[][] studentq来存储查询到的信息,然后在显示在JTable table里。其次,借助字符输出流FileWriter来将信息写入文件。
所有操作都是设计了相应的按钮,给按钮加监听器,在监听里完成各种任务,且用JOptionPane.showMessageDialog来提示操作中是否操作成功或操作失败,用SimpleDateFormat来限制输入出生日期的格式。对数据库操作select、insert into、update、delete分别实现查询、增、修、删操作。程序里写了clearAllTextfield()方法,起清空文本的作用,如在删除操作中,先将信息查询显示出来,删除后,调用该模块将会清空文本。
3.3用户管理模块
该模块涉及了数据库备份与恢复、权限设置、用户修改等,权限设置即设置不同访问者的访问权限,在主界面的程序中借用setRights()方法来限制访问权限。数据库备份与恢复用Runtime r = Runtime.getRuntime();来获得与当前应用程序关联的Runtime对象,Process p = r.exec(command);在单独的进程中执行指定的字符串命令。教务处跟管理员的用户增删改大致跟学生信息一致,只是把所有的操作都放在了同一个界面,即在同一个程序中完成所有操作。
4,调试分析
4.1登入界面共用
该学生学籍管理系统考虑学生处、教务处、管理员三种用户使用,三个用户访问的权限各有不同,要共用同一个登录界面,即在登录时要知道用户是以什么身份访问的。用户一开始是由界面的三个按钮进入登录界面,即在记录访问者身份时使用getscoure()未能实现。
解决办法:将监听的方式记录改为定义一个公共静态变量identify,即:public static String identify;在点击按钮调用另一个界面时,用该变量记录用户的身份,如:学生处,教务处,管理员。
4.2实现另存功能
在登录之后加了一个查询信息后将所查到的信息存入一个文件,且文件保存的位置由使用者自行决定。调试时,只能实现在指定路径创建一个文件,而未能将所查询的信息写入文件中。
解决办法:因所查的信息是存入一个数组的,即将问题转为如何将一个二维数组的信息写入文件,经过查阅资料所知在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。且文件要写入换行应调用write("\r\n");
5,测试与小结
5.1首界面
整个系统都是以首界面的运行运行,然后逐个程序相互关联、调用:
5.2学生处、教务处
点击后将分别进入学生信息管理界面、教务管理系统界面,不登录可查询信息、成绩,要进行其他操作则需登录:
5.3登入界面
学生处、教务处、管理员共用一个登入界面,且登录后进入同一个主界面,但访问权限是不相同的:
5.4.学生信息
学生信息的增删改查在主界面都有相应的实现菜单栏,且查询可以将查询到的信息存入文件,测试效果如下:
成绩管理模块、考试管理模块的相关操作都在同一个界面实现,如下
5.5成绩管理
该系统将成绩管理设为除学生处的权限,包括对成绩的添加、删除、修改。该操作进行了对数据库多个表的结合使用,在填写添加、修改或删除信息后,需查询数据中是否有该学生及该课程,若不存在,则操作失败。且系统将会提示用户操作失误的原因,如下:
如输入信息正确,则各操作的界面如下:
5.6考试管理
该系统将考试管理的划分类似于成绩管理的划分,将其归于教务处、管理员的权限,同样包括添加、删除、修改操作,而将成绩查询放在学生管理下。各操作界面如下:
5.7毕业管理
5.8用户管理
该界面只能由管理员操作,即对用户的管理及权限的设置:
5.9数据备份与恢复
该功能是根据MySQL数据备份与恢复的相关知识由Java实现:
6,程序清单
7,参考文献
[1] 志宏.计算机网络十二五规划教程[M]. 北京:航空工业出 版社,2008年2月
[2] 蔡翠平等.Java程序设计[M].北京: 清华大学出版社,2002.10
[3] 陈丹丹. Java学习手册[M]. 北京:电子工业出版社,2011年
[4] 陆昌辉. Java程序设计实用案例教程[M]. 北京:电子工业出 版社,2008年
[5] 张桂珠刘丽陈爱国Java面向对象程序设计北京邮电大学
[6] 毕广吉.Java程序设计实例编程[M].北京: 清华大学出版社
[7] 王保罗Java面向对象程序设计[M].北京: 清华大学出版
网友评论