宝玛科技网
您的当前位置:首页学生信息管理系统

学生信息管理系统

来源:宝玛科技网


学生信息管理系统设计报告

目录:

一 需求分析 ....................................................................................................................................... 二 系统说明 ..................................................................................................... 错误!未定义书签。

2.1系统的分工部分: ............................................................................. 错误!未定义书签。 2.2总体要求 ............................................................................................. 错误!未定义书签。 三 功能分析 ..................................................................................................... 错误!未定义书签。

3.1系统功能要求 ..................................................................................................................... 3 3.2系统属性要求 ..................................................................................................................... 3 3.3运行要求 ............................................................................................................................. 4 3.4 模块设计 ............................................................................................................................ 4 四 软件设计分析 ............................................................................................. 错误!未定义书签。

1.数据库E-R图 .................................................................................................................... 5 2.数据字典 ............................................................................................................................. 6

3.逻辑设计 ............................................................................................................................. 7 五 尚未解决的问题 ....................................................................................................................... 21 六 参考文献 ................................................................................................................................... 22 七 总结........................................................................................................................................... 22

一、需求分析:

随着互联网的发展,利用INTERNET 技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。服务教学、提高教学水平和效果是校园网建设的核心目标和核心价值,如何利用现有的资源,来更好地服务于学校的教学,服务于学校的管理工作,是摆在我们面前的一个共同的命题。就目前而言,学校的学籍管理方式还停留在手工操作基础上,每个学期和学年,教师需要花费大量的时间来登录学生信息,而管理人员也需要花费较多的时间来校对管理。同时又形成信息册在教师和教导处之间传递的延时性,遇到学生转入转出,又因为各个学校使用的学籍卡的不同,而造成信息的缺失或者遗漏。

本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本。

系统中需要对用户身份进行管理,采取登陆进入系统的形式。

二、系统说明:

2.1系统功能分工部分:

(1)曾智(2009211929):负责用户信息的管理,学生信息的管理

(2)杨佳朋(2009211933):负责需求、功能分析,学生成绩的管理

2.2总体要求:

(1)系统易操作性

本系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的。

(2)系统具有可维护性

由于系统涉及的信息比较广,数据库中的数据信息需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,用户可以对系统数据及一些简单的功能进行的维护及调整。

(3)系统具有开放性

该系统能够在开放的硬件体系解耦中运行,并且能够与其他系统顺利连接,不会因外部系统的不同面要做大量的修改工作。

(4)系统具有强可视性

要求本系统界面清晰明朗,具有较高的可视性和可操作性。也可根据现实问题进行扩展。

三、功能分析:

3.1系统功能要求

在学生信息管理系统中,主要有用户登录信息管理,用户信息管理,学生信息管理,系统管理,功能分析如下:

(1) 用户登录信息管理:

用户登录信息管理的功能主要是针对此系统用户的登陆操作,其中包括用户的基本信息的输入和删除,以及必须的登陆操作,特别是对用户的身份请求的识别和认证。

(2 )用户信息管理:

用户信息管理的功能主要是实现对用户的添加和删除,以及对密码的删除和修改。

(3)学生信息管理

学生信息管理的功能模块主要包括四个部分:学生个人信息的添加,学生个人信息的查看,学生个人信息的修改,删除信息。(信息包括两部分:一个是学生的基本信息,二是学生的成绩的信息)

(4)系统管理

系统管理的功能主要是实现两个基本功能:重新登录和退出登录。

3.2系统属性要求

(1)正确性

要求发布的软件达到用户的预期目标,运行时基本无错误。 (2)可靠性

在一般条件下,应不出故障。 (3)效率

对于浏览,查询,添加,删除,修改,保存的一般操作,要求及时响应。 (4)完整性

要求能在发生意外(如掉电)的情况下,保证数据不丢失。 (5)易实用性

要求尽量为用户的使用提供方便。 (6)可测试性

设计时尽可能减少测试本系统的各项功能所需的工作量。 (7)复用性

设计时应采用模块化的方法进行设计,对系统内各模块的接口尽可能达到高内聚,低耦合的程度,以提高各模块的复用性。

3.3运行要求

(1)剩余内存5M以上;

(2)系统环境 要求windows xp/windows7/windows vista; (3)软件环境 oracle 10g数据库驱动

3.4 模块设计

(1) 数据库设计模块 (2) 用户登录识别模块 (3) 用户信息管理模块 (4) 学生息管理模块 (5) 系统管理模块

四、软件设计分析

(1) 数据库设计

数据库名称:oral

表名:UESR,STUD,GRADE

表UESR:存放登陆用户的用户名和密码 表STUD:存放学生基本信息 表GRADE:存放学生成绩信息

1.数据库E-R图

系统首页用户登陆信息管理通过身份请求添加删除用户修改密码重新登陆用户信息管理学生信息管理系统管添加查看修改删除

2.数据字典

用户信息表

用户名 密码

学生信息表

学号 姓名 性别 年龄 爱好 院系 班级

学生成绩表

学号 标志用户的登录名 标志用户的登录密码 用户名= VARCHAR2(10) 密码= VARCHAR2(10) 标志学生的学号 标志学生的姓名 标志学生的性别 标志学生的年龄 标志学生的爱好 标志学生的院系 标志学生的班级 学号=VARCHAR2(20) 姓名=VARCHAR2(20) 性别=VARCHAR2(20) 年龄=VARCHAR2(20) 政治面貌=VARCHAR2(20) 系列=VARCHAR2(20) 班级=VARCHAR2(20) 标志学生的学号 学号= VARCHAR2(20) 数据库 大学英语 JAVA 数据结构 高等数学 数学建模

标志学生数据库的成绩 数据库= VARCHAR2(20) 标志学生大学英语的成大学英语= VARCHAR2(20) 绩 标志学生JAVA的成绩 JAVA= VARCHAR2(20) 标志学生数据结构的成数据结构= VARCHAR2(20) 绩 标志学生高等数学的成高等数学= VARCHAR2(20) 绩 标志学生数学建模的成数学建模= VARCHAR2(20) 绩 3.逻辑设计

逻辑设计

用户信息表(登录名,密码);

学生信息表(学号,姓名,性别,年龄,爱好,系列,班级); 学生成绩表(学号,数据库,大学英语,JAVA,数据结构,高等数学,数学建模);

(2) 模块及窗体设计源代码

1 数据库模块设计

将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。

下表是他的基本属性 文件名 database.java 成员变量 public static Connection cn; public static Statement st; public static ResultSet rs; 成员方法 public static boolean joinDB() public static boolean executeSQL(String sqlString) public static boolean query(String sqlString) 代码如下: /*

* 创建database类,方便数据库的连接*/ import java.sql.*;

public class database {

public static Connection cn; public static Statement st;

public static ResultSet rs;//ResultSet 对象具有指向其当前数据行的光标

public static boolean joinDB() { boolean joinFlag; try {

joinFlag = true;//作为连接标志

Class.forName(\"oracle.jdbc.driver.OracleDriver\");//加载驱动 //得到连接 cn = DriverManager.getConnection(\"jdbc:oracle:thin:@172.18.113.69:1521:orcl\\"yjpzf061222\");

System.out.println(\"数据库连接成功\");

//创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象

st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,//该常量指示可滚动并且通常受 ResultSet 底层数据更改影响的 ResultSet 对象的类型 ResultSet.CONCUR_READ_ONLY);//该常量指示不可以更新的 ResultSet 对象的并发模式 return joinFlag;

} catch (SQLException sqlEx) {

System.out.println(sqlEx.getMessage());

joinFlag = false; return joinFlag;

} catch (ClassNotFoundException notfoundEX) { System.out.println(notfoundEX.getMessage());

joinFlag = false; return joinFlag; } }

//sql语句执行方法

public static boolean executeSQL(String sqlString) { boolean executeFlag; try {

st.execute(sqlString); executeFlag = true; } catch (Exception e) { executeFlag = false;

System.out.println(\"sql exception:\" + e.getMessage()); }

return executeFlag; }

public static boolean query(String sqlString) { try {

rs = null;//rs为最初定义的数据集

rs = st.executeQuery(sqlString);//用于查询 } catch (Exception Ex) {

System.out.println(\"sql exception:\" + Ex); return false; }

return true; } }

2用户登录识别模块

代码封装在类Land里,所用到的信息保存在表uesr里 下表是他的基本属性 文件名 Land.java 控件 JLabel:labelname=newJLabel(\"用户名\") labelmima=new JLabel(\"密码\") Jbutton: btenter=new JButton(\"确定\"); btcancel=new JButton(\"清空\"); 成员方法 private void Judge(String sqlString) 判断用户名和密码是否正确的成员方法代码: //Land类得Judge方法,判断用户名和密码是否正确 private void Judge(String sqlString) {

if (database.joinDB()) {//如果数据库连接成功 if (database.query(sqlString))//如果sql连接成功 try{

if(database.rs.isBeforeFirst()) {//如果指向记录集的在第一条记录的前面

System.out.println(\"密码正确\"); jf.setVisible(false);//窗体不可见 //关闭数据库连接

database.cn.close(); new Main();//主窗体 } else {

System.out.println(\"错误\");

new JOptionPane().showMessageDialog(null,\"用户名或密码错误!\ERROR_MESSAGE); }

}catch(Exception ex) {

System.out.println(ex.getMessage()); } } else{

System.out.println(\"连接数据库不成功\"); }

}按钮“确定”的监听事件代码: class Monitor_1 implements ActionListener { public void actionPerformed (ActionEvent e){ if(textname.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"用户名不能为空!\"); } else if(textmima.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"密码不能为空!\"); } else{ String sql=\"select * from uesr where user_id = '\" + textname.getText() + \"' and password = '\" + textmima.getText()+ \"'\"; System.out.println(sql); Judge(sql); } }

}3用户信息管理模块

(1) 密码修改

用户名将自动从表uesr里检索出来,供用户选择 以下是它的基本属性 文件名 xgmima.java 控件名称 Jlabel: lbe2、lbe3、lbe4、lbe5 JcomboBox: tf JpasswordField:pas1、pas2、pas3 Jbutton: b1=new JButton(\"确定\"); b2=new JButton(\"清空\"); 将所有用用户名读出来 database.joinDB();//连接数据库 String sql=\"select * from uesr\"; try{

if(database.query(sql)){ while(database.rs.next()){//依次将用户名读出 String name=database.rs.getString(\"user_id\"); tf.addItem(name); } } }

catch(Exception e){} 确定“按钮”的监听事件代码:

b1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ String name=\"\" + tf.getSelectedItem(); System.out.println(name); String sql=\"select * from uesr where user_id='\"+ name +\"'\"; System.out.println(sql); try{ if(database.query(sql)){ database.rs.next();

String ps1=pas1.getText(); String password=database.rs.getString(\"Password\"); if(ps1.equals(password)){ if(pas2.getText().equals(pas3.getText())){

String supdate=\"update uesr set password='\"+ pas3.getText()+\"' where user_id='\"+ name +\"'\";

database.executeSQL(supdate); new JOptionPane().showMessageDialog(null,\"密码更改成功!\");

} else{ new JOptionPane().showMessageDialog(null,\"两次密码不同!\");

} } else{ new JOptionPane().showMessageDialog(null,\"旧密码不正确!\");

} } }

catch(Exception el){

System.out.println(el); } } });

(2)用户信息添加和删除

上半部分用来添加用户,下半部分用来删除用户 基本属性如下 文件名 AddDeleteUser.java 控件名 private JButton butACancel,butDCancel,butDelete,butOk; private JComboBox cbUserName; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5; private JPasswordField pas1,pas2,pas3; private JTextField txtname; //将所有用用户名读出来 database.joinDB();

String sql=\"select * from uesr\"; try{

if(database.query(sql)){ while(database.rs.next()){//记录集若有记录则通过循环将数据依次读出 String name=database.rs.getString(\"user_id\"); cbUserName.addItem(name); } } }

catch(Exception e){} //为添加按钮加事件

butOk.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(txtname.getText().equals(\"\")){ //判断是否为空 new JOptionPane().showMessageDialog(null,\"用户名不能为空!\"); } else if(pas1.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"密码不能为空!\"); } else if(pas1.getText().equals(pas2.getText())){

String sql=\"insert into uesr values('\"+ txtname.getText() +\"','\"+ pas1.getText() +\"')\"; try{ if(database.executeSQL(sql)){//若SQL执行成功 new JOptionPane().showMessageDialog(null,\"添加成功!\"); cbUserName.addItem(txtname.getText()); } } catch(Exception ea){} } } });

删除按钮监听事件代码

butDelete.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String name=\"\" + cbUserName.getSelectedItem();//得到用户名

String sql=\"select * from uesr where user_id='\"+ name +\"'\"; try{ if(database.query(sql)){ database.rs.next(); String pas=pas3.getText(); String password=database.rs.getString(\"Password\"); System.out.println(password);

if(pas.equals(password)){//比较密码是否与记录集里对应一致 String sdelete=\"delete from uesr where user_id='\"+ name +\"'\"; if(database.executeSQL(sdelete)){ new JOptionPane().showMessageDialog(null,\"删除成功!\"); pas3.setText(\"\");

cbUserName.removeAllItems();//将删除的条目从JcomboBox中删除 String sql1=\"select * from uesr\"; if(database.query(sql1)){ while(database.rs.next()){//更新JcomboBox条目 String name1=database.rs.getString(\"user_id\"); cbUserName.addItem(name1); } } } } else{ new JOptionPane().showMessageDialog(null,\"密码不正确!\"); } } }

catch(Exception el){

System.out.println(el); } } });

4 学生息管理模块 (1)添加信息

该添加是按照先添加学生信息,再添加学生成绩的次序进行的当学生信息添加完后,添加学生成绩窗口的学号会自动将学生信息里没有添加过成绩的成绩显示出来 添加学生信息中的“添加“按钮代码:

butOk.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ if(jtf1.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"学号不能为空\"); } else if(jtf2.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"姓名不能为空\"); } else if(jtf3.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"性别不能为空\"); } else {

String sql=\"insert into stud values('\"+ jtf1.getText() +\"','\"+ jtf2.getText() +\"','\"+ jtf3.getText() +\"','\"+ jtf4.getText()+\"','\"+ jtf5.getText()+\"','\"+ jtf6.getText()+\"','\"+ jtf7.getText()+\"')\"; try{ if(database.executeSQL(sql)){ new JOptionPane().showMessageDialog(null,\"添加成功!\");

} } catch(Exception ea){} } }

});

添加学生成绩信息读取学号信息 database.joinDB();

String sql=\"select 学号 from stud where 学号 NOT IN(select 学号 from grade)\"; try{

if(database.query(sql)){ while(database.rs.next()){ String name=database.rs.getString(\"学号\"); jnum.addItem(name); } } }

catch(Exception ea){}

添加学生成绩信息“添加“按钮代码:

butOk.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ String name=\"\" + jnum.getSelectedItem(); String sql=\"insert into grade values('\"+ name+\"','\"+ jtf2.getText() +\"','\"+ jtf3.getText() +\"','\"+ jtf4.getText()+\"','\"+ jtf5.getText()+\"','\"+ jtf6.getText()+\"','\"+ jtf7.getText()+\"')\"; try{ if(database.executeSQL(sql)){ new JOptionPane().showMessageDialog(null,\"添加成功!\");

} } catch(Exception ea){} } });

(2)信息查看

分为查看学生基本信息和查看学生成绩信息,因为代码和窗体大致相识,进取其一讲述

下面是他的属性 文件名称 v iewstud.java 代码为: 控件名称 JtextArea:te=new JTextArea(); class viewstud extends JInternalFrame { viewstud()

{super(\"查看学生基本信息\");//窗体显示得名称

Container con=getContentPane();//创建JinternalFrame的容器对象 con.setLayout(new BorderLayout());//设定窗体布局 JTextArea te=new JTextArea();

JScrollPane croll=new JScrollPane(te); //加载垂直水平滚动条 con.add(croll,BorderLayout.CENTER); database.joinDB(); //连接数据库 String sql=\"SELECT * FROM stud\"; try{ if(database.query(sql)){ while(database.rs.next()) { te.append(\"学号: \"+database.rs.getString(1)+\" \"); te.append(\"姓名: \"+database.rs.getString(2)+\" \"); te.append(\"性别: \"+database.rs.getString(3)+\" \"); te.append(\"年龄: \"+database.rs.getString(4)+\" \"); te.append(\"爱好:\"+database.rs.getString(5)+\" \"); te.append(\"系别: \"+database.rs.getString(6)+\" \"); te.append(\"班级: \"+database.rs.getString(7)+\" \"); te.append(\"\\n\");

} } }

catch(SQLException ex)

{ System.out.println(ex);} this.setClosable(true);//关闭窗口可用 setVisible(true);//窗体可见 setBounds(20,70,600,350); } }

(3)信息修改

信息修改分为学生基本信息修改,学生成绩信息修改,由于原理相似就以修改学生基本信息作为例子进行介绍 下面是他的属性信息 文件名称 x iugai.java 控件名称 private JButton butCancel,butOk,butShow; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5,jLabel6,jLabel7; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;

显示信息按钮的监听事件代码如下:

database.joinDB();

butShow.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(jtf1.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"请输入学号\"); } else { String sql=\"select * from grade where 学号=\" + \"'\" +jtf1.getText() +\"'\"; try{ if(database.query(sql)){//此处用了个database.executeSQL(sql)提示resultset 关闭 if(!database.rs.first()) { JOptionPane.showMessageDialog(null,\"没有该学生信息...\"); } //下面是用来显示其他文本框里的内容 else { database.rs.first(); //将光标移动到此 ResultSet 对象的第一行。

jtf2.setText(database.rs.getString(\"数据库\"));

jtf3.setText(database.rs.getString(\"大学英语\")); jtf4.setText(database.rs.getString(\"java\")); jtf5.setText(database.rs.getString(\"数据结构\")); jtf6.setText(database.rs.getString(\"高等数学\")); jtf7.setText(database.rs.getString(\"数学建模\")); butOk.setEnabled(true); } } }

catch(NullPointerException upe) { System.out.println(upe.toString()); } catch(SQLException sqle) { System.out.println(sqle.toString()); } catch(Exception ex) { System.out.println(ex.toString()); } } } });

(4)删除信息

删除时可以如果表grade里有该生成绩信息,则一并删除,如果没有则只删除表stud里的信息

下面是窗口属性 文件名称 shanchu.java 控件名称 private JButton butCancel,butOk; private JLabel jLabel1; private JTextField jtf1; private JPanel p; butOk=new JButton(\"删除\"); butCancel=new JButton(\"清空\") 删除按钮监听事件代码如下:

butOk.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ if(jtf1.getText().equals(\"\")){ new JOptionPane().showMessageDialog(null,\"请输入学号\"); } else { String sql=\"select * from stud where 学号=\" + \"'\" +jtf1.getText() +\"'\"; try{ if(database.query(sql)){//此处用了个database.executeSQL(sql)提示resultset 关闭 if(!database.rs.first())

{ JOptionPane.showMessageDialog(null,\"没有该学生信息...\"); } else {String sqq=\"delete from stud where 学号='\" +jtf1.getText() +\"'\";

String qll=\"delete from grade where 学号='\"+jtf1.getText() +\"'\"; String slq=\"select * from grade where 学号='\"+jtf1.getText()+\"'\"; if(database.query(slq)){ if(database.rs.first()){if(database.executeSQL(qll)){ } if(database.executeSQL(sqq)){JOptionPane.showMessageDialog(null,\"删除成功\");}

} } } } }

5 系统管理模块

重新登陆监听事件代码:

land.addActionListener(new ActionListener(){//重新登陆监听 public void actionPerformed(ActionEvent e){ System.out.println(\"Land\"); setVisible(false); new Land(); } });

退出菜单监听事件代码:

exit.addActionListener(new ActionListener(){//退出系统监听 public void actionPerformed(ActionEvent e){ setVisible(false); } });

五 尚未解决的问题

(1)学生众多,信息量大,在对其进行上录入,修改,删除时需要大量时间。 (2)在对大量数据进行长时间操作时,操作人由于疲劳很容易造成数据误差。 (3)由于系统只记录数据(发生过的事),不可能观察学生平时,对学生进行评秀评先时,可能有些偏差。

(4)没有在虚拟桌面中添加图片背景。

六 参考文献

(1)解析JAVA程序设计 甘玲 张璞 李兴春 清华大学出版社 2006版 (2)数据库系统概念(第五版)A.Silberschatz 高等教育出版社 出版日期不详

七 总结

本次数据库课程设计主要侧重在对学生信息管理里的添加、删除、修改、查看等最基本的操作,掌握这些最基本的设计思想是很重要的,能够帮助我们开发更加复杂的软件提供依据和基础,所以看似简单的课程设计,却是对我们设计软件系统的一次考验,一次磨练,所以我们一直都保持着很认真地精神来进行设计的,通过这次课程设计对数据库的概念有了更深一步的了解,也培养了我们对数据库课程设计的兴趣的,增强了设计软件系统的思维能力,虽然时间很短,但还是收获了很多,每次课程设计都是一种锻炼。在今后的学习里,一定要更加努力,学好这门计算机专业学生必须学好的专业课。

因篇幅问题不能全部显示,请点此查看更多更全内容