学生选课信息管理系统课程设计报告_第1页
学生选课信息管理系统课程设计报告_第2页
学生选课信息管理系统课程设计报告_第3页
学生选课信息管理系统课程设计报告_第4页
学生选课信息管理系统课程设计报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计报告 -学生信息管理系统 一、系统开发平台1.1 题目:学生选课管理信息系统n (1) 要求系统可以准确地记录和查询学生信息,包括学生的姓名、单位、年龄、性别以及身份证号码等。n (2) 要求系统可以准确地记录学生地每一次奖惩情况。n (3) 系统可以对学校的院系情况进行管理,包括设置学院名称、修改某学院某专业方向的名称等。n (4) 系统应该可以对基础数据进行维护。n (5)系统能够对开设的课程进行管理n (6)学生选课管理、考试(登记分数)n (7)系统还应该提供强大数据统计、查询、报表生成以及打印等功能。n (8)用户权限管理n (9)异常处理1.2 开发语言:Java用Java做设计流程清晰、结构合理,有良好的可扩充性和耦合性。1.3 开发工具:Eclipse1.4 数据库: MySQL1.5 操作系统:Microsoft Windows 8.1二、数据库规划2.1 任务陈述n (1) 要求系统可以准确地记录和查询学生信息,包括学生的姓名、单位、年龄、性别以及身份证号码等。n (2) 要求系统可以准确地记录学生地每一次奖惩情况。n (3) 系统可以对学校的院系情况进行管理,包括设置学院名称、修改某学院某专业方向的名称等。n (4) 系统应该可以对基础数据进行维护。n (5)系统能够对开设的课程进行管理n (6)学生选课管理、考试(登记分数)n (7)系统还应该提供强大数据统计、查询、报表生成以及打印等功能。n (8)用户权限管理n (9)异常处理2.2 任务目标本系统主要可以实现以下任务目标:1、系统可以准确地记录和查询学生信息,包括学生的姓名、专业、生日、性别以及身份证号码等,可以准确地记录学生的每一次奖惩情况。2、系统可以对学校的院系情况进行管理,包括添加查询修改删除学院信息、添加查询修改删除某学院某专业信息等。3、系统可以准确地记录和查询教师信息,包括教师的姓名、专业、生日、性别以及身份证号码等。4、系统可以对开设的课程进行管理,包括课程信息的查询、添加、修改和删除,选课阶段、已开课、统计成绩、公布成绩三种状态。5、系统可以对基础数据进行维护。6、学生选课管理,学生只可以注销在选课阶段的课程,处于已开课、统计成绩、公布成绩的课程不可以注销。7、系统可以提供强大数据统计、查询、报表生成以及打印等功能。8、用户权限管理:本系统一共设置了三种用户身份,分别是管理员用户、教师用户和学生用户。院系管理员可以管理增改删查所有学院情况、课程、老师、学生情况,修改密码教师用户拥有修改、查看那自己所授课程和录入成绩的权限,修改密码学生用户则拥有查询学籍信息、查询课程信息、选课、注销选课和查询成绩信息的权限。9、异常处理。三、系统定义3.1 系统边界系统边界描述数据库系统和企业信息系统的其他部分的接口,是信息系统内部构成元素与外部有联系实体之间的信息关系的描述与分割。它并不需要在它们之间划一条物理边界,而只需要弄清它们之间信息输入与输出的分割。本数据库系统共包括学生信息、教师信息、课程信息、学院及专业信息、选课信息、授课信息及成绩信息八个模块。该信息系统的其他部分包括学生专业选择、教师配置、学生选课、学院设置、课程要求、具体教学等。数据库系统的内部构成元素与外部其他部分之间的信息关系如下图所示:从属于学院信息管理员方向信息增改删查书于包含于工作于课程信息选修教授课程老师信息信息增改删查增改删查教师学生学生信息3.2 用户视图 3.2.1 学生(Student)用户视图(1) 修改个人信息。(2) 按课程名、课程号、专业、学分等信息查询课程,选课和查询已选课程。(3) 注销选课(只能注销选课阶段的课程,已公布成绩的课程不可注销)。(4) 成绩查询(教师公布成绩后学生方可查看到自己的成绩)。3.2.2 教师(Teacher)用户视图(1) 修改个人信息。(2) 修改所授课程的信息(一名教师可教授多门课程)。(3) 录入、查看成绩(录入成绩的课程状态为“统计成绩” ,成绩录入的权限只有教师用户有)。(4) 公布成绩(公布成绩后学生方可查看到自己的成绩)。(5) 备选功能:自动计算所授课程的选课人数、有成绩人数、平均成绩,且按成绩由高到低排序。查看所授课程选课情况。教师可以自主选课(教师所在学院方向的课程)。3.2.3 学院管理员(Administrator)用户视图(1) 学生管理:查询、添加、修改、删除学生信息,添加学生奖惩信息(2) 教师管理:查询、添加、修改、删除教师信息。(3) 课程管理:查询、添加、修改、删除课程信息。(4) 选课管理:查询选课信息,添加选课信息(修改选课信息权限只有学生用户有),修改选课状态(选课阶段、已开课、统计成绩、公布成绩、结束)。(5) 授课管理:查询、添加、修改、删除授课信息。(6) 专业管理:查询、添加、修改、删除专业信息。(7) 学院管理:查询、添加、修改、删除学院信息。(8) 管理员操作:查询、添加、修改、删除学院管理员信息。(9) 修改个人信息。3.2.4 数据库系统多用户视图管理员教师学生四、需求分析此学生管理信息系统的主要功能如下图所示:学生用户:修改个人信息、课程查询、选课、注销选课、成绩查询教师用户:修改个人信息、修改所授课程信息、查看学生选课信息、成绩录入管理员用户:学生管理、教师管理、课程管理、专业管理、学员管理、管理员操作4.1 用户需求说明4.1.1 数据需求其中需求数据为:1、 学生基本信息记录:用户名、姓名、身份证号、方向、性别、生日、密码、奖惩信息2、 教师基本信息记录:用户名、姓名、身份证号、方向、性别、生日、密码3、 管理员基本信息记录:用户名、密码、姓名、权限等级5、课程基本信息记录:课程号、课程名、所属方向、学分6、学院及专业基本信息记录:学院:学院名称,学院号方向:方向名称、所属学院7、选课信息管理:选课:学生用户选定课程的课程号、课程名、开课专业、学分、详细信息注销选课:学生用户注销选课的课程号、课程名、任课教师、学分、课程状态(只能注销状态为选课阶段的课程)8、授课信息管理:课程号、课程名、教师号、教师姓名、选课人数9、成绩信息管理:学生查看:课程号、课程名、任课教师、学分、状态、成绩教师录入:所授课程、学号、成绩教师查看:名次、学号、姓名、学院、专业、班级、成绩4.1.2 事务需求1、 数据录入:(1) 录入学生的基本信息:学号、姓名、所属专业、性别、生日、身份证号(2) 录入学生的选课信息(3) 录入教师的基本信息:学工号、姓名、院系、性别、生日、身份证号、研究方向(4) 教师录入学生的成绩信息:选择所授课程后,录入学号、成绩(5) 录入课程的基本信息:课程号、课程名、开课专业、学分(6) 录入授课信息:课程号、教师号(7) 录入专业信息: 专业名、所属学院(8) 录入学院信息:学院名、地址(9) 录入学院管理员的基本信息:管理员号、管理员姓名(10) 录入超级管理员的基本信息管理员号、管理员姓名2、 数据更新/删除:(1) 学生个人信息的更新(2) 学生注销选课信息(3) 教师个人信息的更新(4) 教师所授课程信息的更新(5) 教师录入成绩的更新/ 删除(6) 学生基本信息的更新/ 删除(管理员操作)(7) 教师基本信息的更新/ 删除(管理员操作)(8) 课程基本信息的更新/ 删除(管理员操作)(9) 选课状态的更新:分为选课阶段、已开课、统计成绩、公布成绩、结束(管理员操作)(11) 授课信息的更新(管理员操作)(12) 专业基本信息的更新/ 删除(管理员操作)(13) 学院基本信息的更新/ 删除(管理员操作)(14) 管理员个人信息的更新(管理员操作)数据查看:学生用户视图下:(1) 列出学生基本信息(2) 按照课程号列出课程的课程号、课程名、开课专业、学分教师用户视图下:(1) 列出教师基本信息(2) 列出所授课程的基本信息(3) 列出所授课程的学生选课信息:学号、姓名、所属专业、性别、生日、身份证号管理员用户视图下:(1) 按照学号列出学生的学号、姓名、所属专业、性别、生日、身份证号(2) 按照学工号列出教师的学工号、姓名、院系、性别、生日、身份证号、研究方向(3) 按照课程号列出课程的课程号、课程名、开课专业、学分(4)按照课程号列出选课信息:课程号、课程名、学号、学生姓名、教师号、教师姓名、状态、成绩(5)按照学生学号列出选课信息:课程号、课程名、学号、学生姓名、教师号、教师姓名、状态、成绩(6)按照教师学工号列出选课信息:课程号、课程名、学号、学生姓名、教师号、教师姓名、状态、成绩(7)按照课程号列出授课信息:课程号、课程名、教师号、教师姓名、选课人数(8)按照课程名列出授课信息:课程号、课程名、教师号、教师姓名、选课人数(9)按照教师学工号列出授课信息:课程号、课程名、教师号、教师姓名、选课人数(10)按照学院管理员号列出学院管理员的管理员号、姓名(11)按照超级管理员号列出超级管理员的管理员号、姓名4.2 系统需求说明 该学生选课管理信息系统需要较强的数据处理功能,理论上应该能够容纳上万人的数据资料,并且在搜索方面理应具有较快的响应速度,能够处理多方面的数据请求。权限设置清晰明了,能够有效的防止越权操作。系统能够有效的处理各种异常,具有较好的健壮性。4.2.1 初始数据库大小(1) 大约有10门课程,分属于约4个学院中,每个学院有10个以下的专业。(2) 大约有20名学生分布在各个学院,每个学院平均有2名学生。(3) 大约有20名教师分布在各个学院,每个学院平均有2名教师。(4) 大约有10名管理员分布在各个学院,每个学院平均有1名学院管理员。(5) 每名学生一学期平均选择2门课程。(6) 每名教师平均所授课程为2门。4.2.2 网络和共享需求(1) 所有学院必须安全的和总部中央数据库网络互连(2) 必须能够支持每个学院至少300名用户同时访问,需要考虑这么大数量并发访问的许可需求。性能:4.2.3 性能高峰期:每年的1月、3月、6月、9月(1) 单个记录查询时间少于1秒,高峰期少于5秒(2) 多个记录查询时间少于5秒,高峰期少于10秒(3) 更新/保存记录时间少于1秒,高峰期少于5秒4.2.4 安全性(1) 数据库必须有口令保护(2) 每个用户分配特定的用户视图所应有的访问权限(3) 用户只能在适合他们完成工作需要的窗口中看到需要的数据4.2.5 备份和恢复每天24点备份4.2.6 用户界面菜单驱动,联机帮助4.2.7 法律问题对用户信息管理,遵守法律五、数据库逻辑设计5.1 ER图【3】:本系统的ER图如下:实体: 联系: 属性: 课程教师学生学院专业授课选课工作于属于包含passwordnamecreditTidnamenameidentitydirectionsexSidpasswordCididentitybirthnamebirthDeptidsexnamestatescoredirectionDidm mn n m m 3 Abraham Silberschatz,Henry F.Korth,数据库系统概念,机械工业出版社,2008。1 11 m该ER图包括课程、教师、学生、学院、专业五个实体和授课、选课、工作于、属于、包含五个联系。5.2 数据字典5.2.1 从数据字典中抽取出来的系统实体描述:实体属性描述数据类型和长度主键是否允许空值学院管理员Admin_id管理员用户名Varchar32Admin_id否Password密码Varchar32否Name 姓名Varchar32否Dept所属学院Varchar32否Regist_date注册日期Varchar32是学生Sid学生用户名Varchar32Sid否Password密码Varchar32否Name姓名Varchar32否Dept学院Varchar32否Major专业Varchar32否Sex性别Varchar32否Birth生日Varchar32否Identity身份证号Varchar32否教师Tid教师用户名Varchar32Tid否Password密码Varchar32否Name姓名Varchar32否Dept学院Varchar32否Direction研究方向Varchar32是Sex性别Varchar32否Birth生日Varchar32否Identitiy身份证号Varchar32否课程Cid课程号Varchar32Cid否Name课程名Varchar32否Parent_major所属专业Varchar32否Credit学分Float8否学院Name学院名称Varchar32Deptid否Deptid学院号Varchar32是课程状态ID状态号Varchar32ID否State状态Varchar32否专业Name专业名称Varchar32Did否Did专业号Varchar32否Parent_college所属学院Varchar32否荣誉R_id荣誉号Varchar32Did否Reward荣誉Varchar32否5.2.2 从数据字典中抽取出来的联系的描述:实体多样性联系多样性实体教师m授课n课程学生m选课n课程教师m工作于1学院学生m属于1专业学院1包含m专业5.3 关系表该数据库关系图如下:其中包含的联系有:实体联系实体教师授课课程学生选课课程教师工作于学院学生属于专业学院包含专业学生拥有荣誉课程拥有状态六、数据库物理设计6.1 安全机制6.1.1 系统安全1、提供了充足的异常处理机制,能够捕获由各种错误引发的异常(如:越权操作、输入数据类型与数据库要求类型不一致、查询过程中出现的错误等等)。2、系统登录时要凭用户名和口令进入,输入正确时才可以进入系统。用户需要选择自己的身份(学生、教师、管理员),若用户名和密码输入正确,系统可以打开符合该用户身份的操作界面。其他界面该用户没有权限访问。6.1.2 数据安全1、根据用户身份,用户进入不同的用户界面,即享有不同的权限,只有管理员才可以实现修改一些重要信息,以确保数据库不被随意更改,保证数据安全。2、该学生系统共有三种身份:学生、教师、管理员。他们相应的权限如下:(1)学生:查看修改个人信息、查看课程信息、选课/注销选课(只有在选课阶段的课程才可以注销)、查看自己所选课程成绩(教师公布成绩后学生方可查看到自己的成绩)。(2)教师:查看修改个人信息、查看修改所授课程信息(一名教师可教授多门课程)、查看所授课程的学生选课情况、成绩录入(录入成绩的课程状态为“统计成绩” ,成绩录入的权限只有教师用户有)、公布成绩(公布成绩后学生方可查看到自己的成绩)。(3)管理员:添加删除修改查看学生信息、添加删除修改查看教师信息、添加删除修改查看课程信息、添加删除修改查看学院信息、添加删除修改查看专业信息、添加查看选课信息(修改选课信息权限只有学生用户有)、修改课程状态、添加修改查看授课信息、添加删除修改查看其他管理员信息、查看修改个人信息。6.2 其他规范化产生一个结构上一致且最小冗余的逻辑数据库设计,但是,规范化的数据库设计有时不能提供最大的处理效率。所以我们愿意接收规范化设计方面的一些损失而实现更好的性能。在该系统中,表“学生”中复制了表“专业”的“所属学院”一列,加快了检索速度,方便通过列“学院”来查询特定学院的学生,也方便形成某学院的视图。七、应用程序设计7.1 功能模块该学生管理信息系统共有三个角色:学生、教师、管理员7.2 界面设计登录界面7.3 代码设计连接数据库:String url=jdbc:mysql:/localhost:3306/dbsml? + user=dbsml & password=28129; Connection con; String sql; Statement stmt;try Class.forName(com.mysql.jdbc.Driver); System.out.println(4); conn=DriverManager.getConnection(url,dbsml,28129); stmt=conn.createStatement();catch (SQLException e) System.out.println(MySQL操作错误); e.printStackTrace();增加:System.out.println(actionPerformed4);b4.setPreferredSize(new Dimension(120, 40);b4.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / / TODO Auto-generated method stubtry jt.print(); catch (PrinterException e1) / TODO Auto-generated catch blocke1.printStackTrace(););删除:try con=DriverManager.getConnection(url,dbsml,28129); stmt=con.createStatement(); sql = select * from course where C_id = + t1.getText() + ; ResultSet rs = stmt.executeQuery(sql); if(rs.next() sql=DELETE FROM course WHERE(C_id=+t1.getText()+); stmt.executeUpdate(sql); sql=DELETE FROM tc WHERE(C_id=+t1.getText()+); stmt.executeUpdate(sql); sql=DELETE FROM sc WHERE(C_id=+t1.getText()+); stmt.executeUpdate(sql); JOptionPane.showMessageDialog(this,删除课程成功!,提示,JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(this,此课程不存在!,提示,JOptionPane.INFORMATION_MESSAGE); stmt.close(); con.close(); catch(SQLException e2) e2.printStackTrace(); t1.setText(); 查询:try sql = SELECT * FROM + getTable() + WHERE + chooseState() + = + t1.getText() + + and + getPassword() + = + t2.getText() + ; System.out.println(sql); ResultSet rs = stmt.executeQuery(sql); if(rs.next() result = true; System.out.println(result); stmt.close(); conn.close();catch (SQLException e) System.out.println(MySQL操作错误); e.printStackTrace(); catch (Exception e) e.printStackTrace(); 获取Choice状态:public int getState()System.out.println(7);int state = 1;if(c.getSelectedItem().equals(管 理 员)state = 1;System.out.println(8);else if(c.getSelectedItem().equals(教 师)state = 2;System.out.println(9);else if(c.getSelectedItem().equals(学 生)state = 3; System.out.println(10);return state;给Choice增加查询到的itempublic void addChoice() throws SQLException / TODO Auto-generated method stubSystem.out.println(addChoice);conn = getConnection();stmt = conn.createStatement();sql = select C_name from teacher natural join tc natural join course where T_id = +DLA.t1.getText()+;ResultSet rs = stmt.executeQuery(sql);System.out.println(sql);while(rs.next()c.add(rs.getString(1);给TableModle加数据class MyTableModel1 extends AbstractTableModelString kcnum,kcname,score;final String columnNames=课程号,课程名,学分;Objectdata=new Object1003;public MyTableModel1()int m=0; String url=jdbc:mysql:/localhost:3306/dbsml? + user=dbsml & password=28129; Connection con; String sql; Statement stmt; try Class.forName(com.mysql.jdbc.Driver); catch(java.lang.ClassNotFoundException e) try con=DriverManager.getConnection(url,dbsml,28129); stmt=con.createStatement(); sql=SELECT * FROM tc natural join course WHERE T_id=+DLA.t1.getText()+; ResultSet rs=stmt.executeQuery(sql); while(rs.next()kcnum=rs.getString(1);kcname=rs.getString(3);score=rs.getString(5);datam0=kcnum;datam1=kcname;datam+2=score; stmt.close(); con.close();catch(SQLException e)public int getColumnCount()return columnNames.length;public int getRowCount()return data.length;public String getColumnName(int col)return columnNamescol;public Object getValueAt(int row,int col)return datarowcol;public void setValueAt(Object value,int row,int col) int numRows=getRowCount();int numCols=getColumnCount();for(int i=0;inumRows;i+)for(int j=0;jnumCols;j+)System.out.print( +dataij);打印:下载:int m=0;System.out.println(actionPerformed3);Boolean result=false;tryClass.forName(com.mysql.jdbc.Driver);System.out.println(4); conn=getConnection();Statement stmt=conn.createStatement();System.out.println(5);String sql = select C_name,S_id,S_name,State_name,score from sc + natural join student natural join state natural join tc natural + join course + where T_id=+DLA.t1.getText()+and C_name = +getChoice()+;System.out.println(sql);ResultSet rs = stmt.executeQuery(sql);rs.last();int temp=rs.getRow();rs.beforeFirst();o2=new Objecttemp5;while(rs.next()System.out.println(rs.getString(1);o2m0=rs.getString(1);o2m1=rs.getString(2);o2m2=rs.getString(3);o2m3=rs.getString(4);o2m+4=rs.getString(5);System.out.println(result);stmt.close();conn.close();catch (SQLException c) System.out.println(MySQL操作错误); c.printStackTrace(); catch (Exception d) d.printStackTrace(); JFileC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论