1、学生学籍管理系统小型应用系统设计学年设计任务书 学 院计算机与信息工程学院专 业2014级网络工程课程名称小型应用系统设计学年设计题 目学生学籍管理系统完成期限自2016年7月26日至2016年8月26日共31天内容及任务一、项目的目的采用 Java、SQL server 数据库技术,设计一个简单学生学籍管理软件,让我们在设计的过程中,学会如何设计界面和了解相关软件之间的连接技术,把学过的知识都运用起来。 二、项目任务的主要内容和要求采用 Java、SQL server数据库技术,设计一个学生学籍管理系统,要求有:(1)建立学生档案,设计学生入学、管理及查询界面。(2)设计学生各学期、学年成绩
2、输入及查询界面,并打印各项报表。(3)根据各年度总成绩,查询、输出学生学籍管理方案(优秀、合格、试读、退学)。(4)毕业管理。(5)系统维护该系统要求具有良好的灵活性、可扩充性和可移植性,系统采用 SQL server 数据库,系统的数据都是通过数据库来保存,需要数据库具有很好的稳定性,系统可运行在主流的 Windows 操作系统平台上,操作系统要求响应速度快,使操作者感觉操作流畅。三、项目设计(研究)思路先期设计主界面的布局,然后设计要实现那些功能,如学生信息注册、学生成绩录入、学生成绩评优、毕业管理等等。在主界面设计完成后,再考虑设计每一个更能的具体实施方案,最后将所有功能与主界面的按钮实
3、现监听事件。从而完成整体的设计,然后进行调试和优化,最终完成设计。四、具体成果形式和要求设计需完成一个学生学籍管理系统。要求能对 SQL server 数据库进行增、删、改、查等操作,并且具备图形化的用户界面。进度安排起止日期工作内容2016.7.26-8.15根据软件设计要求,先期学习相关 Java、数据库知识。2016.8.16-8.24利用相关知识设计软件数据库结构,编写程序应用界面2016.8.25-8.26调试程序,完善功能,完成学年设计报告主要参考资料1.赵生慧.Java面向对象程序设计(第二版)M. 北京:中国水利水电出版社,2016 2.赵生慧.Java面向对象程序设计实训与考
4、试指导M. 北京:中国水利水电出版社,2016 .3.王雨竹.SQL server 入门经典M.北京:机械工业出版社,20134.王德永.数据库原理与应用M.北京:人民邮电出版社,2011.指导教师意见(签字): 年 月 日系(教研室)主任意见(签字): 年 月 日小型应用系统设计说明书学院名称: 计算机与信息工程学院 班级名称: 网工142 学生姓名: 学 号: 题 目: 学生学籍管理系统 指导教师姓 名: 起止日期: 2016.7.26-8.26 第一部分:正文部分一、选题背景长期以来,学校对学生学籍的管理都还使用着传统的模式。在此模式下,人工的记录学生信息、考试信息等等。而随着现代素质教
5、育与时代的不断发展这样的模式已经不能完全适应现代的教育形势。信息化时代的到来,使学校传统的管理方法和办学水平都受到了极大的挑战。随着Internet技术持续迅猛的发展,给传统的办学模式提出了新的要求。进入新世纪,从世界各国教育信息化的进程来看,不但竞争异常激烈,而且无论是在教育信息基础设施和资源建设上,还是在普及的程度上,中国与西方发达国家甚至某些发展中国家相比,都存在着较大的差距。新的世纪里,如果中国不能很好地利用互联网的平台和以较低的成本对推动教育信息化缺乏明确的方向,势必偏离信息化的轨道,进而阻碍社会信息化的进程和整个国民经济的发展。因此,实施教育的信息化已经刻不容缓、迫在眉睫,而其中的
6、学生学籍管理是其中一个不可或缺的环节。学生学籍管理系统更为系统的对学生的各项信息进行统计处理,并以数据库的形式保存,能够大幅提高学校的工作效率,加强学生信息保存的安全性,降低工作成本。二、方案论证(或设计理念)由于该系统所要满足的硬件是计算机,软件方面是采用 JDK1.8 开发环境、Eclipse 开发工具和 SQL server 数据库,这些设备和软件易于实现和满足。采用的语言是 Java 语言,具有可移植性,功能易于实现,界面比较美观,操作简单,能够移植到其他计算机上运行,与平台无关,能够满足更多的用户,使得该系统能被绝大多数学校接受和使用。因此采用该 Java + SQL server
7、方案来设计学生学籍管理系统。三、过程论述3.1 系统流程设计本系统通过登录界面进入主界面,主界面里有四个菜单栏,每个菜单栏下面都有相应功能,点击相应功能出现相关操作界面,进行对数据库的管理以及对学生信息的增删改查。系统流程图如图 3-1 所示:图 3-1 系统流程图3.2 系统数据流设计系统中的各种模块以及用户数据由用户输入,在数据库中进行存储,用户可以查看、修改、删除和查找这些数据,相关数据流如图 3-2、图 3-3 所示。图 3-2 总体数据流图图 3-3 功能层数据流图3.3 数据库部分设计本系统的功能是宾馆客房管理和用户管理,因此设计有3张表,分别是用户名密码表member表、学生基本
8、信息表是s_information表、学生成绩表s_score表,对数据的增、删、改、查,主要在这3张表上进行。(1) member表用于记录登录程序的用户名和密码字段名数据类型长度字段约束描述usernamevarchar50Not null登录程序的用户名passwordvarchar50Not null登录程序的密码表 3-1 member 表(2) s_information表用于记录学生基本信息字段名数据类型长度字段约束描述numbervarchar50Not null学生学号namevarchar50Not null学生姓名sexvarchar50Not null学生性别nativ
9、evarchar50Not null学生籍贯majorvarchar50Not null学生专业表 3-2 s_information 表(3)s_score表用于记录学生成绩字段名数据类型长度字段约束描述numbervarchar50Not null学生学号mathvarchar50Not null数学成绩englishvarchar50Not null英语成绩chinesevarchar50Not null语文成绩表 3-3 s_score 表3.4 系统的各部分功能模块设计3.4.1登陆程序部分设计登陆界面的功能主要有以下三个:用户登录,错误提示,退出。该模块可以实现用户登录功能,提示密
10、码错误功能和退出系统的功能。在系统核对用户名和密码时需要对数据库操作人员信息表进行查询比对,登录界面如图3-4:图 3-4 用户登录界面核心代码如下:public void check() /检查账户合法性import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Login_db extends JFrame implements ActionListener JLabel title; JTextField name; JPasswordField word; JLabel lab1,lab2; J
11、Button bt1,bt2; public Login_db() /构造方法 super(学生学籍管理系统); init(); public void init() /实现界面的内容 略 public void check() /检查账户合法性 String username=name.getText(); String password=word.getText(); if(username=null | password=null | username.equals() | password.equals() JOptionPane.showMessageDialog(null, 请正确
12、输入! ); word.setText(null); else Operate_MyDB temp_db=new Operate_MyDB(); /创建数据库操作对象,使用里面的方法。 if(temp_db.login_check(username, password) /调用检验方法 this.hide(); /将登录窗口关掉 JOptionPane.showMessageDialog(null, 欢迎+username+登陆学生学籍管理系统!); Gui gui=new Gui(); gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g
13、ui.show(); else JOptionPane.showMessageDialog(null,用户名或密码错误!n登陆失败,请重新登陆!); name.setText(null); word.setText(null); temp_db.close(); public static void main(String args) /主函数 Login_db lg=new Login_db(); public void actionPerformed(ActionEvent e) /实现监听 if(e.getSource()=bt1) check(); if(e.getSource()=b
14、t2) /如果点击重置按钮,将用户名和密码文本设为空 name.setText(); word.setText(); 3.4.2 数据库连接验证部分设计该部分主要用于测试数据库服务器是否打开。通过该功能可排除计算机中数据库服务没有开启时产生的错误。核心代码如下:public static Connection getConnection() /连接数据库 Connection con = null; try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); Connection con1 = DriverManager.g
15、etConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=MyDB,sa, 123456); con=con1; catch (Exception ex) ex.printStackTrace(); return con;3.4.3 学生信息录入部分设计该部分主要用于向数据库中写入学生是基本信息。通过该功能用户可以按照规定添加学生信息,对数据库进行更新,实现学生注册等功能。界面如图3-5:图 3-5 新生注册界面核心代码如下:public void actionPerformed(ActionEvent e) /实现监听 if(e.get
16、Source()=bt1) for(int i=0;ilab.length;i+) texti.setText(); if(e.getSource()=bt2) String str = new String5; for(int i=0;ilab.length;i+) stri=texti.getText().trim(); Operate_MyDB temp_db = new Operate_MyDB(); temp_db.insert_information(str0, str1, str2, str3, str4); temp_db.insert_informationScore(str
17、0); System.out.println(success); JOptionPane.showMessageDialog(null, 恭喜+str1+登入学注册成功!); setVisible(false); 3.4.4 学生信息查看部分设计该部分主要用于查看学生各项基本信息。此部分信息查询还具有打印功能。界面如图3-6:图 3-6 信息查询界面核心代码如下:public class Xxcx extends JFrame implements ActionListener private JButton bt1,bt2; private Operate_MyDB op; JLabel t
18、itle; public Xxcx() super(信息查询); init(); public void init() /实现界面的内容 this.setLayout(new FlowLayout(); this.setBounds(200,200,360, 250); this.setVisible(true); title=new JLabel(欢迎使用本系统!); title.setBounds(0, 0, 360,300); this.add(title); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); bt1=n
19、ew JButton(打印); bt2=new JButton(退出); bt1.setBounds(100, 220, 60,25); bt2.setBounds(180,220, 60,25); this.add(bt1); this.add(bt2); bt1.addActionListener(this); bt2.addActionListener(this); op=new Operate_MyDB(); if(op.getStudentCount()=0) JOptionPane.showMessageDialog(null, 现在还没有任何学生记录!); /查询基本信息 Arr
20、ayList temp1_array=new ArrayList(); ArrayList temp2_array=new ArrayList(); ArrayList temp3_array=new ArrayList(); ArrayList temp4_array=new ArrayList(); ArrayList temp5_array=new ArrayList(); temp1_array=op.getALLnumber(); temp2_array=op.getALLname(); temp3_array=op.getALLsex(); temp4_array=op.getAL
21、Lnative(); temp5_array=op.getALLmajor(); String playerInfo = new Stringtemp1_array.size()5;/ System.out.println(xsaaaxasxsa);/ System.out.println(temp1_array.size(); for(int i=0;itemp1_array.size();i+) for(int j=0;j=4;j+) if(j=0) playerInfoij=(String)temp1_array.get(i); else if(j=1) playerInfoij=(St
22、ring)temp2_array.get(i); else if(j=2) playerInfoij=(String)temp3_array.get(i); else if(j=3) playerInfoij=(String)temp4_array.get(i); else if(j=4) playerInfoij=(String)temp5_array.get(i); String Names = 学号,姓名,性别,籍贯,专业; JTable table=new JTable(playerInfo, Names); table.setGridColor(Color.BLUE); table.
23、setPreferredScrollableViewportSize(new Dimension(330, 150); JScrollPane scrollPane = new JScrollPane(table); this.add(scrollPane); this.setResizable(false); this.setSize(350,300); public static void main(String args) /主函数 Xxcx cx=new Xxcx(); public void actionPerformed(ActionEvent e) if(e.getSource(
24、)=bt1) JOptionPane.showMessageDialog(null, 打印成功!); if(e.getSource()=bt2) this.setVisible(false); 3.4.5 学生成绩录入部分设计该部分主要用于学生的成绩录入,用户可以输入相应学号录入相关成绩,如果学号存在则修改成功,否则录入失败,提示不存在该生。界面如图3-7:图 3-7 成绩录入界面核心代码如下:public void actionPerformed(ActionEvent e) if(e.getSource()=bt1) try op=new Operate_MyDB(); Statement
25、 s=op.getConnection().createStatement(); String sql=select * from s_score + where number=+t1.getText()+; ResultSet rs=s.executeQuery(sql); if(rs.next() number=t1.getText(); math=t2.getText(); chinese=t3.getText(); english=t4.getText(); Operate_MyDB temp_db = new Operate_MyDB(); temp_db.Cjlr_db(numbe
26、r, math, chinese, english); System.out.println(success); JOptionPane.showMessageDialog(null, 恭喜+number+成绩录入成功!); setVisible(false); else JOptionPane.showMessageDialog(null,不存在该学号的学生!); catch (Exception error) System.err.println(异常:+error.getMessage(); if(e.getSource()=bt2) /如果点击重置按钮,将用户名和密码文本设为空 t1.
27、setText(); t2.setText(); t3.setText(); t4.setText(); 3.4.6 学生信息查询部分设计该界面用于成绩查询,用户输入存在的学号,该界面就输出相关学生成绩信息。界面如图3-8:图 3-8 成绩查询界面核心代码如下:public void actionPerformed(ActionEvent e) if(e.getSource()=bt1) try op=new Operate_MyDB(); Statement s=op.getConnection().createStatement(); String sql=select * from s_score + where number=+t1.getText()+; ResultSet rs=s.executeQuery(sql); if(rs.next() lab4.setText(rs.getString(math); lab5.setText(rs.getString(chinese); lab6.setText(rs.getString(english); else JOptionPane.showMessageDialog(null,不存在该学号的学生!); catch (Exception error)