成绩管理系统.docx
《成绩管理系统.docx》由会员分享,可在线阅读,更多相关《成绩管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
成绩管理系统
JAVA程序设计
学院:
班级:
学号:
姓名:
1项目研究开发的背景及意义
1.1本课题设计学术价值、理论意义和实践意义
现在的社会知识经济在世界经济发展的地位越来越高,国家综合国力和国际竞争能力越来越取决于教育发展,科学技术和知识创新的水平,教育在经济和社会发展过程中将呈现出越来越突出的重要作用。
学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但是有些学校还是使用传统人工的方式管理学生成绩,填写各种表格,这种管理方式存在着许多缺点,如:
效率低,保密性差,另外所用其时间长,产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难。
在此次大作业中,我综合java编程、SQL数据库和SQL查询语言来实现一个简单的学生成绩管理系统。
1.2本课题设计拟研究的主要问题
一个完整的学生管理系统包括四个功能模板:
(1)基本信息管理:
包括对学生、教师、课程、成绩信息进行查找、删除、修改和添加。
(2)课表查询:
学生和教师都可以对自身的课表进行查询。
(3)统计功能:
对学生单科成绩、总成绩、所有学生成绩的平均分进行统计,并作出相应的排名。
(4)图形界面,将学生单科成绩用柱形图表示出来,清晰简单地表示出成绩的分布情况。
1.3重点和难点
(1)界面要求美观,需熟练掌握利用java语言来布局。
(2)数据库多个表联系,利用视图或者存储过程,需熟练掌握数据库的操作。
(3)模糊查找和精确查找,在界面上要求两者兼容,数据库上要求联系紧密。
(4)统计功能,单科和总成绩要求进行统计。
(5)图形界面,系统主界面加入背景图片以及成绩统计时以不同颜色的柱形图形象表达。
1.4研究方法、预期效益
本次课程设计属于很普遍的应用研究类,我只是在大家做的基础上加上我自己的的想法以及设计。
同时结合我们现在学生的成绩情况来进行设计。
我采用的方法是理论分析结合实际来进行研究的,通过学习经验来建立模型,在此基础上对学生成绩管理系统进行设计。
这个系统将在12月下旬设计结束,界面美观,使用方便,功能较全的一个原型系统。
此系统可以应用于落后的乡村的中小学教学管理。
1.5本项目创新点和特色
(1)本系统采用java和数据库结合的方式开发,可以对大量的数据进行存储和操作。
(2)本系统使用java开发,具有跨平台特性。
(3)本系统功能俱全,具有学生、教师、课程的信息管理和多条件的成绩查询和课程查询,成绩统计和利用柱形图反应成绩分布。
(4)系统具有安全性,用户只能通过用户名和密码访问。
同时设定三种用户:
管理员、学生、教师。
不同的用户权限不同。
2需求分析
2.1开发背景
当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.。
管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。
学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩,个人信息和课表查询等,但是一直以来在落后的乡村一些中小学人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,如:
效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用,作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点,例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化,正规化管理,与世界接轨的重要条件。
因此,开发这样的一套成绩管理系统成为很有必要的事情。
学生成绩管理系统提供了比较全面的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询、统计等操作。
2.2项目目标
(1)管理员能够实现对整个学生信息的添加、修改、删除、查询等操作。
(2)管理员能够实现对整个教师信息的添加、修改、删除、查询等操作。
(3)管理员能够实现对整个课程信息的添加、修改、删除、查询等操作。
(4)学生、教师、管理员对整个成绩的查询。
(5)教师、学生查询课表。
(6)系统对成绩具有统计计算的功能,将成绩情况用柱形图形象地表现出来,并对成绩进行排名,包括单科和总成绩。
(7)不同的角色不同的权限。
2.3运行环境
学生成绩对运行环境没有很高的要求,而且可以跨平台运行,包括现有的linux和uniux等操作系统。
3技术路线及关键技术
3.1系统总体功能图
(1)系统结构图
图3.1-系统总结构图
(2)系统流程图:
在系统设计中,将用户分成三种权限,不同权限的用户,则访问的内容不同、控制的信息也不同,系统结构图如图3.1,系统流程图如图3.2。
图3.2-系统流程图
(3)在系统结构图中,我们可以看到管理员对学生、课程、成绩、教师的基本信息有增删改除的功能,以下是具体功能模块结构图:
图3.3-学生信息管理模块
图3.4-教师信息管理模块
图3.5-课程信息管理模块
图3.6-成绩信息管理模块
3.2学生成绩管理系统的功能模块简介:
(1)基本信息管理(以学生为例)
if(obj==tianjia)//添加
{
Sno=tf_xuehao.getText().trim();
Sname=tf_xingming.getText().trim();
sex=tf_xingbie.getText().trim();
age1=Integer.parseInt(tf_nianling.getText().trim());
tel_no=tf_dianhua.getText().trim();
classno=tf_banhao.getText().trim();
addr=tf_dizhi.getText().trim();
if(Sno.length()==0||Sname.length()==0||sex.length()==0||age1==0||Sno.length()==0||tel_no.length()==0||addr.length()==0||classno.length()==0)
{
JOptionPane.showMessageDialog(this,"请添加完整信息!
","提示信息",JOptionPane.QUESTION_MESSAGE);
}
else
{
try
{
ps=con.prepareStatement("insertintostudentvalues(?
?
?
?
?
?
?
)");
ps.setString(1,Sno);
ps.setString(2,Sname);
ps.setString(3,sex);
ps.setString(4,classno);
ps.setString(5,addr);
ps.setInt(6,age1);
ps.setString(7,tel_no);
JOptionPane.showMessageDialog(this,"确定添加吗?
","提示信息",JOptionPane.QUESTION_MESSAGE);
tf_xuehao.setText("");
tf_xingming.setText("");
tf_xingbie.setText("");
tf_nianling.setText("");
tf_dianhua.setText("");
tf_dizhi.setText("");
tf_banhao.setText("");
rs=ps.executeQuery();
}
catch(SQLExceptionsql)
{
JOptionPane.showMessageDialog(this,"添加成功!
","提示信息",JOptionPane.QUESTION_MESSAGE);
}
}
}
if(obj==xiugai)//修改
{
Stringno=shuru.getText().trim();
Sno=tf_xuehao.getText().trim();
Sname=tf_xingming.getText().trim();
sex=tf_xingbie.getText().trim();
age1=Integer.parseInt(tf_nianling.getText().trim());
tel_no=tf_dianhua.getText().trim();
addr=tf_dizhi.getText().trim();
classno=tf_banhao.getText().trim();
try
{
ps=con.prepareStatement("updatestudentsetSno=?
Sname=?
sex=?
classno=?
addr=?
age=?
tel_no=?
whereSno=?
");
ps.setString(1,Sno);
ps.setString(2,Sname);
ps.setString(3,sex);
ps.setString(4,classno);
ps.setString(5,addr);
ps.setInt(6,age1);
ps.setString(7,tel_no);
ps.setString(8,no);
JOptionPane.showMessageDialog(this,"确定修改吗?
","提示信息",JOptionPane.QUESTION_MESSAGE);
tf_xuehao.setText("");
tf_xingming.setText("");
tf_xingbie.setText("");
tf_banhao.setText("");
tf_dizhi.setText("");
tf_nianling.setText("");
tf_dianhua.setText("");
JOptionPane.showMessageDialog(this,"修改成功!
","提示信息",JOptionPane.INFORMATION_MESSAGE);
rs=ps.executeQuery();
rs.next();
}
catch(SQLExceptionsql)
{
JOptionPane.showMessageDialog((Component)null,sql.getMessage(),"提示信息",JOptionPane.QUESTION_MESSAGE);
}
}
if(obj==shanchu)//删除
{
try
{
Stringno=shuru.getText().trim();
ps=con.prepareStatement("deletefromstudentwhereSno=?
");
ps.setString(1,no);
JOptionPane.showMessageDialog(this,"确定删除吗?
","提示信息",JOptionPane.QUESTION_MESSAGE);
tf_xuehao.setText("");
tf_nianling.setText("");
tf_xingming.setText("");
tf_dianhua.setText("");
tf_dizhi.setText("");
tf_xingbie.setText("");
tf_banhao.setText("");
rs=ps.executeQuery();
JOptionPane.showMessageDialog(this,"删除成功!
","提示信息",JOptionPane.INFORMATION_MESSAGE);
}
catch(SQLExceptionsqlex)
{
sqlex.getMessage();
}
}
if(obj==qingkong)//清空
{
shuru.setText("");
tf_xuehao.setText("");
tf_nianling.setText("");
tf_xingming.setText("");
tf_dianhua.setText("");
tf_dizhi.setText("");
tf_xingbie.setText("");
tf_banhao.setText("");
}
}}
主要功能:
添加、删除、修改、查询学生基本信息。
实现目的:
对于每个新的学年都有大量的学生入录,对学生信息的添加是必不可少的。
同时,在管理员的日常工作过程中,难免不出现错误。
所以对其信息修改功能也是必不可少的,删除则是在学生开除学籍时可以使用。
同时课程、教师、成绩信息和学生信息操作是相同的。
(2)成绩统计:
//统计各科平均分
publicStringSubjectAvg(Stringsubject){
Strings=null;
floatt=0;
this.Connect();
if(subject.equals("计算机网络"))
{
s="selectavg(grade)fromtranscriptwhereCno=003125";
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
while(rs.next())
{
t=rs.getFloat
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
}
if(subject.equals("数据库系统原理"))
{
s="selectavg(grade)fromtranscriptwhereCno=003126";
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
while(rs.next())
{
t=rs.getFloat
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
}
if(subject.equals("多媒体技术基础"))
{
s="selectavg(grade)fromtranscriptwhereCno=003127";
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
while(rs.next())
{
t=rs.getFloat
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
}
if(subject.equals("概率论与数理统计"))
{
s="selectavg(grade)fromtranscriptwhereCno=003128";
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
while(rs.next())
{
t=rs.getFloat
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
}
returnFloat.toString(t);
}
//总分平均分统计
publicStringallAvg(){
floatsum=0;
intcount=0;
//st=this.Connect().prepareStatement(sql);
Strings="selectsum(grade)astotalfromtranscript";
System.out.println("s="+s);
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
System.out.println("rs="+rs);
if(rs.next())
{
sum=rs.getFloat("total");
System.out.println("sum="+sum);
}
rs=null;
s="selectsum(grade)fromtranscriptwhereCno=001325";
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
if(rs.next())
{
sum=sum+rs.getFloat
(1);
}
rs=null;
s="selectsum(grade)fromtranscriptwhereCno=001326";
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
if(rs.next())
{
sum=sum+rs.getFloat
(1);
}
rs=null;
s="selectsum(grade)fromtranscriptwhereCno=001328";
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
if(rs.next())
{
sum=sum+rs.getFloat
(1);
}
rs=null;
s="selectcount(distinctSno)fromtranscript";
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
if(rs.next())
{
count=rs.getInt
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
if(count==0)
return"0";
else
{
sum=sum/count;
returnFloat.toString(sum);
}
}
//获得各科的分数段人数
publicintgethigh(Stringsubject,intgrade){
//总的人数
intnum=0;
Strings=null;
this.Connect();
if(subject.equals("计算机网络"))
{
if(grade==60)
s="selectcount(sno)fromtranscripta,coursebwheregrade<60anda.Cno=b.CnoandCname='计算机网络'";
if(grade==70)
s="selectcount(sno)fromtranscripta,coursebwheregrade<70andgrade>=60anda.Cno=b.CnoandCname='计算机网络'";
if(grade==80)
s="selectcount(sno)fromtranscripta,coursebwheregrade<80andgrade>=70anda.Cno=b.CnoandCname='计算机网络'";
if(grade==90)
s="selectcount(sno)fromtranscripta,coursebwheregrade<90andgrade>=80anda.Cno=b.CnoandCname='计算机网络'";
if(grade==100)
s="selectcount(sno)fromtranscripta,coursebwheregrade<100andgrade>=90anda.Cno=b.CnoandCname='计算机网络'";
try{
st=this.Connect().prepareStatement(s);
rs=st.executeQuery();
while(rs.next())
{
num=rs.getInt
(1);
}
}catch(Exceptione){