学生信息管理系统 |
您所在的位置:网站首页 › c语言学生管理系统项目概述 › 学生信息管理系统 |
1 绪论
1.1 项目概述 该系统使用Java语言,意义可概括为以下几点: 学生信息管理系统,首先由管理员增加、删除、修改、查找、导入教师信息,再有教师界面登录不同的教师类别,辅导员老师负责增加、删除、查找、学生的相关信息、教务老师负责增加、删除、修改、查找、有哪些课程的相关信息、授课教师负责增加、删除、修改、查找、学生本门课的分数,学生通过注册将信息加到数据库中,再进行登录,学生可以通过本系统来查成绩、查询及修改个人信息,并查询所在班级有哪些课程安排。 1.2 项目意义 (1)保证信息的准确性和时效性,随时通过计算机对系统进行管理,使得学生信息处于最新状态,保证统计数据和分析的准确。 (2)减轻劳动强度、提高工作效率、增加学生管理的透明度。高校学生管理信息系统可以发挥计算机的强大功能,让管理人员从大量繁琐的手工劳动中解放出来,将单调枯燥的纸张涂写变成灵活的电子信息操作。并充分利用网络优势,加快学校内部学生信息和文档的发布、传送和获取,改善和优化学生工作,使各个部门之间的工作联系紧密、井然有序、清楚明晰,大大减轻工作负担,提高工作效率,增加学生管理的透明度。 (3)降低管理成本,由于采用本系统的原因,使辅导员管理工作一改往日埋在各种表格中的被动局面,基本实现了无纸化办公,根除了很多日常管理中的浪费现象,体现出现代化学生管理的优势。 (4)规范化管理,由于采用了计算机统计分析学生信息,一些原始信息在录入时就必须要求准确录入,这就要求管理人员在提供信息时要准确,同时要求在录入时也要十分认真,这样做是为了将错误降到最低,提高系统工作的准确率,从而实现学生管理工作规范化。 2 开发工具和相关技术简介 本项目是教务信息管理系统。开发环境:Eclipse、MySQL;开发语言:Java语言;开发技术:JDBC等。本章将对开发工具和相关技术进行简单介绍。 2.1 Eclipse简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse的设计思想:一切皆为插件。其底层封装了一个核心,其他功能都基于此核心写成插件。从而扩展整个Eclipse的功能。 2.2 Java语言介绍Java语言是一款面向对象的一款高级语言是由Sun Microsystems公司(现已被Oracle公司收购)。由James Gosling和同事们共同研发,并在1995年正式推出,据Oracle官方数据指数,目前全球已有上亿的系统是使用Java开发的。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 Java语言的优点: (1)跨平台性:跨平台性是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。Java自带的虚拟机很好地实现了跨平台性。 (2)简单:Java语言是一种相当简洁的“面向对象”程序设计语言。 (3)面向对象:面向对象技术使得应用程序的开发变得简单易用,节省代码。 (4)安全性:Java编译时要进行Java语言和语义的检查,保证每个变量对应一个相应的值,编译后生成Java类。 (5)多线程:是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程处理能力使得程序能够具有更好的交互性、实时性。 因此,在进行后台系统开发时采用了Java语言。 2.3 MySQL简介MySQL是一种DBMS,而且是一种一个小型的开源的关系型数据库管理系统。2008年1月16日MySQL AB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。 MySQL它在世界范围内得到了广泛的安装和使用,应该是使用人数最多的数据库软件了,因为它有着这样的特性: 成本——MySQL是开源软件,可以免费使用和修改。 性能——MySQL性能很好处理速度很快。 简单——MySQL很容易安装和使用,对新手友好。 MySQL数据库软件也是使用最常用的数据库管理语言:结构化查询语言(SQL)进行数据库管理和操作。 2.4 JDBC技术简介JDBC是一种用于SQL语句的Java API,由一组类和接口组成,通过调用这些类和接口所提供的方法,可以使用标准的SQL语言来存取数据库中的数据。 SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为 ,JDBC不能直接操作数据库,JDBC通过接口加载数据库的驱动,然后操作数据库。JDBC:Java Data Base Connectivity,它主要由接口组成。组成JDBC的2个包为java.sql和javax.sql。开发JDBC应用需要这2个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。 3 系统需求分析 3.1 系统可行性分析 (1)技术可行性 该程序使用Eclipse编译器,采用的Java语言,Java面向对象,GUI图形界面,MySQL数据库,技术上是可行的。 (2)经济可行性 该程序使用Eclipse编译器是免费的,该软件能满足设计的基本的需求,不需要额外的开销,经济上是可行的。 (3)操作可行性 该程序只需用户安装Eclipse编译器并配置好环境变量就可以使用,GUI也在Eclipse编译器上安装了Window Builder插件,操作简单便捷。符合大部用户的使用习惯。操作上是可行的。 (4)法律可行性 在法律上是合法的,所以是可行的。 3.2 系统需求分析(1)管理员:增删改查老师信息(工号 姓名 密码) (2)老师:登录不同类别老师(工号 密码) 2.1 辅导员老师:增删学生信息,查看学生信息 2.2 教务老师进行课程管理(增删改查): 课程编号 课程信息 课程学时 授课教师 班级 例: 00001 Java实训 64学时 李老师 计科3 2.3课程教师:增删改查学生分数 (3)学生:登录或注册(学号 密码) 3.1查成绩 3.2修改和查询个人信息 3.3所在班级有哪些课程安排(输出课程编号信息) 图3-1 用户角色关系图
图3-2 管理员用例图
图3-3 教务教师用例图
图3-4 课程教师用例图 图3-5 辅导员教师用例图
图3-6 学生用例图 3.3 组内成员分工表3-1 组内成员分工情况表 序号 姓名 组内角色 小组分工 备注 1 董姿熳 项目经理 教师2操作 图形界面设计 测试
2 胡瑶瑶 架构师 教师1.3操作 测试
3 胡雅楠 测试 管理员相关操作 测试 绘图
4 王旭 编码 学生相关操作
说明:组内角色:组长为项目经理;其他人分别为编码、测试、架构师等。 3.4 进度安排进度安排如表3-2所示。 表3-2 进度安排表 阶段 持续时间 阶段描述 输出 构思阶段 5小时 需求分析 需求说明,功能模块图 设计阶段 1天 系统设计 设计说明-可以画流程图;数据库设计 是现阶段 2天 编写代码 项目工程源代码 1天 系统测试 进行黑盒测试(功能测试)-测试说明 运行阶段 5天 部署、运行 系统使用说明、运维报告-答辩
4 系统设计 4.1 系统设计 根据系统的实际功能需求分析,对系统功能部分进行了设计。 登录界面有管理员、教师、学生三种选项,选择不同的身份进入不同的操作。 管理员登录后对教师进行增加、修改、查询、删除的操作,删除操作是当教师离职时可从系统中删除,保留最新数据的同时也减小了存储空间的消耗。 教师登录界面分为三种不同的类别,每个类别的老师各司其职,更符合常规逻辑。辅导员老师增删查学生的个人信息,查看/查找有两种方式,查看每人或者全体查看。课程老师添加需要上课的信息。授课教师管理学生的分数。 学生注册登录,查看及修改个人信息、做到及时更新最新信息,学生也可以查询成绩等。 4.2 数据库设计根据系统需求分析设计了5张表,分别为管理员信息表、教师信息表、学生信息表、课程表、学生成绩表。具体信息如表4-1到表4-5所示。一下为参考,可以按照自己的需求修改
表4-1 管理员信息表 序号 字段名 数据类型 约束 是否为空 说明 1 aid varchar(10) 主键 否 管理员ID 2 apassword varchar(20)
否 管理员密码
教师信息表主要记录了教师的基本信息,如表4-2所示。 表4-2 教师信息表 序号 字段名 数据类型 约束 是否为空 说明 1 tid varchar(10) 主键 否 工号 2 tname varchar(10)
否 昵称 3 txueyuan varchar(10)
否 所属学院 4 tpassword varchar(20)
否 教师密码
学生信息表主要记录了学生的基本信息,如表4-3所示。 表4-3 学生信息表 序号 字段名 数据类型 约束 是否为空 说明 1 sid varchar(10) 主键 否 学号 2 sname varchar(10)
否 昵称 3 sxueyuan varchar(10)
否 所属学院 4 spassword varchar(20)
否 教师密码 5 sclass varchar(10)
否 班级 6 sgender varchar(10)
否 性别 7 smajor varchar(10)
否 专业 8 sbirthday varchar(10)
否 生日
课程表主要记录了课程的基本信息,如表4-4所示。 表4-4 课程表 序号 字段名 数据类型 约束 是否为空 说明 1 cid varchar(10) 主键 否 课程编码 2 cname varchar(10)
否 课程信息 3 ctime varchar(10)
否 授课时长 4 tid varchar(10)
否 上课的人 5 smajor varchar(10)
否 哪个专业
学生成绩表主要记录了学生的成绩,如表4-5所示。 表4-5 学生成绩表 序号 字段名 数据类型 约束 是否为空 说明 1 cid varchar(10) 主键 否 课程编码 2 cname varchar(10)
否 课程信息 3 score varchar(10)
否 成绩 4 sid varchar(10)
否 上课的人
5 系统实现 5.1 系统代码实现 添加教师信息 button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String tid = textField.getText(); String tname = textField_1.getText(); String txueyuan = textField_2.getText(); String tpassword = textField_3.getText(); try { statement = cc.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,//查询是否已经存在 ResultSet.CONCUR_UPDATABLE); String sql4="select * from user.teacher where tid="+tid+""; ResultSet rs=statement.executeQuery(sql4); rs.last();//获取最后一条数据的信息 if(rs.getRow()!=1) {//获取当前信息的行数 String sql="insert into user.teacher values ("+tid+",'"+tname+"','"+txueyuan+"','"+tpassword+"')"; statement.executeUpdate(sql); JOptionPane.showMessageDialog(null,"添加成功!"); textField.setText(null); textField_1.setText(null); textField_2.setText(null); textField_3.setText(null); }else { JOptionPane.showMessageDialog(null,"该工号已存在!"); } } catch (SQLException ex) { ex.printStackTrace(); } } });
button_1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new admin().setVisible(true);//监听返回上一级 dispose(); }
}); 删除教师信息 JButton button = new JButton("确定删除"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Statement statement=null; String tid = textField.getText(); try { statement = cc.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql4="select * from user.teacher where tid="+tid+"";//根据id删除 ResultSet rs=statement.executeQuery(sql4); rs.last();//获取最后一条数据的信息
if(rs.getRow()==1) {//获取当前信息的行数 String sql2="delete from user.teacher where tid="+tid+""; statement.executeUpdate(sql2);//将sql2语句上传至数据库执行 JOptionPane.showMessageDialog(null,"删除成功!"); textField.setText(null); }else { JOptionPane.showMessageDialog(null,"该ID不存在!"); }
} catch (SQLException ee) { ee.printStackTrace(); } } }); 查找教师信息 JButton button = new JButton("确定查找"); button.setFont(new Font("宋体", Font.BOLD, 16)); button.setBounds(47, 297, 107, 47); contentPane.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResultSet rs=null; //Statement statement=null; String tid = textField.getText(); PreparedStatement ps=null; try { //statement = cc.createStatement(); String sql = " select* from user.teacher where tid = ?"; ps = cc.prepareStatement(sql); ps.setString(1, tid); rs = ps.executeQuery(); //比较 相等则登入 if(rs.next()) { //JOptionPane.showMessageDialog(null, "登录成功!");
String id=rs.getString("tid");; String name=rs.getString("tname"); String xueyuan=rs.getString("txueyuan"); String password1=rs.getString("tpassword"); JOptionPane.showMessageDialog(null,"ID:"+id+"\n\t"+"姓名:"+name+"\n"+"学院:"+xueyuan+"\n\t"+"密码:"+password1+"\t");
}else { JOptionPane.showMessageDialog(null,"该ID不存在!"); }
} catch (SQLException e1) { e1.printStackTrace(); }
try { //cc.close(); //statement.close(); rs.close(); } catch (SQLException ee) { ee.printStackTrace(); }
} }); 查看全体教师 public aquankan() { this.setBounds(200,200,500,400); this.setVisible(true); Statement statement=null; ResultSet rs=null; try { //访问数据库 this.setTitle("全体教师信息"); statement=cc.createStatement(); String sql4="select * from user.teacher";//sql4语句 rs=statement.executeQuery(sql4); //将sql4语句传至数据库,返回的值为一个字符集用一个变量接收
rs.last();//游标移动到查询到的数据库数据记录的最后一条 int row=rs.getRow();//获取记录的总条数 rs.beforeFirst();//游标回到第一个记录前的位置 String arr[]= {"工号","姓名","学院","密码"};//定义表格的列名称
String comm[][] = new String[row][4];//row行,4列 rs.next(); for(int i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |