学生成绩管理系统综合实验报告7727.pdf
-.z.Java 高级编程课程报告 学生成绩管理系统 小组成员及分工*角色 负责功能 组长 设计与编码 测试 王纲伟 是 是 是 增加学生、删改查学生、存取数据 彭坤 否 是 是 登录用户、修改密码*建锐 否 是 是 删除学生、查找学生、修改学生 一、实验环境 操作系统:Windows7 编程环境:Eclipse 二、实验内容与完成情况 1.登录用户(1)登录用户:有 3 种不同的方式登录,管理员登录、教师登录和学生。每个用户都有自己的账号和密码,通过输入账号和密码来登录,输入账号和密码后会检查是否合理,即账号只能由数学组成,密码只能数字和字母组成,否则会提示错误登录不成功;然后再查找数据库,如果找到匹配的账号和密码,就登录成功,否则登录不成功。登录成功后会添加相应的功能,管理员可以增删改查学生,教师可以修改和查找学生,学生只能查找学生。(2)流程图:是 否 否 查找管理员数据库 输入账号和密码 登录方式是否为管理员?登录方式是否为教师?-.z.是 否 是(3)代码:String s1=te*tField.getTe*t();String s2=passwordField.getTe*t();StudentDao dao=new StudentDao();boolean result=false;if(radioButton.isSelected()=true)/管理员登录 result=dao.seachadministrators(s1,s2);if(result)/登录成功 menuEdit.removeAll();menuEdit.add(AddItem);menuEdit.add(SDEItem);else if(radioButton_1.isSelected()=true)/教师登录 result=dao.seachteacher(s1,s2);if(result)/登录成功 menuEdit.removeAll();SDEItem.setTe*t(改查学生);menuEdit.add(SDEItem);else if(radioButton_2.isSelected()=true)/学生登录 result=dao.seachstudent(s1,s2);if(result)/登录成功 menuEdit.removeAll();-.z.SDEItem.setTe*t(查找学生);menuEdit.add(SDEItem);2.增加学生(1)增加学生:输入学生*、*、性别、班别、成绩等信息,判断输入的信息是否为空,如果为空提示错误如*为空,就提示*不能为空,其他的一样,增加学生失败。如果不为空判断*和成绩是否合理,如果不合理就提示错误如*中含有字母和其他不是数字的字符,就提示*只能由数字组成。如果合理,则把学生信息封装成学生对象,再通过学生对象把学生信息添加到学生数据库里。(2)流程图 是 否 是 (3)代码 3.修改学生(1)修改学生:输入*,查找数据库,如果存在该*的学生,就输出该学生的*、*、性别、班别与成绩等信息,并可以进展修改,保存修改时会判断你修改的信息是否为空,是否合理如*不能修改,成绩只能 0100 的正整数,将学生对象里的信息储存到学生数据库 提示错误,增加学生失败 输入学生*、*等信息*、*等信息是否为空?*、*等信息是否合理?将学生信息封装到学生对象 增加学生成功 提示错误,增加学生失败-.z.是的话就修改成功,否的话就修改不成功,并会弹出提示。(2)流程图 否 是 是 否 否 是(3)代码:4.删除学生(1)删除学生:输入*,查找数据库,如果存在该*的学生,就输出该学生的*、*、性别、班别与成绩等信息,不存在就提示该学生不存在!然后确认是否删除该学生。(2)流程图 否 是(3)代码 5.查找学生(1)查找学生:输入*,查找数据库,如果存在该*的学生,就输出该学生的*、*、性别、班别与成绩等信息,不存在就提示该学生不存在!(2)流程图 否 是(3)代码 6.删改查学生(1)删改查学生:用户可以通过输入*、*、班别和性别来查询学生成绩,如输入电子 1 班可以查询电子 1 班所有学生的信息*、*、班别、性别和各科成绩,并把这些学生信息显示在表格上,每一行显示一个学生的信息。用户可以修改表格的*一行,或删除表格的*一行,来实现修改学生和删除学生。输入*数据库里否找到该*?输出该学生的*、*等信息 提示:该学生不存在!修改成功 输入*数据库里否找到该*?输出该学生的*、*等信息 修改该学生的信息 学生信息是否为空?学生信息是否合理?提示:该学生不存在!提示:信息不能为空 提示:不能修改*,或成绩只能是 0100 的正整数 在数据库里找到该学生,并修改。删除成功 在数据库里找到该学生,并删除。输入*数据库里否找到该*?输出该学生的*、*等信息 提示:该学生不存在!-.z.(2)流程图 1 1或2 2 否 是 否 是(3)代码 查找并显示在表格:修改:删除:7.修改密码(1)修改密码:输入一次旧密码,输入两次新密码,判断密码是否为空,为空就弹出提示信息“密码不能为空,否则查找数据库,检查旧密码是否正确,不正确就弹出提示“旧密码错误!,否则就判断新密码的组成,如果密码由数字和字母以外的字符组成,就弹出提示“密码只能由数字和字母组成!,否则就将旧密码替换成新密码,保存到数据库里。(2)流程图 否 否 否 是 否 是(3)代码 8.存取数据(1)存取数据:先创立Document 的对象 document,然后通过 document 来*ml 文档,并对其进展增删改查操作,最后把 document 保存到*ml 文档里。输入查询条件*、*、性别和班别 查找数据库,找到符合查询条件的所有学生 将学生的信息显示在表格上 删除表格的*一行即删除学生。从数据库里删除该学生 删除成功 修改成功 修改表格的*一行即学生信息。提示:信息*、性别、*、班别和成绩不能为空!学生信息是否为空?学生信息是否合理?提示:不能修改*,或成绩只能是 0100 的正整数 在数据里找到该学生,并修改。输入一次旧密码,两次新密码。密码是否为空?两新密码是否一致?旧密码替换成新密码,并保存到数据库 提示:密码不能为空 提示:两次密码不一致 旧密码是否正确?提示:旧密码错误!-.z.(2)流程图 (3)功能 2 代码 把 student.*ml 文档里所有学生及信息读取出来,保存到List.删除学生 修改学生 增加学生 查找学生 保存学生密码 保存管理员密码 查找管理员密码 保存教师密码 查找教师密码 三、功能测试 增加学生:如果我不小心点击了两次增加学生的按扭,就出现两个一模一样的学生如以下图,解决方法:增加学生之前,先判断是否存在该学生,如果不存在,就增加;存在,就修改。修改学生:如果我修改了学生的班别如电子 2 班,改为电子 1 班,就出现电子 2班有该学生,电子 1 班也有如以下图,解决方法:在修改学生之前,先判断该学生的班别跟原来的班别是否一致,如果一致,就修改;不一致,就先把原来的学生删除,然后保存,最后增加该学生。表格的建立:本来想创立一个 7 列的表格,但实际创立了一个 8 列的表格如以下图b,多出了一列。原因:创立一行的时候,就已经创立了一列,目标的列数应该要比实际的列数少一列。解决方法:如以下图a,把i 7 改为 i6。(a)创立 Document 的对象document document*ml 文档,并对其进展增删改查。document 保存到*ml 文档-.z.b 查找学生:如果我第一次查找学生的结果正确,第二次再查出现错误如以下图,原因是第一次查询的结果没有被清掉,导致下次查找时出现错误。解决方法:再每次查找学生之前,先把表格清理即上一次查询的结果清理,然后进展查找学生。清一表格代码如下:出现错误图:登录用户:登录教师用户时,总是提示密码错误,但查看数据库时,发现密码并没有错误。原因:原来在读取教师账号密码时,创立了错误的 Document 对象,创立的是管理员账号密码文档的对象。解决方法:把 Document 的对象改为教师账号密码的对象。现象:原因:解决方法:将*mlUtils.getadministrators()改为*mlUtils.getteacher()。四、工程总结 成员 1(王纲伟):(1)增加学生:在保存学生成绩之前需要判断输入的成绩是否正确成绩只能是0100 的正整数,因为我们输入的成绩是以字符串形式保存的,所以要先把字符串转换成浮点型。但这就遇到了一个问题,如果我不小心输入了一个错误的成绩,即成绩里含有非数字的字符组成时,在字符串转换成浮点型后就会出现错误。因此,要先判断成绩的组成,如果成绩里含有其他非数字的字符组成时,应该提示错误并不进展字符串转换成浮点型。否则就将字符串转换成浮点型,然后再对浮点型的数据进展判断,是否是 0100 的正整数。-.z.(2)学生信息的显示:把数据库里所有学生信息都显示在表格上,要怎么做?先从数据库里读取第一个学生信息,然后把读取出来的学生信息显示在表格上,再从数据库里读取第二个学生信息,然后显示在表格上,如此循环。如果数据库里有上万个学生的信息,就要读取上万次数据。所以不用这种方法。先把数据库里读取所有学生信息并保存到List(学生列表)里,然后再用循环语句把List(学生列表)里所有学生信息显示在表格上。这种方法可用。成员 2(彭坤):(1)登录用户:要怎么做才能实现 3 种不同登录方式管理员、教师和学生,用3 个按扭,分别是管理员登录、教师登录和学生登录,点击哪个登录按扭就登录相应用户;这方法比较简单但界面不好看不灵活。用 3 个单项选择按扭,分别是管理员、教师和学生,设置 3 个单项选择按扭的独立性即只要有一个被选,另外两个就不能被选,哪个单项选择按扭被选中,点击登录时就登录相应的用户;这方法比上一种复杂,但直观并灵活。成员 3(*建锐):(1)修改学生:在修改学生时,把*也修改了,结果出现了一些错误。修改学生的*时,如果我把当前学生的*修改成了别的学生的*,那就相当于修改了别的学生信息,而不是我想要改学生的信息,因为在保存修改学生信息时,是通过判断当前要修改学生的*是否与数据库里学生的*相等,如果相等就修改数据库该学生的信息。所以把*修改了,就出现了问题,要修改的学生信息没有改,却修改了别的学生的信息。因此,学生的*应该是唯一的,即*不能被修改。否则提示错误。