学生成绩管理系统Word格式文档下载.docx
《学生成绩管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
3.采用成熟的技术开发,是系统具有较高的技术水平和较长的生命周期
4.系统尽可能简化重复工作,提高工作效率简化数据查询、降低统计难度
四.进度安排
序号
内容
时间(天)
1
调试工具使用
0.5
2
概要设计
3
详细设计
4
调试分析
5
测试结果
6
总结和完成设计报告
合计
7
五.成绩评定
正文
1、系统的需求分析和功能设计
需求分析:
通过调研目前教学管理系统中的成绩管理子系统,了解成绩管理子系统的业务流程;
通过分析比较,结合用户对成绩管理子系统的改进意见与实现情况,运用JAVA设计和实现一个简易的学生成绩管理子系统,以提高学生信息、课程、成绩管理的自动化、友好性等。
本系统基于JAVASE平台和ACCESS数据库,通过课程设计,可以使学生对JAVA开发管理信息系统有一个全面的了解。
学生成绩管理系统应具有以下要求:
1.具有良好的系统性能,友好的用户界面
2.较高的处理效率,便于使用和维护
3.采用成熟的技术开发,是系统具有较高的技术水平和较长的生命周期
4.系统尽可能简化重复工作,提高工作效率
5.简化数据查询、降低统计难度
功能分析:
学生成绩管理系统分为3大功能模块,分别为:
学生信息管理、课程管理、成绩管理。
系统各个部分及其包括的具体功能模块如图1所示。
1.学生信息管理
数据库设计:
1.数据库概念结构设计
①学生实体图,有学号、姓名、性别、出生日期、专业、籍贯等6种属性,如图2所示。
图2学生实体图
②课程实体图,课程信息实体共有3种属性,包括课程号,课程名,任课教师等3种属性,如图3所示。
图3课程实体图
③成绩实体图,成绩信息实体共有3种属性,包括学生编号,课程名称,平考试成绩,成绩信息实体图如图所示。
图4成绩实体图
系统E-R图如图5所示
图5系统E-R图
2.课程信息管理
课程信息管理:
3.学生成绩管理
还可以用关键字查询并调出数据库里的学生基本成绩信息的修改、删除等。
2、源程序及注释
1.学生信息管理模块:
(1)学生信息的添加、修改、与删除(部分):
if(e.getSource()==itemExit)//退出
{
System.exit(0);
}
if(e.getSource()==itemAddS)//增加学生
StuInfostu=newStuInfo();
stu.modifyInfo.setEnabled(false);
stu.deleteInfo.setEnabled(false);
if(e.getSource()==itemEditS)//修改学生
{
Stringxh=JOptionPane.showInputDialog(this,"
请输入要修改的学生的学号"
"
修改学生信息"
JOptionPane.PLAIN_MESSAGE);
StuInfostu=newStuInfo();
stu.sNum.setText(xh);
stu.sNum.setEnabled(false);
stu.addInfo.setEnabled(false);
stu.clearInfo.setEnabled(false);
stu.deleteInfo.setEnabled(false);
stu.select(xh);
if(e.getSource()==itemDeleteS)//删除学生
请输入要删除的学生的学号"
删除学生信息"
StuInfostu=newStuInfo();
stu.addInfo.setEnabled(false);
stu.select(xh);
}
(2).数据库中学生信息的录入、获取与删除(部分)
try
{
Class.forName("
sun.jdbc.odbc.JdbcOdbcDriver"
);
Stringurl="
jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};
DBQ=student.mdb"
;
Connectionconn=DriverManager.getConnection(url);
Statementstmt=conn.createStatement();
Stringsql="
select*fromxswherexh='
"
+xh+"
'
ResultSetrs=stmt.executeQuery(sql);
if(rs.next())
{
sNum.setText(rs.getString("
xh"
));
sNum.setEnabled(false);
sName.setText(rs.getString("
xm"
if(rs.getString("
xb"
).equals("
男"
))//判断获取性别字段时输出的"
或"
女"
xb1.setSelected(true);
else
xb2.setSelected(true);
sBirth.setText(rs.getString("
csrq"
sMajor.setText(rs.getString("
zy"
sHome.setText(rs.getString("
jg"
}
stmt.close();
conn.close();
}
catch(Exceptione)
}
(3).数据库中课程分数的录入、查询与删除(部分)
select*fromcjwherexh='
andkcm='
+kcm+"
gGrade.setText(rs.getString("
cj"
else
JOptionPane.showMessageDialog(this,"
此学生不存在或此学生无此门课成绩,请重新录入学号和课程名"
添加成绩信息"
JOptionPane.INFORMATION_MESSAGE);
(4).课程信息的管理
if(e.getSource()==addInfo)//增加按钮触发的事件
shezhi();
booleann=true;
if(kch.equals("
)||kcm.equals("
))
JOptionPane.showMessageDialog(this,"
课程号和课程名不能为空"
添加课程信息"
try
Class.forName("
Stringsql1="
selectkchfromkc"
ResultSetrs=stmt.executeQuery(sql1);
while(rs.next())
{
if(rs.getString("
kch"
).equals(kch))
{
JOptionPane.showMessageDialog(this,"
此课程已经存在,请重新录入课程号"
n=false;
break;
}
}
if(n)
Stringsql2="
insertintokc(kch,kcm,rkjs)values('
+kch+"
'
+rkjs+"
)"
intres=stmt.executeUpdate(sql2);
if(res>
0)
课程信息添加成功"
}
stmt.close();
conn.close();
catch(ExceptionE)
(5).成绩信息的管理
if(e.getSource()==bt)
{
Stringxh=tf1.getText();
try
Stringsql1="
ResultSetrs=stmt.executeQuery(sql1);
list=newArrayList();
kcmycj=newkc();
mycj.xh=rs.getString("
mycj.kcm=rs.getString("
kcm"
mycj.cj=rs.getString("
list.add(mycj);
results=newObject[list.size()][columnNames.length];
for(inti=0;
i<
list.size();
i++)
kcn=(kc)list.get(i);
results[i][0]=n.xh;
results[i][1]=n.kcm;
results[i][2]=n.cj;
JTabletable=newJTable(results,columnNames);
JScrollPanejsp=newJScrollPane(table);
pane2=newJPanel();
pane2.add(jsp);
this.add(pane2,BorderLayout.CENTER);
this.validate();
conn.close();
stmt.close();
catch(Exceptionf)
3、运行示例及结果分析
(1)主界面
(2)菜单模块
图2菜单
(3)添加学生信息模块示例:
结果分析:
点击增加按钮即可将数据添加数据库,点击清空按钮即可清空屏幕上的所有数据
(4)删除学生信息模块:
点击确定按钮将提示该学生是否存在对话框,如果存在进入下面对话框。
点击取消将此文本框内的内容清空。
(5)添加课程信息模块:
点击添加模块将数据填入数据库,在增加按钮中增加判断该学生是否存在的代码
(6)成绩查询模块:
4、调试和运行程序过程中产生的问题及采取的措施
(1)产生的问题:
对学生性别的选择:
不能实现将选择的性别录入数据库:
采取措施:
采用RadioButton的isSelected的属性进行选择
具体实现:
if(xb1.isSelected())//xb1为性别的对象
xb=xb1.getText();
else
xb=xb2.getText();
(2)产生的问题:
在增加学生信息之前,需要先判断该学生是否存在,不能实现此功能:
采取措施:
采用先查询数据里有无此学生,若有弹出对话框进行提示,若无则向该数据中添加此学生信息。
具体实现:
try
conn=DriverManager.getConnection(url);
stmt=conn.createStatement();
selectxhfromxs"
).equals(xh))
此学生已经存在,请重新录入学号!
添加学生信息"
Stringsql2="
insertintoxs(xh,xm,xb,csrq,zy,jg)values('
+xm+"
+xb+"
+csrq+"
+zy+"
+jg+"
学生信息添加成功"
5、对系统相关功能的讨论、分析,改进设想
虽然学生成绩管理系统的课程设计做完了,但是系统的功能有很多不足之处,有很多需要改进的地方。
需要改进的地方有以下几点:
1.课程信息修改模块:
再点击修改按钮后,提示修改成功,可是还是能对课程表中的信息,
进行修改。
改进设想:
在修改模块中当点击完“修改成功提示框的确定按钮”后,为每个文本框添加setEnable属性,使之其文本框内的属性不能改变,这样当提示修改成功后文本框内的内容就不能再被改变了。
2.在查询成绩模块只能实现简单的按学生成绩查询,不能实现按学生信息查询,按学生课
程信息查询。
这样的查询过于简单,不能实现复合查询。
改进设想:
添加相应的代码,使之实现可以按学生的课程信息查询。
按学生信息查询的功能。
3.在成绩查询模块中,显示出来的只是学号、课程和成绩三个字段!
显示效果不明显!
改进思想:
通过对表中添加列,然后再代码中重新从数据库中获取,便可以实现!
4.在成绩查询模块,可以通过单击此学生信息,将其显示在下方对应的文本框中。
通过添加MouseListener监听器,来实现相应的方法
6、总结
通过这次的课程设计让我对于Java的部分知识有了一定的认识和提高,例如关于和数据库的连接,关于sql语句和对于一些事件的处理。
而且通过此次课程设计提高了自己的动手能力和独立完成作业的能力,在此课程设计中,我知道了该如何用JAVA来开发一个系统,及其相关的事件处理,和相应的页面布局。
在此课程设计中,本来可以做的更好,但因为能力有限,所以仍存在一些尚未实现的功能,有待改进。
再次期间,我充分的利用了网上的资源、图书馆的资源,一旦有困难,我首先想到的是自己如何做,如果觉得困难太大,就请教身边的同学和老师。
本次课程设计中,我发现了很多不足之处,在做程序的过程中对基本数据库的连接都是很模糊的在数据的连接部分对SQL语句的认识不是很深。
尤其是做修改页面的时候对数据的提取,如何将提取出来的数据放到文本框中。
然后将修改后的信息在重新放到数据库中。
对这个操作存在着一些问题。
不知到该怎么下手对数据库进行中的数据进行修改,还有在运行的过程中还用到调用添加学生信息的类,对它进行调用。
在查询的界面开始按学号的查询没有想到一个学生可以选多门科目。
只是单纯的想将数据查询出来。
在此处也想过利用表格对学生的信息进行查询。
但是表格的实现很难。
通过上网查询对表格的进行简单的操作,但是仍然在数据的连接方面出现了错误。
最后在老师的精心指导下我终于做了出来。
通过一次课程设计,我了解到自己的不足,在日后的学习中我回努力的克服自己的不足之处。
使自己的学习得到进一步的提高。
7、参考文献
[1]张亦辉、冯华、胡杰.Java面向对象程序设计.人民邮电出版社,2010年9月
[2]张广彬、孟红蕊.Java课程设计案例精编.清华大学出版社,2007年1月
[3]黄晓东.Java课程设计案例精编.中国水利水电出版社,2004年1月
[4]黄明、梁旭、周绍斌.Java课程设计.电子工业出版社,2006年6月
[5]吴仁群.Java基础教程.清华大学出版社,2009年4月