1.设计背景
随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 现在我国的教育机构对学生成绩管理还普遍停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代,这种传统的管理方法必然被计算机为基础的信息管理所取代。
通过调查,要求系统具有权限设置功能的登录模块,学生可以实现成绩信息查询功能。教务管理人员能够实现注册新用户,学生成绩信息的查询、录入、删除、修改、浏览、统计等。 同时学院在教学这一部分主要是由教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以及让教务处在最短的时间段把学生的成绩核算出来,提高教务处的办事效率。同时,能够随时对学生、学生成绩进行各种查询和统计,以及很好地对系统进行维护。此种学生成绩管理系统提供了强大的学生成绩管理管理功能,方便了系统管理员对学生成绩等信息的添加、修改,打印等操作,同时一样方面的学生可以对自己各科成绩查询,学习的交流,满足了时代的需要。
2.设计方案
2.1总体设计
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: 1.系统应具有实用性、可靠性和适用性,同时注意到先进性。 2.对各个数据库进行动态管理,防止混乱。
3.能够按照用户选择的不同的条件进行简单查询和复合查询。 4.能够对查询结果进行分类汇总,实现报表打印。 5.注意数据的安全性,具有数据备份和恢复的功能。 6.方便用户的操作,尽量减少用户的操作。
2.2模块设计
1
本系统主要实现以下功能:①添加学生成绩; ②删除学生成绩; ③查询学生成绩;④班级创建或删除; ⑤科目调整和删除 具体要求为:
a.添加学生成绩:输入要添加的学生的学号、姓名、课程成绩等信息,且学号字段不能为空,确定则录入取消则放弃该操作。
b .删除功能:输入要删除的学生的学号,且必须输入密码验证,确定则执行该操作修改该学生信息,取消则放弃该操作。
c.查询功能: 查询功能是本系统的一个重要功能,按照科目成绩的相关信息可进行查找,应尽量使操作简化,节省使用者的时间。
d.班级创建:选择要创建的班级名称,或要删除班级的名称,单击确定创建成功,选择删除将删除该班级信息。
e.科目调整:选择要调整的科目名称、班级名称,或要删除科目和班级的名称,单击增加调整成功,选择删除将删除该班级的该项科目信息。
3.方案实施
3.1成绩管理各模块功能介绍
添加学生成绩,输入要添加的学生的学号、姓名、课程成绩等信息,且学号字段不能为空,确定则录入取消则放弃该操作。删除学生成绩,输入要删除的学生的学号,且必须输入密码验证,确定则执行该操作修改该学生信息,取消则放弃该操作。查询学生成绩,查询功能是本系统的一个重要功能,按照科目成绩的相关信息可进行查找,应尽量使操作简化,节省使用者的时间。班级创建或删除,选择要创建的班级名称,或要删除班级的名称,单击确定创建成功,选择删除将删除该班级信息。 科目调整和删除,选择要调整的科目名称、班级名称,或要删除科目和班级的名称,单击增加调整成功,选择删除将删除该班级的该项科目信息。
3.2成绩管理模块功能具体实现
具体实现功能如下:添加学生成绩、删除学生成绩、查询学生成绩、班级创建或删除、科目调整和删除等。科目管理中科目添加和科目删除的部分代码如下:
科目管理
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\");
4
//-----------------
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()+\"\');\";
//查询输入的学号是否在数据库中存在
5 使用当前类目录下的数据库文件
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(\"取消\"))
6
}
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(\"删除\");
7
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();
8
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)
9 {
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)
{
10
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();
12
4.结果与结论
结果:本设计完成了一个具有添加学生成绩、删除学生成绩、查询学生成绩、班级创建或删除、科目调整和删除等功能的学生成绩管理系统。
结论:本系统为学生成绩管理系统,主要提供方便高效的管理功能以及网上的信息查阅平台,学生可以查阅相关的成绩和基本信息,管理员可以管理所有信息。包括浏览所有用户信息以及相关的成绩信息,实现添加,查询,或删除学生成绩和信息,并且能够实现班级创建或删除和科目调整和删除等功能。
论文首先介绍了本系统开发的背景研究意义和开发环境,在进行了可行性需求分析后对本系统进行了概要设计,最后利用JAVA开发环境实现了系统设计时所确定的几种功能,并进行了调试和运行,基本符合了学生成绩管理系统的要求。
但是,由于一些技术和设备所限,本系统存在一些不足之处,有待进一步改进和完善,在开发过程中遇到了以下问题:
(1)对后台数据库中数据的日常维护,包括自动清理过时数据;
(2)程序中错误处理和输入控制不够全面,可能导致输入无效引发错误;
(3)对补考学生的处理。
总之此次设计使我受益匪浅,虽然过程中有许多不尽人意的地方,但通过大家的努力最终还是把问题给攻克了。在此次设计中学到的知识对我终生受用。
5.收获与致谢
软件工程设计是软件工程实践教学的重要组成部分,合理的组织,精心的准备,加上有序的实施,使我们的实践能力得到很大的提高,同时培养了我们的团队合作精神,增强了我们学习的自信心,并为我们毕业后从事相关工作打下良好基础。
在此次的设计中我不仅利用了自己的所学,而且还学到了许多新的知识,不知不觉中我们的设计已经接近了尾声,在这里非常感谢我们的指导老师王瑞平老师,感谢她给我们的设计所提出的很多很多好的建议和意见,让我从中获益匪浅,同时也帮助我们圆满的完成了课程设计。
13
最后我要感谢我们组的全体人员,没有大家的帮助和鼓励,我也不可能完成这么多的设计,也不可能学到这麽多有用的知识。
谢谢同学们对我的帮助,同时也谢谢老师对我们的辅导。没有大家的共同努力就没有我们今天课程设计的圆满完成。向我挚爱的王瑞平老师以及可爱的同学们送上我最崇高的敬意!谢谢你们!
6.参考文献
[1]王 晟.《Visual Basic.NET 数据库开发经典案例解析》.清华大学出版社.2005 [2]马朝晖等.Java教程.(第4版)[M].北京:人民邮电出版社.2006 [3] 张白一,崔尚森.面向对象程序设计——Java[M].西安:电子科技大学出版社.2004 [4] 袁世鹰.微机教务管理系统的设计与实现[P].北京:开明出版社.2001