1、1. 学生信息管理系统概述1.1 系统开发背景学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。 随着在校大学生人数的不断增加,教务系统的数量也不断的上涨, 。学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理 ,与世界接轨的重要条件。学生信息管理系统具有手工管理所无法比拟的优点。如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高
2、学生信息管理的效率。1.2 开发意义随着这些年电脑计算机的速度质的提高,成本的下降,IT 互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。 学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。通过这个系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义1.3 系统使用范围 本系统的设计考虑了系统的通用性,可以应用于教育系统的各
3、种类型院校。系统开发技术2. 系统需求分析2.1 开发环境和软件(1) 操作系统:Windows 7(2) 数据库软件:SQL Server 2005(3) Java 开发工具:Eclipse2.2 系统设计与功能分析学生信息管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用 java 语言编写,用 SQLServer2005 数据库作为后台的数据库进行信息的存储,用 SQL 语句完成学生学籍信息的添加,查询,修改,删除的操作以及成绩的录入,修改,删除等。用 ODBC 驱动实现前台 Java 与后台 SQL 数据库的连接。Java语言跨平
4、台性强,可以在 windows,linux,ubuntu 等系统下使用,方便简单,安全性好。SQLServer2005 数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:1用户登陆界面。该界面可以选择使用者的身份学生。不同的身份有不同的操作界面和功能权限。ID 号和密码输入正确即可登录。学生管理界面。提供了学生学籍信息的查询,相关科目的成绩查询和排名,修改登录密码等功能。2管理员管理界面。拥有最高的权限。允许添加教师信息和课程信息等。3登录的用户信息分别存储在 SQL 数据库的“管理员信息表” , “学籍信息表”中,如果用户信息不存在则三张表中,将会无权利登录本管理系统。保证
5、了本学生管理系统的安全性。3数据库设计3.1 系统概念结构设计学籍入学年份性别学院专业姓名生源地学号籍贯图 3-1 学籍管理系统成绩高等数学专业英语数据库 应用集成操作系统 计算机网络数据挖掘学号J A V A 程序设计图 3-2 成绩管理系统管理员管理员号 登录密码图 3-4 管理员系统图 3-4 学籍管理系统流程图实体属性表:实体 属性管理员 管理员号,登录密码学籍 学号,姓名,性别,籍贯,生源地,入学年份,学院,专业成绩 学号,数据库,JAVA 程序设计,高等数学,应用集成,操作系统,专业英语,计算机网络 登录登录验证判断是管理员/学生查看成绩查看信息查看信息修改信息查询 添加学籍管理系
6、统3.2 系统逻辑结构设计管理员信息表:字段名 类型 空值 约束条件管理员号 varchar(10) not null 主键登录密码 varchar(10) not null成绩信息表:字段名 类型 空值 约束条件学号 varchar(15) not null 主键,外键数据库 float not nullJAVA 程序设计float not null计算机网络 float not null高等数学 float not null专业英语 float not null应用集成 float not null操作系统 float not null数据挖掘 float not null学籍信息表:字段
7、名 类型 空值 约束条件学号 int not null 主键姓名 varchar(30) not null性别 char(2)入学年份 datatime not null籍贯 char(10) 生源地 Char(20) not null学院 Char(20) not null专业 Char(20) not null3.3 数据库实现3.3.1 SQL 语句实现(1)学籍信息表创建:create table 学籍信息表(学号varchar(15) primary key,姓名varchar(8) not null ,性别varchar(4) ,入学年份datatime,not null,学院va
8、rchar(8) not null ,专业varchar(8) not null ,籍贯varchar(5) ,生源地archar(6) not null)(2)成绩信息表创建:create table 成绩信息表(学号varchar(15),数据库 float,not null,数据挖掘flaoat,not null计算机网络 float,not null,Java程序设计 float,not null,应用集成 float,not null,foreign key (学号) references 学籍信息表( 学号),)(3)管理员信息表创建:create table 课程信息表(管理员号
9、 varchar(8) primary key,登录密码 varchar(12) not null)视图的创建:“学生成绩信息”视图创建:create view 学生成绩信息asSELECT 学籍信息表. 学号 ,学籍信息表.姓名,学籍信息表. 性别,课程信息表. 入学年份, 成绩信息表 .学院,成绩信息表.专业FROM 成绩信息表JOIN 学籍信息表 ON 成绩信息表.学号 = 学籍信息表.学号4. 系统模块详细设计4.1 登录模块4.2 添加学生信息界面4.3 添加学生成绩界面5.系统测试5.1 测试登陆5.2 查询学生成绩界面5.3 测试添加学生成绩5.4 测试查询分数6附录(代码)由于
10、篇幅有限,所以只附上主要功能的代码:6.1 登陆界面代码import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class systems extends JFrame implements ActionListenerstatic systems ss;JPanel panel = new JPanel();JLabel label1 = new JLabel(“输入学号:“);JLabel label3 = new JLabel(“欢迎来到学生信息管理系统 “);JTex
11、tField name = new JTextField();JLabel label2 = new JLabel(“密 码:“);JPasswordField pwd = new JPasswordField();JButton Enter = new JButton(“登录“);JButton Exit = new JButton(“退出“);String url = “D:Systemstitle.jpg“;ButtonGroup bgp = new ButtonGroup();JRadioButton stu = new JRadioButton(“学生“);JRadioButton
12、tch = new JRadioButton(“教师“);public systems()super(“学生信息管理系统“);this.setResizable(false);JLabel img = new JLabel(new ImageIcon(url);img.setBounds(0,0,500,100);panel.add(img);stu.setBounds(165,210,70,20);tch.setBounds(265,210,70,20);bgp.add(stu);bgp.add(tch);panel.add(stu);panel.add(tch);Enter.setBoun
13、ds(150,250,80,20);Exit.setBounds(270,250,80,20);Enter.addActionListener(this);Exit.addActionListener(this);panel.add(Enter);panel.add(Exit);panel.setLayout(null);this.add(panel);label1.setBounds(135,130,100,25);panel.add(label1);label3.setBounds(70,20,380,100);label3.setFont(new Font(“Serif“,Font.PL
14、AIN,30);panel.add(label3);name.setBounds(265,130,100,25);panel.add(name);label2.setBounds(135,165,100,25);panel.add(label2);pwd.setBounds(265,165,100,25);panel.add(pwd);this.setBounds(100,100,500,350);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerform
15、ed(ActionEvent e)if(e.getSource()=Enter)String username , password;username = name.getText();password = pwd.getText();tryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);catch (ClassNotFoundException ce)JOptionPane.showMessageDialog(ss,ce.getMessage();if(stu.isSelected()tryConnection con = DriverManage
16、r.getConnection(“jdbc:odbc:sysdb“,“sa“,“);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(“select * from STU“);while(rs.next()if(rs.getString(“ID“).equals(username)Students stu = new Students();elseJOptionPane.showMessageDialog(ss,“登录失败“);rs.close();stmt.close();catch (SQLExc
17、eption se)JOptionPane.showMessageDialog(ss,se.getMessage();else if(tch.isSelected()tryConnection con = DriverManager.getConnection(“jdbc:odbc:systchdb“,“sa“,“);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(“select * from TCH“);while(rs.next()if(rs.getString(“ID“).equals(use
18、rname)elseJOptionPane.showMessageDialog(ss,“登录失败“);catch (SQLException se)JOptionPane.showMessageDialog(ss,se.getMessage();elseSystem.exit(0);public static void main(String args)systems sys = new systems();6.2 查询学生成绩import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.font.
19、*;import java.sql.*;public class Score extends JFrame implements ActionListenerstatic Score s;JLabel title = new JLabel(“查询成绩“,JLabel.CENTER);Font f = new Font(“楷体“,Font.BOLD +Font.ITALIC,16);JPanel jpl = new JPanel();JLabel label1 = new JLabel(“请输入学号:“,JLabel.CENTER);JTextField num = new JTextField
20、();JButton serch = new JButton(“查询成绩“ );JButton reset = new JButton(“重置“);JLabel label2 = new JLabel(“计算机网络:“,JLabel.LEFT );JLabel label3 = new JLabel(“操 作 系 统:“,JLabel.LEFT );JLabel label4 = new JLabel(“专业英语:“,JLabel.LEFT );JLabel label5 = new JLabel(“数 据 挖 掘:“,JLabel.LEFT );JLabel label6 = new JLa
21、bel(“Java程序设计:“,JLabel.LEFT);JLabel label7 = new JLabel(“数 据 库:“,JLabel.LEFT );JLabel label8 = new JLabel(“高 等 数 学:“,JLabel.LEFT );JLabel label9 = new JLabel(“应 用 集 成:“,JLabel.LEFT );JTextField txt = new JTextField() , new JTextField() , new JTextField() , new JTextField() , new JTextField() , new J
22、TextField() ,new JTextField() , new JTextField();static int p = 140;public Score()super(“查询分数“ );this.setResizable(false);this.setSize(500,550);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);title.setFont(f);this.add(jpl);jpl.setLayout(null);title.setBounds(100,20,300,20);
23、jpl.add(title);label1.setBounds(100,60,90,20);jpl.add(label1);num.setBounds(210,60,140,20);jpl.add(num);serch.setBounds(130,100,90,20);reset.setBounds(240,100,90,20);jpl.add(serch);jpl.add(reset);serch.addActionListener(this);reset.addActionListener(this);label2.setBounds(100,140,140,20);label3.setB
24、ounds(100,180,140,20);label4.setBounds(100,220,140,20);label5.setBounds(100,260,140,20);label6.setBounds(100,300,140,20);label7.setBounds(100,340,140,20);label8.setBounds(100,380,140,20);label9.setBounds(100,420,140,20);jpl.add(label2);jpl.add(label3);jpl.add(label4);jpl.add(label5);jpl.add(label6);
25、jpl.add(label7);jpl.add(label8);jpl.add(label9);for(int i = 0 ;itxt.length ; i+)txti.setBounds(260,p,140,20);jpl.add(txti);p=p+40;public void actionPerformed(ActionEvent e)if(e.getSource()=serch)String id = num.getText();tryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);catch (ClassNotFoundException
26、ce)JOptionPane.showMessageDialog(s,ce.getMessage();tryConnection con = DriverManager.getConnection(“jdbc:odbc:sysdb“,“sa“,“);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(“select 计算机系成绩.* from STU , 计算机系成绩 where STU.ID =“ + id + “ AND STU.ID = 计算机系成绩 .SID“);while(rs.next()f
27、or(int i = 0 ; itxt.length ; i+)txti.setText(rs.getString(i+2);catch (SQLException se)JOptionPane.showMessageDialog(s,se.getMessage();elsefor(int i = 0;itxt.length ; i+)txti.setText(“);num.setText(“);public static void main(String args)Score s = new Score();6.3 添加学生成绩import java.awt.*;import javax.s
28、wing.*;import java.awt.event.*;import java.sql.*;public class Addscore extends JFrame implements ActionListenerstatic Addscore ss;JLabel label = new JLabel(“学号:“) , new JLabel(“计算机网络:“) , new JLabel(“操作系统:“) , new JLabel(“专业英语:“) , new JLabel(“数据挖掘:“) , new JLabel(“Java 程序设计:“) , new JLabel(“数据库:“)
29、, new JLabel(“高等数学:“) , new JLabel(“应用集成:“); JTextField txt = new JTextField() , new JTextField() , new JTextField() , new JTextField() , new JTextField() ,new JTextField() , new JTextField() ,new JTextField() ,new JTextField() ;JButton add = new JButton(“添加“);JButton reset = new JButton(“重置“);JPane
30、l jpl = new JPanel();JLabel title = new JLabel(“添加学生成绩“ , JLabel.CENTER);Font f = new Font(“黑体“ , Font.BOLD , 16 );int s = 100;public Addscore()super(“添加学生信息“);this.setResizable(false);this.setSize(500,600);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);this.add(jpl);add.addActio
31、nListener(this);reset.addActionListener(this);jpl.setLayout(null);title.setBounds(150,40,200,20);title.setFont(f);title.setForeground(Color.red);jpl.setBackground(Color.LIGHT_GRAY);jpl.add(title);for(int i = 0 ; i label.length ; i+)labeli.setBounds(100,s,140,20);jpl.add(labeli);txti.setBounds(260,s,
32、140,20);jpl.add(txti);s=s+40;add.setBounds(150,s,80,20);reset.setBounds(250,s,80,20);jpl.add(add);jpl.add(reset);public void actionPerformed(ActionEvent e)if(e.getSource()=add)tryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);catch (ClassNotFoundException ce)JOptionPane.showMessageDialog(ss,ce.getMes
33、sage();tryConnection con = DriverManager.getConnection(“jdbc:odbc:sysdb“,“sa“,“);Statement stmt = con.createStatement();int a = stmt.executeUpdate(“insert into 计算机系成绩(SID , 计算机网络 , 操作系统 , 专业英语 , 数据挖掘 , Java 程序设计 , 数据库 , 高等数学 , 应用集成)values(“+txt0.getText()+“,“+txt1.getText()+“,“+txt2.getText()+“,“+tx
34、t3.getText()+“,“+txt4.getText()+“,“+txt5.getText()+“,“+txt6.getText()+“,“+txt7.getText()+“,“+txt8.getText()+“)“);if(a=1)JOptionPane.showMessageDialog(ss,“添加成功“);elseJOptionPane.showMessageDialog(ss,“添加失败“);catch (SQLException se)JOptionPane.showMessageDialog(ss,se.getMessage();elsefor(int i = 0 ; it
35、xt.length ; i+)txti.setText(“);txt0.requestFocus();public static void main(String args)Addscore as = new Addscore();6.4 添加学生信息代码import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class AddMsg extends JFrame implements ActionListenerstatic AddMsg s;/*添加学生信息控件*/JPa
36、nel jpl = new JPanel();JLabel label1 = new JLabel(“添加基本信息“,JLabel.CENTER);JLabel label2 = new JLabel(“学 号:“,JLabel.CENTER);JLabel label3 = new JLabel(“姓 名:“,JLabel.CENTER);JLabel label4 = new JLabel(“性 别:“,JLabel.CENTER);JLabel label5 = new JLabel(“班 级:“,JLabel.CENTER);JLabel label6 = new JLabel(“学
37、院:“,JLabel.CENTER);JLabel label7 = new JLabel(“专 业:“,JLabel.CENTER);JLabel label8 = new JLabel(“籍 贯:“,JLabel.CENTER);JLabel label9 = new JLabel(“生 源 地:“,JLabel.CENTER);JLabel label10 = new JLabel(“入学年份:“,JLabel.CENTER);JTextField num = new JTextField(2);JTextField nam = new JTextField(4);ButtonGroup
38、 bgp = new ButtonGroup();JRadioButton man = new JRadioButton(“男“);JRadioButton women = new JRadioButton(“女“);JTextField clas = new JTextField();JTextField scl = new JTextField();JTextField sc2 = new JTextField();JTextField sc3 = new JTextField();JTextField sc4 = new JTextField();JTextField sc5 = new
39、 JTextField();JButton reset = new JButton(“重置“);JButton addmsg = new JButton(“添加“);public AddMsg()super(“添加学生信息“);this.setResizable(false);this.setSize(450,580);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(jpl);jpl.setLayout(null);addmsg.addActionListener(this);
40、reset.addActionListener(this);/*插入面板*/label1.setBounds(100,20,300,20);jpl.add(label1);label2.setBounds(100,50,70,20);jpl.add(label2);num.setBounds(190,50,140,20);jpl.add(num);label3.setBounds(100,90,70,20);jpl.add(label3);nam.setBounds(190,90,140,20);jpl.add(nam);label4.setBounds(100,130,70,20);jpl.
41、add(label4);man.setBounds(190,130,60,20);women.setBounds(270,130,60,20);jpl.add(man);jpl.add(women);bgp.add(man);bgp.add(women);label5.setBounds(100,170,70,20);jpl.add(label5);clas.setBounds(190,170,140,20);jpl.add(clas);label6.setBounds(100,210,70,20);jpl.add(label6);scl.setBounds(190,210,140,20);j
42、pl.add(scl);label7.setBounds(100,250,70,20);jpl.add(label7);sc2.setBounds(190,250,140,20);jpl.add(sc2);label8.setBounds(100,290,70,20);jpl.add(label8);sc3.setBounds(190,290,140,20);jpl.add(sc3);label9.setBounds(100,330,70,20);jpl.add(label9);sc4.setBounds(190,330,140,20);jpl.add(sc4);label10.setBoun
43、ds(100,370,70,20);jpl.add(label10);sc5.setBounds(190,370,140,20);jpl.add(sc5);reset.setBounds(120,410,90,20);addmsg.setBounds(240,410,90,20);jpl.add(reset);jpl.add(addmsg);public void actionPerformed(ActionEvent e)if(e.getSource()=addmsg)String sex;if(man.isSelected()sex=“男“;elsesex=“女“;tryClass.for
44、Name(“sun.jdbc.odbc.JdbcOdbcDriver“);catch (ClassNotFoundException ce)JOptionPane.showMessageDialog(s,ce.getMessage();tryConnection con = DriverManager.getConnection(“jdbc:odbc:sysdb“,“sa“,“);Statement stmt = con.createStatement();int a = stmt.executeUpdate(“insert into STU(ID , Pwd , Name , Sex , C
45、lass , Collage)values(“+num.getText()+“,“+“12345678,“+nam.getText()+“,“+sex+“,“+clas.getText()+“,“+scl.getText()+“)“);if(a=1)JOptionPane.showMessageDialog(s,“已成功添加“);elseJOptionPane.showMessageDialog(s,“添加失败“);stmt.close();catch (SQLException se)JOptionPane.showMessageDialog(s,se.getMessage();elsenu
46、m.setText(“);nam.setText(“);clas.setText(“);scl.setText(“);num.requestFocus();public static void main(String args)AddMsg amg = new AddMsg();7课程设计总结此次的课程设计是一个新的体验、挑战,通过此次课程设计我们学会了综合运用所学的应用集成知识,发现,提出,分析和解决实际问题,锻炼实践能力,对我们的实际工作能力进行了具体训练和考察. 此次的设计是一个新的体验、新的挑战,我在此过程中不但应用了所学的知识,而且还不断的学习新的知识、工具,以完成设计的需要,在设计
47、的过程中我深深体会到作为 1 个学习计算机专业的人士,为了实现 1 个模块的代码、为了 1 个设计的实现思想、经常绞尽脑汁来达到设计所要达到的目的, 。本次课程设计虽然时间不长但是受益匪浅。本来这门课的理论知识学的不够扎实,在本次课程设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,我发现通过此次课程设计我想、这一学期所学到的知识都得到了加深。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足之处,对以前所学过
48、的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。此外,由于这是 1 个新的尝试,还有我有限的知识和仓促的时间所限,所以设计过程中难免有缺点和不足的地方,望各位老师能给予我批评指正。8.参考文献1软件工程与软件文档写作 文斌 刘长青 田原 编著 2JSP 动态 WEB 技术实例教程 聂哲 主编3Sqlserver2000 数据库原理与应用 仝春灵 沈祥玖 主编4数据集成与应用集成 田原 编著5 张同光等,信息安全技术实用教程,机械工业出版社,2008.7