学生成绩管理系统课程设计JAVA版.doc
《学生成绩管理系统课程设计JAVA版.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计JAVA版.doc(13页珍藏版)》请在冰点文库上搜索。
课程设计报告
课程设计名称:
学生成绩管理系统
系:
三系
学生姓名:
*****
班级:
计算机(3)班
学号:
************
成绩:
指导教师:
****
开课时间:
2010-2011学年2学期
一.设计题目
学生成绩管理系统
二.主要内容
学生成绩管理系统从功能上划分可分为以下几大模块:
1.学生信息管理
学生信息管理模块:
设置学生基本信息,并可以对学生信息进行添加、修改、删除。
2.课程信息管理
课程信息管理:
设置课程号,课程名,任课教师等课程信息,并可以对课程信息进行添 加、修改、删除。
3.学生成绩管理
成绩信息管理模块:
设置成绩信息,并可以对成绩信息进行添加、修改、删除。
还可以用关键字查询并调出数据库里的学生基本成绩信息的修改、删除等。
输出查询的 学生成绩信息,并对学生成绩总分,平均分等进行统计。
三.具体要求
1.具有良好的系统性能,友好的用户界面
2.较高的处理效率,便于使用和维护
3.采用成熟的技术开发,是系统具有较高的技术水平和较长的生命周期
4.系统尽可能简化重复工作,提高工作效率简化数据查询、降低统计难度
四.进度安排
序号
内容
时间(天)
1
调试工具使用
0.5
2
概要设计
1
3
详细设计
2
4
调试分析
0.5
5
测试结果
1
6
总结和完成设计报告
2
合计
7
五.成绩评定
正文
1、系统的需求分析和功能设计
需求分析:
该学生成绩管理系统的开发是为了能够让用户方便、快速的查找有关于一些学生的基本信息。
同时该学生成绩管理系统的建立也要要求能够节约用户时间和节约系统资源等。
该系统是由以下几部分组成:
系统管理、学生管理、课程管理、成绩管理和信息管理。
在系统管理功能中有退出功能;学生成绩管理功能中有增加学生、修改学生和删除学生;课程管理功能中有增加课程、修改课程和删除课程;成绩管理功能中成绩增加和成绩修改;信息管理功能中学生信息查询、课程信息查询和成绩查询。
在查询功能中还有一些子功能。
功能设计:
1.系统功能结构
学生成绩管理系统分为3大功能模块,分别为:
学生信息管理、课程管理、成绩管理。
系统各个部分及其包括的具体功能模块如图1所示。
学生成绩管理系统
学生信息管理
课程信息管理
成绩信息管理
信息查询
学生信息修改
学生信息删除
课程信息添加
课程信息修改
课程信息删除
成绩信息添加
成绩信息修改
成绩信息删除
学生信息查询
课程信息查询
成绩信息查询
按学号查询
按姓名查询
按性别查询
按专业查询
按班级查询
按课程名查询
按任课老师查询
按科目查询
图1系统功能结构图
2.数据库设计
(1)数据库概念结构设计
局部E-R图
①学生实体图:
共有6中属性,包括学号、姓名、性别、出生日期、专业、籍贯等6种属性,如图2所示。
学生
学号
姓名
籍贯
专业
性别
出生日期
图2学生实体图
②课程实体图,课程信息实体共有3种属性,包括课程号,课程名,任课教师等3种属性,如图3所示。
课程
课程号
任课教师
课程名
图3课程实体图
成绩信息
学号
考试成绩
课程名
③成绩实体图,成绩信息实体共有3种属性,包括学生学号,课程名称,平考试成绩,成绩信息实体图如图4所示。
图4成绩信息实体图
系统E-R图如图5所示
1
1
n
n
学生
学号
姓名
籍贯
专业
出生日期
性别
课程信息
选课
课程名
课程号
任课教师
成绩信息
课程名
学号
成绩
考试
(2)数据库逻辑结构设计
本系统采用ACCESS数据库,各数据表结构如下:
①学生信息表:
如表1所示
表1学生信息表
②课程信息表:
如表2所示
表2课程信息表
③成绩信息表:
如表3所示
表3成绩信息表
2、源程序及注释
12
(1)增加学生代码中主要代码如下:
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==clearInfo)//设置清空按钮功能
{sNum.setText("");
sBirth.setText("");
sMajor.setText("");
sHome.setText("");
sName.setText("");
}
elseif(e.getSource()==addInfo)//设置增加按钮功能
{Stringxh=sNum.getText();
Stringxm=sName.getText();
Stringxb;
if(xb1.isSelected())//判断所选人的性别
xb="男";
else
xb="女";
Stringcsrq=sBirth.getText();
Stringzy=sMajor.getText();
Stringjg=sHome.getText();
if(xh.equals(""))
JOptionPane.showMessageDialog(this,"学号不能为空!
!
!
!
","操作提",JOptionPane.ERROR_MESSAGE);//创建学号不能为空提示信息框
elseif(xm.equals(""))
JOptionPane.showMessageDialog(this,"姓名不能为空!
!
!
!
","操作提示",JOptionPane.ERROR_MESSAGE);//创建姓名不能为空提示信息框
try//用来捕获异常
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};DBQ=student.mdb"; //连接student数据库
Connectioncon=DriverManager.getConnection(url);//建立连接
Statementstm=con.createStatement();//创建Statement对象
//创建添加学生sql语句
Stringstr="insertintoxs(xh,xm,xb,csrq,zy,jg)values('"+xh+"','"+xm+"','"+xb+"','"+csrq+"','"+zy+"','"+jg+"')";
intrs=stm.executeUpdate(sqlstr);//更新数据库记录
if(rs>0)//判断记录是否添加
{JOptionPane.showMessageDialog(this,"恭喜你,学生信息添加成功!
!
!
!
!
","提示",JOptionPane.INFORMATION_MESSAGE);//创建信息添加成功提示框
}
con.close();//关闭结果集
stm.close();//关闭语句
}
catch(ExceptionE)//用来处理异常
{
}
}
}
publicstaticvoidmain(Stringarg[])//创建主函数
{newStuInfo();//调用StuInfo()方法
}
}
(2).修改学生代码中主要部分代码如下:
publicvoidactionPerformed(ActionEventae)
{if(ae.getSource()==btnClear)//设置取消按钮功能
{sNum.setText("");
sNum.requestFocus();
}
elseif(ae.getSource()==btnOk)//设置确定按钮功能
{Stringxh=sNum.getText();
if(xh.equals(""))
JOptionPane.showMessageDialog(this,"学号不能为空!
","警告",JOptionPane.ERROR_MESSAGE);创建提示信息框
else
{StuInfonewst=newStuInfo();
newst.sNum.setText(xh);
newst.sNum.setEnabled(false);//把学号文本框禁用
newst.addInfo.setEnabled(false);//把增加按钮设置为禁用
newst.modifyInfo.setEnabled(true);//把修改按钮设置为可用
newst.deleteInfo.setEnabled(false);//把删除按钮设置为禁用
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};DBQ=student.mdb"; //连接student数据库
Connectioncon=DriverManager.getConnection(url);//建立连接
Statementstm=con.createStatement();//创建Statement对象
Stringsql="select*fromxswherexh='"+xh+"'";//按学号查询学生表中所有数据
ResultSetrs=stm.executeQuery(sql);//执行sql操作
while(rs.next())//循环执行数据库中每条记录
{newst.sNum.setText(rs.getString("xh"));//获取xh字段
newst.sName.setText(rs.getString("xm"));//获取xm字段
if(rs.getString("xb").equals("男"))//获取xb字段,判断所选性别
newst.xb1.setSelected(true);
else
newst.xb2.setSelected(true);
newst.sMajor.setText(rs.getString("zy"));
newst.sHome.setText(rs.getString("jg"));
}
intn=stm.executeUpdate(sql);//执行sql更新命令
if(n>0)//判断是否修改数据库
JOptionPane.showMessageDialog(null,"成功修改一条新的纪录!
");
else
JOptionPane.showMessageDialog(null,"更新失败","错误",JOptionPane.ERROR_MESSAGE);
con.close();//关闭结果集
stm.close(); //关闭语句
}
catch(Exceptione)
{System.out.println(e); //输出信息
}
}
}
}
publicstaticvoidmain(String[]args)//创造主函数
{newxiugai();//调用xiugai()方法
}
}
(3).学生删除代码中主要部分代码:
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==button)//设置删除按钮
{
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};DBQ=student.mdb"; //连接student数据库
Connectionconn=DriverManager.getConnection(url);//建立连接
Statementstmt=conn.createStatement();//创建Statement对象
Stringsqlstr="deletefromxswherexh='"+sHome.getText()+"'";//创建删除从xs表中删除语句
intresult=stmt.executeUpdate(sqlstr);//执行更新命令
if(result>0)//判断是否删除
{JOptionPane.showMessageDialog(this,"学生删除成功!
","提示",JOptionPane.INFORMATION_MESSAGE);
}
conn.close();//关闭结果集
stmt.close();//关闭语句
}
catch(ExceptionE)
{
}
}
}
publicstaticvoidmain(Stringarg[])//创建主函数
{newscstudent();//调用scstudent()方法
}
}
3、运行示例及结果分析
(1).主界面
结果分析:
该界面是学生成绩管理系统的主界面,从这界面可以看出有几个功能系统。
(2).添加界面
结果分析:
在学生信息中输入相应的信息后按增加按钮就会出现恭喜你,学生信息添加成功。
如果在输入信息时,没有输入相应的学号和姓名,则会出现相应的提示框提示学号和姓名不能为空。
(3).修改界面
结果分析:
在信息框中输入课程号,按确定按钮则会跳出相应的课程信息框,如果数据库中有这一课程号,则会把相应的信息显示出来,否则只会显示课程号。
(4).删除界面
结果分析:
在信息框中输入要删除的学生学号按确定按钮,如果所输入的学号在数据库中存在,则会跳出学生删除成功提示框,否则按确定按钮无效。
(5).查询界面
结果分析:
此结果会从所有的显示数据中被提取出来,并不是只显示查询结果。
4、调试和运行程序过程中产生的问题及采取的措施
(1).在调试程序时在定义公共类是出现问题,导致错误的原因是类名和java文件名不同,只要public去掉或把java文件名修改成与类名一致。
(2).在调试课程增加程序时,调试结果没有显示错误,但在运行时增加功能没有实现,导致错误的原因可能是数据库问题,查找数据库代码和数据库中相应的表发现课程表中没有xm这一字段,代码中出现了,删除这一字段即可。
(3).在调试主函数代码时会出现一些找不到符号的问题,有可能时你调用的子函数不在同一个文件下,也有可能是你调用的子函数不存在,还有可能是子函数没有调试和运行。
要想解决问题只要把相应的java文件放在同一个文件下或创建相应的子函数还可以把那些子函数调试和运行一边,再调试主函数即可。
(4).在调试和运行后界面中出现的文字不全和文本框大小与窗体大小不搭调,导致的原因是标签和文本框大小没有设置好。
只要重新设置一下大小即可。
5、对系统相关功能的讨论、分析,改进设想
该学生成绩管理系统的建立主要分为系统管理、学生管理、课程管理、成绩管理和信息管理。
在这几个系统功能中有些功能的实现是运用继承JFrame类和实现监听器ActionListener来实现的。
为了更好的实现功能可以创建构造函数来实现初始化。
同时也可以创造方法通过方法调用来实现相应的功能。
为了进一步完善学生成绩管理系统可以有以下改进设想:
1).在信息查询系统功能中增加补考信息查询菜单项,再补考信息查询菜单中设置补考学生信息查询和成绩及格学生信息查询子菜单项。
在补考学生信息查询中添加补考是否通过信息查询。
2).在信息查询系统功能中添加按学期查询,在这个查询中把学生这一学期的所有信息都显示在界面上。
3).在主界面中增加获奖信息系统功能项,在这中添加获奖信息,修改获奖信息,删除获奖信息和获奖信息查询。
在获奖信息查询中添加按等级查询和按竞赛查询。
在按等级查询中只要等级名后按查询按钮就会显示此等级是否通过等这样的信息;在按竞赛查询中输入竞赛名,则会弹出你有没有参加此竞赛框,如有则按确定按钮,则会显示出此同学获讲情况。
4).在主界面中添加评价信息系统功能项,此功能主要是为了实现一些人对学生的评价。
在这项中分别添加辅导员评价、任课教师评价和同学评价。
在辅导员评价中只要输入学生的学号按确定按钮就会跳出相应的评价信息;在任课教师评价中输入学生学号后按确定按钮,则会跳出要你输入课程名信息框,输入课程名后,在按确定按钮则会跳出课程名和任课教师名点击查询则会显示出相应的信息;在同学评价中只要输入学生学号即可。
6、总结
这次的课程设计任务是开发学生成绩管理系统,在开发的过程中可以看出自己对java知识学到的很少,这次的课程设计能够让我学到很多java知识,同时也有利于期末考试。
因为该系统的建立几乎用到了java这学期所学的所有知识。
这等于让我复习了一边java知识。
在创建学生成绩管理系统时,要想把界面布局好看些首先要会设置标签和文本框大小位置,在设置这时用setBounds(),在这括号中有四个数字分别表示垂直、水平、长度和高度。
同时为了防止误操作一些按钮和文本框可以利用setEnabled(false)来把按钮和文本框禁用。
要想使该学生成绩管理系统实现添加、修改、删除和查询功能时就必须与数据库连接起来。
用以下代码实现数据库的连接:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl=”jdbc:
odbc:
drive={MicrosoftAccessDriver(*.mdb)};
DBQ=student.mdb";Connectionconn=DriverManager.getConnection(url);Statementstmt=
conn.createStatement();
在设计修改功能时首先要利用查询语句把查询出来的结果获取出来显示在文本框中,然后再利用SQL的修改语句对相应的信息做出修改,在修改后数据库中的数据要做出相应的更新来保证数据的正确。
可以用executeUpdate(sqlstr)来执行。
在设置性别这一项是可利用单选按钮来实现。
同时还要和ButtonGroup一起使用才能实现相应的功能。
在对事件处理时可用ActionListener监听器和actionPerformed方法实现。
用代码实现一定的功能时会发生一定的异常,这就要用try{}catch{}来处理。
使用这一语句时要知道try只能有一个而catch可以有多个,finally和catch可以同时出现,但finally和catch至少要出现一个,并且不管异常是否会发生,finally语句块都会执行。
在这次的课程设计中我懂得了要想作出好的系统光靠书本上的那些知识是万万不够的,要不断的看系统开发之类的书和自己动手实践才能够学到相应的知识。
同时一个人学习是孤学而无有,相互学习才是最有效的。
7、参考文献
[1].张亦挥冯华胡洁Java面向对象程序设计人名邮电出版社2010年9月
[2].黄小东Java课程设计按例精编中国水利水电出版社2004年5月
[3].陆正武Java项目开发实践(第2版)中国铁道出版社2005年7月
[4].张广彬孟红蕊张永宝Java课程设计按例精编清华大学出版社2007年1月