基于Java实现的班级信息管理系统

实验目的

本次完成一个班级信息管理系统。

本系统主要由两大界面组成(登陆界面和主界面)。我们通过主界面可以进入本系统的三大模块:处理记录模块、查询记录模块和重置密码模块。

该大作业给出了一个 Access 文件 student.mdb。该文件和实验十二给出的数据库文件相比多了一张表:security,登陆的用户名和密码放在该表中,因此需要导入新表。大作业可采用 MySQL,Oracle,或者 SQL Server 中的任意一种数据库管理系统。

实验结果或结论

运行 main 文件 运行本程序(唯一入口)

登陆页面 :只有输入正确的用户账号,密码才能登陆。

主界面,显示所有模块 和 菜单栏 和 右侧注意事项。

菜单:统计 统计各门课程最低分,最高分,平均分,学生总人数。所有的数据库操作方法,我都放在 opreation 这个文件中了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcG96uER-1654591080526)(https://www.writebug.com/myres/static/uploads/2022/6/7/418963fd504b24939fcca8724992317b.writebug)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q4TClvCf-1654591080527)(https://www.writebug.com/myres/static/uploads/2022/6/7/a30badd23f454dda2b2249f7bd6e4f18.writebug)]

菜单:系统外观,设置系统的外观。

菜单:文件导入导出 开启文件对话框,显示文件,用线程控制进度条想。读取文件信息且导入到 studentInfo 中。

(导入文件到数据库,测试的 txt 我放在项目根目录下了,数据库导出的那个格式不支持)

(文件导出模块)

菜单 退出系统 关闭应用程序。

这个就不截图了。直接调用 System.eixt(0)退出了。

处理记录模块:点击表格的内容 在下面的文本框显示。

(给表增加鼠标时间,获取点击的行数,如果合法,获取表中的数据更新到下方的 TextField 中)

8:处理记录模块:添加字段,先往数据库添加,如果返回是 1,,则增加表格内容,若为 0,则提示新增失败。

9: 处理记录模块:删除字段,这里我的数据库主键是学号,因此如果创建多个相同学号的信息,再删除就会多个删除。所以需要注意一下。先从数据库里删除,如果返回是 1,,则删除表格内容,若为 0,则提示删除失败。

处理记录模块: 修改字段,这里同上面一样,以学号来查询的。、

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SmN56GV-1654591080530)(https://www.writebug.com/myres/static/uploads/2022/6/7/4c48c80bf5f61ea68397c91508f6cb55.writebug)]

处理记录模块: 这里的学号我使用了正则 7-15 位的全数字,成绩是 0 到 100,性别只有 male,female,名字长度有限制。所有都不可为空

查询记录模块: 查询条件是 SQL 语句,做了限制只有 select 语句可以被执行。其他提示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItvdYsbz-1654591080530)(https://www.writebug.com/myres/static/uploads/2022/6/7/eeb326c842eff78ed4cbd91e1571109e.writebug)]

查询记录模块: 表格根据查询到的数据 实时更新。

查询记录模块: 布局合理性 ,可拉伸 ,没问题。

:重置密码模块: 首先在登陆的时候,将账号密码放在了公共的 main 的全局变量中,比较原密码是否相同,然后比较新密码是否相同,如果不同都会提示。然后根据用户名,更新账号密码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4C6Iz8R-1654591080531)(https://www.writebug.com/myres/static/uploads/2022/6/7/bf4abb190c890a9532fa9b3205cae62f.writebug)]

:模块拉伸:主布局均使用边界布局,拉伸没问题。

遇到的问题及解决方法(这部分内容必须填写,也可以写体会,心得)

Joptionpanel 属性:info 0:error 2:warning 3:question

在设计 中间表格布局的时候,一开始没想到拿什么去实现。本来想的是用 JList 然后设置很多 list,后来找到了 JTabel。

同上, 在操作 panel 中,受到了思维定式的影响,就一直想要用边界布局,后来发现用流布局能更好的实现。

同上,设置表格的时候,发现一直设置不了表格的长宽 有限制,一开始我以为是 center 就那么大,后来改用流动布局了也还是这样。最后找到问题是设置 scrollpane 居然 有个默认的长宽,得设置它的长宽才可以。(这些都是上课前写的 所以遇到了些问题)

addrow 出现问题 原因是 创建 JTable 的时候 一开始找的教程有误,没有先转换为 DefaultTableModel,再创建 JTable

登录 后来发现 密码样式 不对 更改为了 Jpassword,重置密码模块也使用了这个。

使用了这个以后,getText()方法就被编译器报错,用 getPassword 方法的话是获得的是 char 数据,我就没理他,继续用 getText()

编译器报错 //state==1?return true:return false; ?:运算符不能用吗。这里还没去查阅资料

这里没有加过 唯一的主键 所以我们使用 stdId 作为主键,也就是学号。

8:这个是问题一直查不出来,一直报错,然后看书也没找到,后来我去数据库查询了下 SQL 没问题,最后把报错信息查询了下终于找到了,使用 res.getInt()之前 要先调用 res.next()

String sqlCountStundentNum = "select count(*) as studentNum from studentinfo";
try {
    res = statement.executeQuery(sqlCountStundentNum);
    res.next();
//System.out.print(res);
    System.out.print(res.getInt("studentNum"));
} catch (SQLException e) {
    printStackTrace();
}
res.getInt("studentNum")

第一个逻辑上说还是不错的项目,我写的也满用心,前前后后写了 3 4 个晚上,基本完善了所有的输入输出校验,当然查询方法是 SQL 语句,有点紧张,这个用户不太会吧,只是对是否 select 语句进行了校验,然后数据库的查询什么的还是不太了解。这边可能出现一些错误。在极端条件下。

每次点击查询的时候清空数据,后面的是原来的方法,有错误,发现原因是 result.getRowCount()是动态更新的。改为第一种就好了。

在导入文件的时候 原来的文件是用 navicat 导出的文件,然后读取一直报错,后来发现他的格式有点不同。是一个 tab 这样的,读取有问题,我就自己写了个 txt 进行读取。
12.进度条的进度的显示 我先获取文件的长度,然后更新实时的读取百分比更新。 然而因为文件大小的原因,读取会在一瞬间完成,一次很难看到效果。

在实现 SQL 数据查找的时候,之前使用的方法过为复杂,看了老师的回复后,使用了 ResultMetaData 来实现,方便快速的多。
2.进度条的进度的显示 我先获取文件的长度,然后更新实时的读取百分比更新。 然而因为文件大小的原因,读取会在一瞬间完成,一次很难看到效果。

在实现 SQL 数据查找的时候,之前使用的方法过为复杂,看了老师的回复后,使用了 ResultMetaData 来实现,方便快速的多。

猜你喜欢

转载自blog.csdn.net/newlw/article/details/125168358