java学生成绩管理系统.docx
《java学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《java学生成绩管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
java学生成绩管理系统
洛阳理工学院
课程设计报告
课程名称面向对象程序设计课程设计
设计题目学生成绩管理系统
专业计算机科学与技术
班级
学号
姓名
完成日期2018.1.5
课程设计任务书
设计题目:
学生成绩管理系统
设计内容与要求:
1.问题描述
建立学生成绩数管理系统,数据信息文本文件存储,也可以采用数据库存储。
2.基本要求
学生信息按照行政班级组织;
提供学生成绩的查询功能,输入学生的学号或姓名,能查找出该生各学期各门课程的成绩。
能对成绩数据进行添加、删除、修改等基本操作,并能进行一般的统计计算(如计算学生的总分和平均分,课程的平均分等)
其它辅助管理功能,如统计具有各等级奖学金资格的人数。
用户权限控制,一般用户只能查询,管理员用户可以修改数据库的内容。
指导教师:
2017年12月1日
课程设计评语
成绩:
指导教师:
年月日
目 录
第1章需求分析
1.1功能需求
立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统。
学生成绩管理系统是一种基于集中统一规划的数据库数据管理新模式。
在对学生成绩的管理,其实是对学生成绩数据的管理。
在该系统之中,全面记录学生信息、课程信息以及学生成绩信息,管理人员可以管理学生信息、课程信息、学生成绩信息以及注销等;还可以查询学生信息、课程信息以及学生成绩信息等。
当然还可以对成绩情况给出一些统计,计算不及格人数
学生成绩管理系统需要实现的功能主要有:
(1)学生信息管理;管理员可登录系统进入管理员界面,进入学生信息管理,可添加、删除、修改学生信息;
(2)课程信息管理;管理员可添加、删除、修改课程信息;
(3)学生成绩管理;管理员可添加、删除、修改学生成绩;
(4)信息查询;管理员可查询学生信息,课程信息、学生成绩;
(5)统计。
管理员可统计及格人数,计算总分,课程平均分;
(6)学生可查询成绩;
1.2数据需求
(1)管理员需记录其
管理员序号、姓名、性别、密码
(2)学生需记录其
学生学号、姓名、性别、出生日期、系别、密码
(3)课程需记录其
课程号、课程名、学分
(4)学生成绩需记录其
学生学号、课程号、成绩、学期
第2章数据库设计
2.1数据库逻辑级设计
2.2关系模式
学生(学号、姓名、性别、出生日期、系别、密码)
管理员(工号、姓名、性别、密码)
课程(课程号、课程名,学分)
成绩(学号、课程号、成绩、学期)
用户(用户名、密码、用户类型)(1为学生,0为管理员)
加粗表示外键、加下划线表示主码
2.3基本表
表2.1学生表
表2.2管理员表
表2.3成绩表
表2.4课程表
第3章概要设计
3.1系统结构与模块功能
本系统结构主要包括管理员登陆设计,学生登陆设计,添加信息设计,删除信息设计,修改信息设计
(1)用户登录界面设计:
需要填写用户名和密码才可以进去,能够查看各个学期的成绩
(2)学生登录界面设计:
学生输入信息登录,登录后的界面只有查询功能
(3)管理员登陆界面设计:
管理员根据自己的账号和密码登陆之后可以查看学生信息,学生成绩信息,课程信息
(4)添加信息界面设计:
分为添加学生成绩信息,添加课程信息,添加学生信息
(5)删除信息界面设计:
分为三部分,删除学生成绩信息,删除课程信息。
删除学生信息,选择其中一部分并且显示其信息,选择一条并且删除
(6)修改界面设计:
分为三部分,修改学生成绩信息,修改课程信息。
修改学生信息,选择其中一部分并且显示其信息,选择一条并且修改
第4章详细设计与实现
4.1模块流程图
4.2界面效果及代码
(1)登陆界面如图
图4.1登录
(2)学生登陆后主界面
(3)管理员登陆后界面
登陆主要代码:
protectedvoidlogin(ActionEvente){
//检查用户名、密码,进行登录验证
Stringc;
Stringun=txt_username.getText().trim();
Stringpw=txt_password.getText().trim();
Connectioncon=null;
{
try{
con=dbUtil.getCon();
//Statementstmt=con.createStatement();
java.sql.Statementstmt=con.createStatement();
Stringsql="select*fromuserwhereUame=?
";//定义查询语句
PreparedStatementpstm=con.prepareStatement(sql);
pstm.setString(1,un);
ResultSetrs=pstm.executeQuery();
Stringpassword=pw;
inttype_id=0;
while(rs.next()){
type_id=rs.getInt("type_id");
password=rs.getString("password");
}
if(pw.equals(password)){
//.3成功就进入主界面
dispose();
MainFrmfrmMain=newMainFrm(type_id);
frmMain.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null,"用户名无效或密码错误!
");
return;
}
}
catch(Exceptione1){
e1.printStackTrace();
}finally{
try{
dbUtil.closeCon(con);
}catch(Exceptione1){
e1.printStackTrace();
}
}
}
}
(4)学生查询成绩信息
主要代码:
protectedvoidsearchgradeActtionPerformed(ActionEvente){
StringSno=txt_sno.getText();
DefaultTableModeldtm=(DefaultTableModel)table.getModel();
dtm.setRowCount(0);//设置成0行
///连接数据库
Connectioncon=null;
try{//数据库查询,并填充到JTABLE
con=dbUtil.getCon();
//下面可以写数据库访问语句,并执行。
Statementstmt=con.createStatement();//创建SQL命令对象
Stringsql="selectSno,Sname,Cname,Sgrade,Stimefromgrade_infowhereSno='"+Sno
+"'";//定义查询语句
//Stringsql="execsss'01'";
PreparedStatementpstm=con.prepareStatement(sql);
ResultSetrs=pstm.executeQuery();
inti=0;
while(rs.next()){
i=i+1;
Vectorv=newVector();
v.add(rs.getString("Sno"));
v.add(rs.getString("Sname"));
v.add(rs.getString("Cname"));
v.add(rs.getString("Sgrade"));
v.add(rs.getString("Stime"));
dtm.addRow(v);
}
if(i==0){
JOptionPane.showMessageDialog(null,"学号无效!
");
}
con.close();//关闭命令对象连接
}catch(Exceptione1){
e1.printStackTrace();
}finally{
try{
dbUtil.closeCon(con);
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
(5)管理员添加成绩信息
主要代码:
privatevoidAddActionPerformed(ActionEventevt){
StringStudentName=txtSname.getText();
StringStudentNo=txtSno.getText();
StringStudentCname=txtCname.getText();
StringStudentSgrade=txtSgrade.getText();
StringStudentStime=txtstime.getText();
//1.验证数据有效性
if(StudentName.trim().isEmpty()){
JOptionPane.showMessageDialog(null,"学生姓名名称不能为空!
");
////JOptionPane.showMessageDialog(this,"用户名不能为空!
","警告信息",JOptionPane.WARNING_MESSAGE);
return;
}
if(StudentNo.trim().isEmpty()){
JOptionPane.showMessageDialog(null,"学号不能为空!
");
return;
}
//连接SQLSERVER数据库--开始
StringJDriver="com.mysql.jdbc.Driver";//SQL数据库引擎
StringdbUrl="jdbc:
mysql:
//localhost:
3306/message";
try{
Class.forName(JDriver);//加载数据库引擎,返回给定字符串名的类
}catch(ClassNotFoundExceptione){
//System.out.println("加载数据库引擎失败");
JOptionPane.showMessageDialog(null,"加载数据库引擎失败!
");
System.exit(0);
}
try{
StringdbUserName="root";
StringdbPassword="123456";
Connectioncon=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//连接数据库对象
//JOptionPane.showMessageDialog(null,"连接数据库成功!
");
//下面可以写数据库访问语句,并执行。
//插入一条图书记录
Statementstmt=con.createStatement();//创建SQL命令对象
Stringsql="insertintoStudent(Sno,Sname,Cname,Sgrade,Stime)values('"+StudentNo+"','"+StudentName+"','"+StudentCname+"','"+StudentSgrade+"','"+StudentStime+"')";//定义查询语句
stmt.executeUpdate(sql);//执行SQL命令对象
JOptionPane.showMessageDialog(null,"数据插入成功!
");
//最后关闭连接
stmt.close();//关闭命令对象连接
con.close();//关闭数据库连接
}
catch(SQLExceptione){
e.printStackTrace();
System.out.println("数据库连接错误");
System.exit(0);
}
//数据库访问到此结束
JOptionPane.showMessageDialog(null,"添加学生信息成功!
");
}
(6)管理员修改成绩信息
(7)管理员删除成绩信息
主要代码:
privatevoidModifyActionPerformed(ActionEventevt){
Stringsno=this.txtsno.getText();
if(txtsno.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"请选择一条要修改的记录!
");
return;
}
Connectionconn=null;
Stringsql="updatestudentsetSname='"+txtsname.getText()+"',Cname='"+txtcname.getText()+"',Sgrade='"+txtgrade.getText()+"',Stime='"+txtstime_1.getText()+"'whereSno="+txtsno.getText();
try{
conn=dbUtil.getCon();
PreparedStatementpstm=conn.prepareStatement(sql);
intcount=pstm.executeUpdate();
if(count==0){
JOptionPane.showMessageDialog(null,"修改失败!
");
}
else{
JOptionPane.showMessageDialog(null,"修改成功!
");
fillTable("");
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(conn!
=null)
dbUtil.closeCon(conn);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
privatevoidDelActionPerformed(ActionEventevt){
if(txtsno.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"请选择一条要删除的记录!
");
return;
}
Connectionconn=null;
intcount=0;
Stringsno=txtsno.getText().toString();
Stringsql="deletefromStudentwhereSno=?
";
try{
conn=dbUtil.getCon();
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setString(1,sno);
//删除选中学生
count=pstm.executeUpdate();
if(count==0){
JOptionPane.showMessageDialog(null,"删除失败!
");
}
else{
JOptionPane.showMessageDialog(null,"删除成功!
");
fillTable("");
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(conn!
=null)
dbUtil.closeCon(conn);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
第5章总结
一个星期的课程设计因为放假以及老师有事耽误了一点时间,所有课程设计总的来说只有那么四天的时间,一开始看到题目的时候其实是比较开心的,因为数据库的课程设计与一些题目其实是比较相像的。
我做的题目就是学生成绩管理系统,因为功能上实现起来是比较容易的,但是实际上做起来也是比较繁琐的,还是需要连接数据库的一起才能完成,对于新手来说其实是比较困难的。
虽然很难,但是也算是完成了其中部分功能,对于课程信息查询,添加,修改,删除与学生信息查询以及学生成绩的查询,删除修改等,都是比较相同的,实现起来虽然不会很难,但是却比较繁琐,时间又不是很充裕。
所以我选择了完成学生成绩查询,修改以及删除等功能
虽然完成的并没有那么理想,但是都是独立完成,而且实现的功能也是正确的。
总的来说,这次的课程设计其实并不是很理想,但是也学会了一些基本的操作,如果有充足的时间再一次时间,我觉得一定会完成的很快,而且功能要比现在更加的完善。