软件工程课程设计之——学生成绩管理系统_软件工程课程设计实例
软件工程课程设计之——学生成绩管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程课程设计实例”。
1.设计背景
随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。现在我国的教育机构对学生成绩管理还普遍停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代,这种传统的管理方法必然被计算机为基础的信息管理所取代。
通过调查,要求系统具有权限设置功能的登录模块,学生可以实现成绩信息查询功能。教务管理人员能够实现注册新用户,学生成绩信息的查询、录入、删除、修改、浏览、统计等。同时学院在教学这一部分主要是由教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以及让教务处在最短的时间段把学生的成绩核算出来,提高教务处的办事效率。同时,能够随时对学生、学生成绩进行各种查询和统计,以及很好地对系统进行维护。此种学生成绩管理系统提供了强大的学生成绩管理管理功能,方便了系统管理员对学生成绩等信息的添加、修改,打印等操作,同时一样方面的学生可以对自己各科成绩查询,学习的交流,满足了时代的需要。
2.设计方案
2.1总体设计
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: 1.系统应具有实用性、可靠性和适用性,同时注意到先进性。2.对各个数据库进行动态管理,防止混乱。
3.能够按照用户选择的不同的条件进行简单查询和复合查询。4.能够对查询结果进行分类汇总,实现报表打印。5.注意数据的安全性,具有数据备份和恢复的功能。6.方便用户的操作,尽量减少用户的操作。
2.2模块设计
本系统主要实现以下功能:①添加学生成绩; ②删除学生成绩; ③查询学生成绩;④班级创建或删除; ⑤科目调整和删除 具体要求为:
a.添加学生成绩:输入要添加的学生的学号、姓名、课程成绩等信息,且学号字段不能为空,确定则录入取消则放弃该操作。
b .删除功能:输入要删除的学生的学号,且必须输入密码验证,确定则执行该操作修改该学生信息,取消则放弃该操作。
c.查询功能: 查询功能是本系统的一个重要功能,按照科目成绩的相关信息可进行查找,应尽量使操作简化,节省使用者的时间。
d.班级创建:选择要创建的班级名称,或要删除班级的名称,单击确定创建成功,选择删除将删除该班级信息。
e.科目调整:选择要调整的科目名称、班级名称,或要删除科目和班级的名称,单击增加调整成功,选择删除将删除该班级的该项科目信息。
3.方案实施
3.1成绩管理各模块功能介绍
添加学生成绩,输入要添加的学生的学号、姓名、课程成绩等信息,且学号字段不能为空,确定则录入取消则放弃该操作。删除学生成绩,输入要删除的学生的学号,且必须输入密码验证,确定则执行该操作修改该学生信息,取消则放弃该操作。查询学生成绩,查询功能是本系统的一个重要功能,按照科目成绩的相关信息可进行查找,应尽量使操作简化,节省使用者的时间。班级创建或删除,选择要创建的班级名称,或要删除班级的名称,单击确定创建成功,选择删除将删除该班级信息。科目调整和删除,选择要调整的科目名称、班级名称,或要删除科目和班级的名称,单击增加调整成功,选择删除将删除该班级的该项科目信息。
3.2成绩管理模块功能具体实现
具体实现功能如下:添加学生成绩、删除学生成绩、查询学生成绩、班级创建或删除、科目调整和删除等。科目管理中科目添加和科目删除的部分代码如下:
科目管理
科目添加
ReturnBook()import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent;
//extends JFrame cla ReturnBook
implements ActionListener {
JFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮:确定、取消、JLabel label;
//标签
JTextField tf1,tf2;
//定义文本框
JLabel label1,label2,label3,label4;String stuName;
ReturnBook()
{
f3=new JFrame();cp=f3.getContentPane();// 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//-----------------jbt1=new JButton(“确定”);
jbt2=new JButton(“取消”);
//-----------------label=new JLabel(“
size='4'>”,SwingConstants.CENTER);label.setForeground(Color.blue);
学生科目添加
//-----------------tf1=new JTextField(20);tf2=new JTextField(20);
// tf6=new JTextField(20);//-----------------//布局,添加控件
jp1.add(jbt1);jp1.add(jbt2);
stuName=tf2.getText();
jp1.add(new JLabel(“您好”+stuName+“欢迎登陆学生信息系统”));
JPanel jpanel=new JPanel();jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(pp4,“West”);cp.add(pp2,“Center”);
cp.add(pp3,“South”);
cp.add(jpanel,“North”);JPanel pp2=new JPanel(new GridLayout(5,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(5,1));pp4.add(new JLabel(“学号”,SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel(“科目”,SwingConstants.CENTER));pp2.add(tf2);
pp3.add(jbt1);pp3.add(jbt2);cp.add(jpane4,“East”);
//-----------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得显示器窗口的宽度*/ int y=screen.height;f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/
/*取得显示器窗口的高度*/
f3.setVisible(true);
//------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} System.exit(0);} });*/ //-----------------
public void insertRecord(){
if(tf1.getText().equals(“”)||tf2.getText().equals(“”))
{ JOptionPane.showMeageDialog(f3,“请填写学生信息”);return;}
try{
Cla.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(ClaNotFoundException e){System.out.println(“加载驱动程序失败!”);}
try{ String url = “jdbc:odbc:driver={Microsoft Acce Driver(*.mdb)};DBQ=Book.mdb”;//直接
Connection con=DriverManager.getConnection(url);Statement sql;
String s=“insert into course values('”+tf1.getText()+“','”+tf2.getText()+“');”;
//查询输入的学号是否在数据库中存在使用当前类目录下的数据库文件
String query=“select * from course where 学号='”+tf1.getText()+“'”;
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查询结果集 boolean moreRecords=rs.next();//判断结果集是否有数据
if(moreRecords)
{
JOptionPane.showMeageDialog(f3,“学号已经被使用,请重新输入”);
con.close();tf1.setText(“”);return;
}
int insert=sql.executeUpdate(s);if(insert==1)
{ JOptionPane.showMeageDialog(null,“学生信息录入成功!”);
tf1.setText(“”);tf2.setText(“”);
}
}catch(SQLException g)
{
System.out.println(“E Code”+g.getErrorCode());System.out.println(“E M”+g.getMeage());
}
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals(“确定”))
{
insertRecord();
}
else if(cmd.equals(“取消”))
}
f3.hide();
public static void main(String []arg){
}
} 科目删除
BorrowBook()
import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;
cla BorrowBook implements ActionListener {
JFrame f;
Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3,jbt4;//按钮,查询、取消、修改 JLabel label,L;
//标签:请输入姓名学号 JTextField tf;
//定义文人框
StudentIn a=new StudentIn();JTable table;//用来接收数据库中返回的信息
Object columnName[]={“学号”,“科目”};
Object ar[][] =new Object[80][6];String sno;String count=“0”;
BorrowBook()
{
f=new JFrame();cp=f.getContentPane();// 初始化面板、按钮、标签、文人框 jpS=new JPanel();
jpanelWest=new JPanel();
//-----------------jbt1=new JButton(“查询”);
jbt2=new JButton(“删除”);
jbt3=new JButton(“录入”);
jbt4=new JButton(“关闭”);
//-----------------label=new JLabel(“
size='4'>
请
输
入
科
目
:”,SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel(“该学生共有”+count+“人”);//-----------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//-----------------tf=new JTextField(18);
//-----------------
//
//-----------------//布局,添加控件
jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);jpS.add(jbt4);
JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,“North”);JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表 p.setLayout(new BorderLayout());
p.add(L,“North”);p.add(scrollpane);
cp.add(pp4,“West”);cp.add(p,“Center”);
cp.add(jpS,“South”);
cp.add(jpE,“East”);
//-----------------Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得显示器窗口的宽度*/ int y=screen.height;f.setSize(400,330);
/*取得显示器窗口的高度*/
Toolkit kit=Toolkit.getDefaultToolkit();int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jbt4.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
});*/ public void windowClosing(WindowEvent e){ System.exit(0);} } //-----------------int i=0;
public void showRecord(String ql){
while(i>=0)
{
ar[i][0]=“”;ar[i][1]=“”;
i--;} i=0;
try{
Cla.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(ClaNotFoundException e){System.out.println(“加载驱动程序失败!”);}
try{
String url = “jdbc:odbc:driver={Microsoft Acce Driver(*.mdb)};DBQ=Book.mdb”;//直
Connection con=DriverManager.getConnection(url);Statement sql;
String s=“select * from course where 科目 ='”+ql +“'”;
ResultSet rs=sql.executeQuery(s);
接使用当前类目录下的数据库文件
sql=con.createStatement();
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
ar[i][0]=bname;ar[i][1]=bno;i++;
}
count=“”+i+“”;
L.setText(“”+count+“人”);
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{ System.out.println(“E Code”+g.getErrorCode());
System.out.println(“E M”+g.getMeage());
} }
public void deleteRecord(int index)
{
try{
Cla.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(ClaNotFoundException e){System.out.println(“加载驱动程序失败!”);}
try{
String url = “jdbc:odbc:driver={Microsoft Acce Driver(*.mdb)};DBQ=Book.mdb”;//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);Statement sql;
String ql=(String)(ar[index][0]);
String s=“delete * from grade where 学号 ='”+ql +“'”;
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==0)
{JOptionPane.showMeageDialog(null,“删除成功!”,“信息”, JOptionPane.YES_NO_OPTION);}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println(“E Code”+g.getErrorCode());System.out.println(“E M”+g.getMeage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember=“”;String ql=“”;
String cmd=e.getActionCommand();
if(cmd.equals(“查询”))
{
ql=tf.getText().trim();remember=ql;
showRecord(ql);
}
// if(cmd.equals(“删除”))
// {
// new BorrowIn();
//}
//**************
if(cmd.equals(“删除”))
{
int index=table.getSelectedRow();
if(index==-1)
JOptionPane.showMeageDialog(null,“请选定要删除的姓名”,“输入错误”, JOptionPane.YES_NO_OPTION);
else{
BorrowIn k=new BorrowIn();
k.setData(ar[index][0].toString(),ar[index][1].toString());
}
}
//**************
//if(cmd.equals(“还书”))
//new ReturnBook();
if(cmd.equals(“关闭”))
//
f.setVisible(false);
f.dispose();
} public static void main(String []arg){
}
}
BorrowBook a=new BorrowBook();
4.结果与结论
结果:本设计完成了一个具有添加学生成绩、删除学生成绩、查询学生成绩、班级创建或删除、科目调整和删除等功能的学生成绩管理系统。
结论:本系统为学生成绩管理系统,主要提供方便高效的管理功能以及网上的信息查阅平台,学生可以查阅相关的成绩和基本信息,管理员可以管理所有信息。包括浏览所有用户信息以及相关的成绩信息,实现添加,查询,或删除学生成绩和信息,并且能够实现班级创建或删除和科目调整和删除等功能。
论文首先介绍了本系统开发的背景研究意义和开发环境,在进行了可行性需求分析后对本系统进行了概要设计,最后利用JAVA开发环境实现了系统设计时所确定的几种功能,并进行了调试和运行,基本符合了学生成绩管理系统的要求。
但是,由于一些技术和设备所限,本系统存在一些不足之处,有待进一步改进和完善,在开发过程中遇到了以下问题:
(1)对后台数据库中数据的日常维护,包括自动清理过时数据;
(2)程序中错误处理和输入控制不够全面,可能导致输入无效引发错误;
(3)对补考学生的处理。
总之此次设计使我受益匪浅,虽然过程中有许多不尽人意的地方,但通过大家的努力最终还是把问题给攻克了。在此次设计中学到的知识对我终生受用。
5.收获与致谢
软件工程设计是软件工程实践教学的重要组成部分,合理的组织,精心的准备,加上有序的实施,使我们的实践能力得到很大的提高,同时培养了我们的团队合作精神,增强了我们学习的自信心,并为我们毕业后从事相关工作打下良好基础。
在此次的设计中我不仅利用了自己的所学,而且还学到了许多新的知识,不知不觉中我们的设计已经接近了尾声,在这里非常感谢我们的指导老师王瑞平老师,感谢她给我们的设计所提出的很多很多好的建议和意见,让我从中获益匪浅,同时也帮助我们圆满的完成了课程设计。
最后我要感谢我们组的全体人员,没有大家的帮助和鼓励,我也不可能完成这么多的设计,也不可能学到这麽多有用的知识。
谢谢同学们对我的帮助,同时也谢谢老师对我们的辅导。没有大家的共同努力就没有我们今天课程设计的圆满完成。向我挚爱的王瑞平老师以及可爱的同学们送上我最崇高的敬意!谢谢你们!
6.参考文献
[1]王 晟.《Visual Basic.NET 数据库开发经典案例解析》.清华大学出版社.2005 [2]马朝晖等.Java教程.(第4版)[M].北京:人民邮电出版社.2006 [3] 张白一,崔尚森.面向对象程序设计——Java[M].西安:电子科技大学出版社.2004 [4] 袁世鹰.微机教务管理系统的设计与实现[P].北京:开明出版社.2001