1、 至第二学期期末考试课 程: java语言程序设计 题 目: 学生信息管理系统 类 别: 论文 设计 院 系: 计算机和信息工程系 专业班级: 信息管理 级本科1班 学 号: 03,04,07,08,15 学生姓名: 邱丹丹,范柳,谭鸿儒,何婧,陆瑶 任课老师: 周 方 完成时间: 6月24日 教 务 处 制二一五年九月目 录1. 学生信息管理系统概述1.1 研究背景1.2 开发意义2.1 开发环境和软件2.2 系统设计和功效分析2.3功效层次图3数据库设计3.1 系统概念结构设计3.2 系统逻辑结构设计3.3 数据库实现3.3.1 数据库关系图3.3.2SQL语句实现4. 系统模块具体设计4
2、.1用户登录模块4.2 各用户操作模块4.2.1 管理员操作模块(图1)4.2.2 老师操作模块(图2)4.2.3 学生操作模块(图3)5. 系统运行和测试5.1 管理员登录5.2 老师登录5.3 学生登录6课程设计总结7附录(代码)1学生信息管理系统1. 学生信息管理系统概述1.1 研究背景学生信息管理系统是学校管理关键工具,是学校不可或缺部分。 伴随在校大学生人数不停增加,教务系统数量也不停上涨,。学校工作繁杂、资料众多,人工管理信息难度也越来越大,显然是不能满足实际需要,效率也是很低。而且这种传统方法存在着很多弊端,如:保密性差、查询不便、效率低,极难维护和更新等。然而,本系统针对以上缺
3、点能够极大地提升学生信息管理效率,也是科学化、正规化管理,和世界接轨关键条件。所以怎样自动高效地管理信息是这些年来很多人所研究。 1.2 开发意义伴随这些年电脑计算机速度质提升,成本下降,IT互联网大众趋势发展。我们使用电脑高效率才处理数据信息成为可能。 学生学籍管理系统出现,正是管理人员和信息数据,计算机进入互动时代表现。友好人机交互模式,清楚简明图形界面,高效安全操作使得我们对成千上万信息管理得心应手。经过这个系统,能够做到信息规范管理,科学统计和快速查询,从而降低管理方面工作量毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提升学校教学质量和办学水平有着显著意义
4、2. 系统需求分析 2.1 开发环境和软件(1) 操作系统:Windows 7 (2) 数据库软件:mysql-5.7.13-winx64(3) Java开发工具:Eclipse mysql-connector-java-5(JDBC驱动包) jdk-8u73-windows-x64(java运行环境压缩包) 2.2 系统设计和功效分析 学生信息管理系统,可用于学校等机构学生信息管理,查询,更新和维护,使用方便,易用性强,图形界面清楚明了。该软件用java语言编写,用SQLServer数据库作为后台数据库进行信息存放,用SQL语句完成学生学籍信息添加,查询,修改,删除操作和成绩录入,修改,删除
5、等。用ODBC驱动实现前台Java和后台SQL数据库连接。Java语言跨平台性强,能够在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer数据库高效安全,二者结合可相互利用各自优势。该系统实现大致功效:1 用户登陆界面。该界面能够选择使用者身份,“管理员,老师,学生”。不一样身份有不一样操作界面和功效权限。ID号和密码输入正确即可登录。学生管理界面。提供了学生学籍信息查询,相关科目标成绩查询和排名,修改登录密码等功效。2 老师管理界面。提供了对学生学籍信息查询,添加,修改,删除;学生成绩录入,修改,删除,查询班级排名。修改密码等功效。3 管理员管理界面
6、。拥有最高权限。许可添加老师信息和课程信息等。4 登录用户信息分别存放在SQL数据库“管理员信息表”, “老师信息表”, “学籍信息表”中,假如用户信息不存在则三张表中,将会无权利登录本管理系统。确保了本学生管理系统安全性。2.3 功效层次图3 数据库设计3.1 系统概念结构设计 老师ID课程号老师老师姓名课程名称课程登录密码老师ID学号课程号成绩姓名成绩学号管理员ID性别学籍管理员籍贯登录密码班级号班级籍贯登录密码总人数班级号班级名称实体属性表:实体属性老师老师ID,老师姓名,登录密码课程课程号,课程名称,老师ID管理员管理员ID,登录密码班级班级号,班级名称,总人数学籍学号,姓名,性别,班
7、级号,籍贯,登录密码成绩学号,课程号,成绩3.2 系统逻辑结构设计老师信息表:字段名 类型空值约束条件老师ID varchar(8)not null主键老师姓名varchar(8)not null登录密码varchar(8)not null课程信息表:字段名 类型空值约束条件课程号 varchar(8)not null主键课程名称varchar(12)not null老师IDvarchar(8)not null外键班级信息表:字段名 类型空值约束条件班级号 varchar(8)not null主键班级名称varchar(8)not null所属学院varchar(6)班级人数nchar(4)管
8、理员信息表:字段名 类型空值约束条件管理员ID varchar(10)not null主键登录密码varchar(10)not null成绩信息表:字段名 类型空值约束条件班级号 varchar(15)not null主键,外键班级名称varchar(8)not null主键,外键所属学院smallintnot null学籍信息表:字段名 类型空值约束条件学号int not null主键姓名varchar(30)not null性别char(2)班级号varchar(30)not null外键籍贯char(10) 登录密码moneynot null3.3 数据库实现3.3.1 数据库关系图3.
9、3.2 SQL语句实现数据表创建:(1)老师信息表创建:create table 老师信息表(老师ID varchar(8) primary key ,老师姓名varchar(8) not null unique,登录密码varchar(8) not null,)(2)课程信息表创建:create table 课程信息表(课程号varchar(8) primary key,课程名称varchar(12) not null,老师ID varchar(8) not nullforeign key(老师ID) references 老师信息表(老师ID) )(3)班级信息表创建:create tab
10、le 班级信息表(班级号varchar(8) not null primary key,班级名称varchar(8) not null unique,所属学院varchar(8) ,班级人数 nchar(4) )(4)学籍信息表创建:create table 学籍信息表(学号varchar(15) primary key,姓名varchar(8) not null ,性别varchar(4) ,班级号varchar(8) not null ,籍贯varchar(5) ,登录密码varchar(6) not nullforeign key (班级号) references 班级信息表(班级号)(
11、5)成绩信息表创建:create table 成绩信息表(学号varchar(15),课程号varchar(8),成绩smallint primary key(学号,课程号)foreign key (学号) references 学籍信息表(学号),foreign key (课程号) references 课程信息表(课程号))(6)管理员信息表创建:create table 课程信息表(管理员ID varchar(8) primary key,登录密码 varchar(12) not null)视图创建:(1)“老师课程具体信息”视图创建:create view 老师课程具体信息asSELE
12、CT 老师信息表.老师ID,老师信息表.老师姓名,课程信息表.课程号,课程信息表.课程名称,老师信息表.登录密码FROM 老师信息表JOIN 课程信息表 ON 老师信息表.老师ID =课程信息表.老师ID(2) “学生成绩信息”视图创建:create view 学生成绩信息asSELECT 学籍信息表.学号,学籍信息表.姓名,学籍信息表.性别,课程信息表.课程名称,成绩信息表.成绩FROM 成绩信息表JOIN 学籍信息表 ON 成绩信息表.学号 = 学籍信息表.学号JOIN 班级信息表 ON 班级信息表.班级号 = 学籍信息表.班级号JOIN 课程信息表 ON 课程信息表.课程号 = 成绩信息
13、表.课程号存放过程创建:(1)“单科成绩排名”创建: create proc dbo.单科成绩排名kechenname char(8),classname char(8)asselect 学籍信息表.学号,姓名,成绩 from 成绩信息表 join 课程信息表on 课程信息表.课程号=成绩信息表.课程号 join 学籍信息表on 学籍信息表.学号=成绩信息表.学号join 班级信息表on 班级信息表.班级号=学籍信息表.班级号 where 课程名称=kechenname and 班级名称=classname order by 成绩desc(2)“全班排名”创建:create proc dbo.
14、全班排名class char(8)asselect 学籍信息表.学号,姓名, avg(成绩) as 平均分,sum(成绩) as 总分 from 成绩信息表 join 学籍信息表 on 成绩信息表.学号=学籍信息表.学号join 班级信息表 on 班级信息表.班级号=学籍信息表.班级号where 班级信息表.班级名称=classgroup by 学籍信息表.姓名,学籍信息表.学号 order by avg(成绩) desc,学籍信息表.学号4. 系统模块具体设计4.1 用户登录模块4.2 各用户操作模块4.2.1 管理员操作模块(图1)4.2.2 老师操作模块(图2)4.2.3 学生操作模块(
15、图3) 图1 图2 图3 5. 系统运行和测试5.1 管理员登录点击“管理员”按钮。输入正确ID和密码。验证成功则可进入管理员管理界面。管理员ID号和登录密码存在数据库中管理员信息表。表中存在管理员才许可登录。(1)添加老师信息。在弹出输入栏中输入正确数据,点击“确定添加”。 假如输入反复信息则会弹出。 假如某项未填则弹出。 输入数据会分别写进“老师信息表”和“课程信息表”中。 增加老师信息,许可让更多老师登录本系统进行管理操作!(2)修改老师信息 假如要修改老师信息不存在,则 (3)删除信息修改 输入老师信息不存在,则 (4)查询老师信息5.2 老师登录 在登录界面选择“老师”按钮,并输入正
16、确ID号和密码,即可登录成功!输入错误则会弹出提醒! ID号输入正确,登录成功!进入老师管理操作界面: (1)显示学生信息。 (2)添加学生信息 新添加信息会保留在学籍信息表中!假如输入信息已经存在,则显示 假如输入数据正确,则 (3)修改学生信息,输入正确则显示! (4) 删除学生信息, (5)录入学生成绩 (6)修改学生成绩 (7) 删除学生成绩 (8)查询学生成绩 (9)全部成绩排名 (10)单科成绩排名(11)更改登录密码 修改成功后即可用新密码进行登录!5.3 学生登录 输入正确ID号和密码,即可正常登录!(1) 显示学生信息(2) 查询个人成绩 (3)单科成绩排名 (4)全班成绩排
17、名(5)修改密码 修改密码后会更新学生学籍表里面登录密码,下次就能够用新密码登录。点击 后,就能够安全退出学生管理系统了!6课程设计总结课程设计是培养学生综合利用所学知识,发觉,提出,分析和处理实际问题,锻炼实践能力关键步骤,是对学生实际工作能力具体训练和考察过程. 此次课程设计即使很辛劳,实在是受益匪浅。原来这门课知识学就不够扎实,此次课程设计,在设计过程中碰到了很多问题,刚开始要设计时候,还真不知道从哪里下手但最终在图书、同学和老师帮助下全部得到了处理,让我学会了好多书本上没有东西,经过此次课程设计我也能将书本上知识融会贯通,起到了很好辅助学习效果,不过我发觉我学到知识比整整一个学期学到全
18、部多。理论和实践相结合是学习最有效方法。在设计过程中发觉了自己不足之处,对以前所学过知识了解得不够深刻,掌握得不够牢靠,经过这次课程设计以后,一定把以前所学过知识重新温故。 经过这次课程设计使我知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。 7附录(代码)因为篇幅有限,所以只附上关键功效代码:登陆界面和主功效界面:public class Login extends JFrame implements ActionListener JFrame mm=new JFrame
19、(您好!请您先登录!); JTextField t2=new JTextField(null,15); JTextField t4=new JPasswordField(null,15); public String zh=null; JRadioButton b=new JRadioButton(老师);JRadioButton b1=new JRadioButton(学生);JRadioButton b2=new JRadioButton(管理员); public void jiemian() mm.setSize(300,340); mm.setVisible(true); mm.set
20、Location(200,300); mm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel t1=new JLabel(ID号:); JLabel t3=new JLabel(密码:); JButton denglu2=new JButton(登录); denglu2.setContentAreaFilled(false); Container n=mm.getContentPane(); n.setLayout(null); t1.setBounds(42,125,75,35); t2.setBounds(80,125,150,3
21、5); t3.setBounds(40,180,75,35); t4.setBounds(80,180,150,35); denglu2.setBounds(102,245,70,30); n.add(t1);n.add(t2); n.add(t3); n.add(t4); n.add(denglu2); b.setBounds(130,85,70,30); b1.setBounds(70,85,70,30); b2.setBounds(190,85,70,30); ButtonGroup rg=new ButtonGroup(); b.setSelected(false); b1.setSe
22、lected(true); b1.setSelected(false); n.add(b); n.add(b2); rg.add(b2); rg.add(b); n.add(b1); rg.add(b1); b.setContentAreaFilled(false); b1.setContentAreaFilled(false); b2.setContentAreaFilled(false); denglu2.addActionListener(this); public void actionPerformed(ActionEvent e) JButton denglu2=(JButton)
23、e.getSource();if(b.isSelected() zh=t2.getText(); String mima=t4.getText(); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection c=DriverManager.getConnection(jdbc:odbc:学生信息系统); Statement s=c.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet r=s.executeQue
24、ry(select * from 老师信息表 where 老师ID=+zh+ and 登录密码=+mima+); r.last(); if(r.getRow()=1) mm.setVisible(false); r.beforeFirst(); while(r.next() JOptionPane.showMessageDialog( null ,r.getString(老师姓名)+老师!您好!欢迎登录老师管理系统! ) ; JFrame mmm=new JFrame();mmm.setSize(400,420); mmm.setVisible(true); mmm.setLocation(2
25、00,300); mmm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel aaa=new JLabel(学生信息管理:);JLabel aaa1=new JLabel(学生成绩管理:);JButton b1=new JButton(显示学生信息);b1.setBounds(40,45,140,30);JButton b2=new JButton(添加学生信息);b2.setBounds(200,45,140,30);JButton b3=new JButton(修改学生信息);b3.setBounds(40,90,140,30);J
26、Button b4=new JButton(删除学生信息);b4.setBounds(200,90,140,30);JButton b5=new JButton(录入学生成绩);b5.setBounds(40,170,140,30);JButton b6=new JButton(修改学生成绩);b6.setBounds(200,170,140,30);JButton b7=new JButton(删除学生成绩);b7.setBounds(40,215,140,30);JButton b8=new JButton(查询学生成绩);b8.setBounds(200,215,140,30);JBut
27、ton b9=new JButton(全部成绩排名);b9.setBounds(40,260,140,30);JButton b12=new JButton(单科成绩排名);b12.setBounds(200,260,140,30);JButton b10=new JButton(退出系统);b10.setBounds(60,325,100,30);JButton b11=new JButton(修改密码);b11.setBounds(220,325,100,30);aaa.setBounds(15,15,90,30); aaa1.setBounds(15,140,90,30);Contain
28、er n=mmm.getContentPane();n.setLayout(null);J_ActionListener1 a1=new J_ActionListener1();J_ActionListener2 a2=new J_ActionListener2(); J_ActionListener3 a3=new J_ActionListener3(); J_ActionListener4 a4=new J_ActionListener4(); J_ActionListener5 a5=new J_ActionListener5(); J_ActionListener7 a7=new J_
29、ActionListener7(); J_ActionListener8 a8=new J_ActionListener8(); J_ActionListener9 a9=new J_ActionListener9(); J_ActionListener10 a10=new J_ActionListener10(); J_ActionListener12 a12=new J_ActionListener12(); J_ActionListener11 a11=new J_ActionListener11(); n.add(b1);n.add(b2);n.add(b3);n.add(b4);n.
30、add(b5);n.add(b6); n.add(b7);n.add(b8);n.add(b9);n.add(b10);n.add(aaa);n.add(aaa1);n.add(b11);n.add(b12);b1.addActionListener(a1);b2.addActionListener(a2); b3.addActionListener(a3);b4.addActionListener(a4);b5.addActionListener(a5);b6.addActionListener(a7);b7.addActionListener(a8);b8.addActionListene
31、r(a9); b9.addActionListener(a10); b11.addActionListener(a1)b12.addActionListener(a12); b10.addActionListener(new ActionListener() public void actionPerformed(final ActionEvent e) System.exit(0); );(JComponent) mmm.getContentPane().setOpaque(false); .URL url = Sql.class.getResource(未命名.jpg);ImageIcon
32、 img = new ImageIcon(url);JLabel background = new JLabel(img);mmm.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE);background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight(); else JOptionPane.showMessageDialog( null ,老师ID或密码有误!请重新输入!) ; catch(Exception e1) e1.printStackTrace()
33、; public static void main(String args) Login app=new Login(); app.jiemian(); 向数据库添加新学生信息:class DataBase / DataBase类 public static Connection getConnection()throwsSQLException,java.lang.ClassNotFoundException/建立当地数据库连接,编码规则转换为正常录入汉字) String url=jdbc:mysql:/localhost:3306/studentmanagement?useUnicode=
34、true&characterEncoding=GBK;Class.forName(com.mysql.jdbc.Driver);String userName=root;Connection con=DriverManager.getConnection(url, userName, );return con;public void Add(String xh,String xm,String xb,String bj,String jg,String mm) throws SQLException /为学籍管理系统添加新统计 try Statement DataBaseCreate = nu
35、ll; Connection con=DataBaseCreate.getConnection(); Statement s; s = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);ResultSet r=s.executeQuery(select * from 学籍信息表 where 学号=+xh+); r.last(); if(r.getRow()=1) JOptionPane.showMessageDialog( null ,该学号学生信息已存在); Else if(xh
36、.equals() /判定新输入学号是否为空 JOptionPane.showMessageDialog( null ,学号不能为空); else s.executeUpdate( insert into 学籍信息表 values (+xh+,+xm+,+xb+,+ bj+,+jg+,+mm+); s.close();c.close(); JOptionPane.showMessageDialog( null ,+学号:+xh+姓名:+xm+ +性别:+xb+班级号:+bj+ +籍贯:+jg+ +登录密码:+mm+学生统计添加成功! ) ; catch (ClassNotFoundExcept
37、ion e) JOptionPane.showMessageDialog( null , 数据添加异常! ) ; public void DisplayAll(ResultSet r) JFrame m=new JFrame(显示全部学生信息);m.setBounds(60,70,700,600);m.setVisible(true);JTextArea aa=new JTextArea();aa.setBounds(0,0,700,600);Container c1=m.getContentPane();c1.setLayout(null);c1.add(aa); try r.last();
38、 aa.append(t学号+t+ 姓名+t+性别+t+班级+t+籍贯+n); r.beforeFirst(); while(r.next() aa.append(第+r.getRow()+行统计: ); aa.append(r.getString(学号); aa.append(t+r.getString(姓名); aa.append(t+r.getString(性别); aa.append(t+r.getString(班级); aa.append(t+r.getString(籍贯)+n); catch(Exception e) e.printStackTrace(); public void DisplayOne(String str22) throws Exception