CS结构教务管理系统设计计划书.doc_第1页
CS结构教务管理系统设计计划书.doc_第2页
CS结构教务管理系统设计计划书.doc_第3页
CS结构教务管理系统设计计划书.doc_第4页
CS结构教务管理系统设计计划书.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

CS结构教务管理系统设计计划书1.开发环境和相关技术介绍1.1开发环境系统结构:C/S结构数据库系统:Microsoft SQL Server 2000 宿主语言:JAVA数据库连接方式:ODBC连接方式开发工具:NetBeans IDE 6.0.11.2相关技术介绍Microsoft SQL Server 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。NetBeans:Sun专门为java设计开发的功能强大的应用程序开发工具,主要支持基于Java语言的各种开发项目。ODBC连接方式:Java与数据库系统的一种连接方式,Java程序使用ODBC API与数据库进行通信,并用它操作数据库中的数据。ODBC API使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。2.需求分析2.1系统需求和功能1、教学管理系统1)信息需求:(1) 学生信息:学号、姓名、性别、出生日期、入学成绩、所在系号。(2) 教职工信息:职工号、姓名、性别、出身年月、所在系号、职称、专业及教学方向。(3) 系的基本信息:系号、系名称、系的简介。(4) 课程信息:课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间。(5) 成绩信息:学号、课程号、平时成绩、考试成绩、总评成绩。2)处理需求:(1) 学生基本信息管理新生信息录入。学生信息修改:按学号查询出某学生的信息并做信息修改。*学生转学(转入和转出),学生毕业等。毕业和转学的学生有关信息存储到历史库中。(2) 系基本信息管理:系的基本信息输入、修改、删除(3) 课程信息管理:课程信息的输入、修改、删除(4) 教职工信息管理:教职工信息的输入、修改、删除(5) 选课管理: 每学期所选课程的学分不能超过15分。学生可以同时选修一门或多门课程。 可以同时为多个学生选修某一门或某几门课程。删除和修改选课信息。(6) 成绩管理按课程输入和修改成绩。按学生输入和修改成绩。(7) 信息查询按学号、姓名、系号查询学生基本信息。按职工号、姓名、系号查询教职工基本信息。按系号、系名称查询系的基本信息。按课程号、课程名称、上课教师姓名查询课程基本信息。按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。若查询涉及多门课程,则按课程分组。每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。(8) 统计报表成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:顺序输出所有课程的成绩登记表。按课程号、课程名称、教师姓名输出对应课程的成绩登记表。*按系号输出对应课程的成绩登记表(本系所有教师担任的课程)。成绩报表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间),选课学生名单(学号、姓名、性别),每个学生的平时成绩、考试成绩和总评成绩,=90分、=80分、=70分、=60分及不及格学生的人数及比例,按学号排序:顺序输出所有课程的成绩报表。按课程号、课程名称、教师姓名输出对应课程的成绩报表。*按系号输出对应课程的成绩报表(本系所有教师担任的课程)。2.2数据字典2.2.1数据结构管理员用户=管理员帐户+管理员密码学生=学号+姓名+性别+出生日期+入学成绩+所在系号教职工=职工号+姓名+性别+出生年月+所在系号+职称+教学方向系=系号+系名称+系的简介课程=课程号+课程名称+任课教师号+学时+学分+上课时间+上课地点+考试时间成绩=学号+课程号+平时成绩+考试成绩+总评成绩2.2.2数据项表2.1 学生信息表编号标识符类型长度所属表名同义名1 用户名char10User_information管理员帐户2 密码char10User_information管理员密码3 学号int4student,grade_information学生学号4 姓名Char10student学生姓名5 性别char10student学生性别6 出生日期char10student学生出生日期7 入学成绩Int4student学生入学成绩8 系号Int4Student,xi_information学生所在系号表2.2 教师信息表编号标识符类型长度所属表名同义名1职工号int4teacher,course_information教师职工号2姓名char10teacher教师姓名3性别char10teacher教师性别4出生年月char10teacher教师出生年月5系号int4teacher,xi_information教师所在系号6职称char10teacher教师职称7教学方向char10teacher教师的教学方向表2.3 课程信息表编号标识符类型长度所属表名同义名1课程号int4course_information,grade_information课程编号2课程名称char10course_information课程名称3职工号int4course_information,teacher教师职工号4学时int4course_information课程学时5学分float8course_information课程学分6上课时间char10course_information教程上课时间7上课地点char10course_information课程上课地点8考试时间char10course_information课程考试时间表2.4 成绩信息表编号标识符类型长度所属表名同义名1学号int4grade_information,student学生学号2课程号int4grade_information,course_information课程编号3平时成绩int4grade_information学生该课程的平时成绩4考试成绩int4grade_information学生该课程的考试成绩5总评成绩int4grade_information学生该课程的总评成绩表2.5 系信息表编号标识符类型长度所属表名1系号int4xi_information,student,teacher2系的名称char10grade_information,course_information3系的简介text16grade_information用户基本信息表学生基本信息表教职工基本信息表系基本信息表课程基本信息表管理员处理学生基本信息处理职工基本信息处理系基本信息处理课程基本信息储存修改后的学生信息储存修改后的职工信息储存修改后的系信息储存修改后的课程信息显示输出相应的信息处理成绩基本信息成绩基本信息表储存修改后的成绩信息2.3 数据流图2.4 安全性分析访问数据库时需要输入登陆帐号和密码。在数据库内设有管理员表,登陆系统时会要求输入管理员帐号和密码。登陆模块根据输入帐号和密码查管理员表,查到匹配记录则允许其登陆系统。管理员帐号和密码只能在管理员表里修改,这样就能更好地加强安全性。同时,本系统为了增加安全性,在用户登陆4次不成功后,将当作恶意登陆,而关闭登陆界面!2.5一致性要求在管理系统相关的表之间,有较强的关联性。为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。2.6完整性要求根据教学管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致。3 概念结构设计3.1设计方法和步骤本系统采用自底而上的设计方法。先自顶向下地进行需求分析,然后再自底而上地设计各个表,最终将各个局部应用的功能集合成为一个完整的系统。3.2概念结构E-R图登 陆用户名密码判断主界面选择选择学生教职工系课程学号学时职工号姓名性别出生日期所在系号教学方向基本信息选课管理成绩管理信息查询统计报表成绩登记表选课情况按课程按学生查询学生查询教师查询课程查询成绩查询系学分名称教师号考试时间上课地点上课时间课程号系号系名称系的简介出生日期所在系号入学成绩性别姓名成绩报表通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,再消除系统冗余: 1 1 1 n n n 1 n n n n n n HAPE * MERGEFORMAT 4.逻辑结构设计4.1关系模式设计与优化4.1.1关系模式设计根据概念结构的设计,可以将系统E-R图转换为以下关系模式:User_information(管理员帐户, 管理员密码)student(学号, 姓名, 性别, 出生日期, 入学成绩, 所在系号)teacher(职工号, 姓名, 性别, 出生年月, 所在系号, 职称, 教学方向)Xi_information(系号, 系名称, 系的简介)course_information(课程号, 课程名称, 任课教师号, 学时, 学分, 上课时间, 上课地点, 考试时间)course_information(学号, 课程号, 平时成绩, 考试成绩, 总评成绩)4.2具体RDBMS数据模型转换由于Microsoft SQL Server 2000系统支持上述数据模型,所以不用进行特定的转换。4.3系统结构图登录(管理员) 基本信息管理选课管理成绩管理信息查询统计报表学生基本信息系基本信息课程基本信息教职工基本信息选课情况管理按课程管理按学生管理查询学生基本信息查询教职工信息查询系基本信息查询课程基本信息查询学生成绩成绩等级表管理成绩报表管理4.4系统完整性设计 Customer (Cid, Cname, Phone, Address)其中:Cid为主码,Address约束为非空User_information(管理员帐户, 管理员密码)其中,(管理员帐户, 管理员密码)为主码student(学号, 姓名, 性别, 出生日期, 入学成绩, 所在系号)其中学号为主码teacher(职工号, 姓名, 性别, 出生年月, 所在系号, 职称, 教学方向)其中职工号为主码Xi_information(系号, 系名称, 系的简介)其中系号为主码course_information(课程号, 课程名称, 任课教师号, 学时, 学分, 上课时间, 上课地点, 考试时间)其中课程号为主码course_information(学号, 课程号, 平时成绩, 考试成绩, 总评成绩)其中,没有设主码,应该一个学号可以对应多个课程号,一个课程号也可对应多个学号。5.数据库物理设计5.1索引的选择建立由于系统可能要涉及大量数据的操作,所以索引的建立就成为一种必需。本系统采用B+树索引方法,分别在各Customer,Diretory,Order和OrderDetail各个表的主键上建立索引。5.2数据存放位置本系统数据和索引存放在磁盘中。5.3确定系统配置根据具体需要配置。6.数据库实施6.1数据库创建6.1.1各数据表说明表6.1 数据表描述表编号数据表名称类型内容01User_information辅助表记录管理员帐号,密码02Student主表记录学生信息03Teacher主表记录教师信息04Grade_information主表记录学生成绩信息05Course_information主表记录课程信息06Xi_information主表记录系的基本信息6.1.2数据库创建直接在Microsoft SQL Server 2000的企业管理器中完成。6.2数据库备份和恢复方案6.2.1应用辅助工具进行备份和恢复应用数据库辅助工具(如sqlbackuptools)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。6.2.2分离数据库法在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库MDF文件和LDF文件。恢复方案:在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。6.3用户界面设计和应用程序编码6.3.1用户界面设计本系统的用户界面用Java Swing编写,主要由1个登陆界面Main.java,一个主界面Main_interface.java和18个辅助对话框组成。主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。6.3.2类文件功能描述NO.类名类型功能01Main_interfaceJFrame主窗口类,提供系统主要功能的调用接口02StuinforinputStuinforchangeJFrame学生信息的录入、查询、修改03TeainputTeachangeJFrame教师信息的录入、查询、修改04CourseinformationinputCourseinformationchangeJFrame课程信息的录入、查询、修改05XiinforinputXiinforchangeJFrame系基本信息的录入、查询、修改06Grademanage_CourseJFrame学生成绩按课程信息管理07Grademanage_StudentJFrame学生成绩按学生信息管理08InformationSearch_studentJFrame查询学生的基本信息09InformationSearch_teacherJFrame查询老师的基本信息10InformationSearch_courseJFrame查询课程的基本信息11InformationSearch_gradeJFrame查询成绩的基本信息12InformationSearch_XiJFrame查询系的基本信息13ChooseCourseJFrame选课管理14GradeEnroltableJFrame统计报表15MainJFrame管理员登陆对话框,提供登陆界面,检查登陆信息16WarnJFrame登陆错误提示信息6.3.3主要代码分析 /-/功能:取得应用程序与数据库系统的连接 Statement stmt = null;Connection conn = null;Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn = DriverManager.getConnection(jdbc:odbc:teachsystem, , );stmt = conn.createStatement();String sqlst = ; stmt.executeUpdate(sqlst);/-/功能:查询数据库信息 public void FindDB() Statement stmt = null; Connection conn = null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn = DriverManager.getConnection(jdbc:odbc:teachsystem, , ); stmt = conn.createStatement(); String sqlst = select * from student where 学号=+Sno+; ResultSet rc = stmt.executeQuery(sqlst); if (rc.next() Name = rc.getString(姓名); Sex = rc.getString(性别); Birth = rc.getString(出生日期); GGrade =rc.getString(入学成绩); XXinumber = rc.getString(系号); else /SnoField.setText(学号为+SnoField.getText()+的学生不存在); SnoField.setText(没有该学生记录); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); finally try if(stmt != null) stmt.close();stmt = null;if(conn != null) conn.close();conn = null; catch (SQLException e) e.printStackTrace(); /-/功能:更新数据库 public void changeDB() Statement stmt = null; Connection conn = null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn = DriverManager.getConnection(jdbc:odbc:teacher, , ); stmt = conn.createStatement(); String sqlst = update student set 姓名= + Name + , + 性别= + Sex + , + 出生日期= + Birth + , + 入学成绩= + Grade + , + 系号= + Xinumber + + where 学号=+Sno+; stmt.executeUpdate(sqlst); catch (SQLException ex) Logger.getLogger(stuinforchange.class.getName().log(Level.SEVERE, null, ex); catch (ClassNotFoundException ex) Logger.getLogger(stuinforchange.class.getName().log(Level.SEVERE, null, ex); /-/功能:把数据库里面的相关信息显示出来,即把数据库里面存储的表显示出来 public void FindGrade(String s) try String arr = new String8; int j =0; DefaultTableModel tableModel = (DefaultTableModel) GradejTable1 .getModel(); tableModel.setRowCount(0); String sqlst = s; ResultSet rc = stmt.executeQuery(sqlst); while (rc.next() arr0 = rc.getString(1); arr1 = rc.getString(课程号); arr2 = rc.getString(平时成绩); arr3 = rc.getString(考试成绩); arr4 = rc.getString(总评成绩); arr5 = rc.getString(姓名); arr6 = rc.getString(性别); tableModel.addRow(arr); catch (SQLException ex) Logger.getLogger(GradeEnroltable.class.getName().log(Level.SEVERE, null, ex); /-/功能:按课程名字或者教师名字查找 public void FindbyCourseName(String s) try int Cnum = 0; String CourseName = s; FindTable(select * from course_information where 课程名称= + CourseName + ); rc = stmt.executeQuery(select * from course_information where 课程名称= + CourseName + ); if (rc.next() Cnum = Integer.parseInt(rc.getString(课程号); System.out.println(Cnum); FindGrade(select grade_information.*,student.* from grade_information,student where grade_information.课程号= + Cnum + AND grade_information.学号=student.学号); catch (SQLException ex) Logger.getLogger(GradeEnroltable.class.getName().log(Level.SEVERE, null, ex); public void FindbyTeacherName(String s) try int Tnum = 0,Cnum = 0; String TeacherName = s; rc = stmt.executeQuery(select * from teacher where 姓名= + TeacherName + ); if (rc.next() Tnum = Integer.parseInt(rc.getString(职工号); System.out.println(Tnum); rc = stmt.executeQuery(select * from course_information where 职工号= + Tnum + ); if (rc.next() Cnum = Integer.parseInt(rc.getString(课程号); System.out.println(Cnum); FindTable(select * from course_information where 课程号= + Cnum + ); FindGrade(select grade_information.*,student.* from grade_information,student where grade_information.课程号= + Cnum + AND grade_information.学号=student.学号); catch (SQLException ex) Logger.getLogger(GradeEnroltable.class.getName().log(Level.SEVERE, null, ex); /-/功能:输入新的信息,即把新信息写到数据库表中 public void input() Statement stmt = null; Connection conn = null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn = DriverManager.getConnection(jdbc:odbc:teachsystem, , ); stmt = conn.createStatement(); String sqlst = insert into teacher values (+Tno+, +Name+, +Sex+, +Birth+,+Xinumber+, +Teachpost+, +Teachway+); stmt.executeUpdate(sqlst); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); finally try if(stmt != null) stmt.close();stmt = null;if(conn != null) conn.close();conn = null; catch (SQLException e) e.printStackTrace(); /-/功能:判断是用职工号、姓名、系号中的一种或两种或三种查找教师信息 private void SearchMouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: SSno = SnoField.getText(); Name = NameField.getText(); XXinum = XinumField.getText(); if(SSno.isEmpty()&Name.isEmpty() FindTable(select * from teacher where 系号=+Integer.parseInt(XXinum)+); else if(Name.isEmpty()&XXinum.isEmpty() FindTable(select * from teacher where 职工号=+Integer.parseInt(SSno)+); else if(SSno.isEmpty()&XXinum.isEmpty() FindTable(select * from teacher where 姓名=+Name+); else if(SSno.isEmpty() FindTable(select * from teacher where 姓名=+Name+AND 系号=+Integer.parseInt(XXinum)+); else if(Name.isEmpty() FindTable(select * from teacher where 职工号=+Integer.parseInt(SSno)+AND 系号=+Integer.parseInt(XXinum)+); else if(XXinum.isEmpty() FindTable(select * from teacher where 职工号=+Integer.parseInt(SSno)+AND 姓名=+Name+); else FindTable(select * from teacher where 职工号=+Integer.parseInt(SSno)+AND 姓名=+Name+AND 系号=+Integer.parseInt(XXinum)+); /-/功能:把新数据写到数据库中去 public void rewrite() DefaultTableModel tableModel = (DefaultTableModel) Grade_Coursenum.getModel(); int t = 0, 0, 0, 0; int c; DBhandle(delete from grade_information where 学号=+Sno+); for (int i = 0; i Grade_Coursenum.getRowCount(); i+) c=0; for (int j = 0; j Grade_Coursenum.getColumnCount(); j+) String cellValue=(String) tableModel.getValueAt(i, j); /System.out.println(cellValue); tc = Integer.parseInt(cellValue); c+; DBhandle(insert into grade_information values (+Sno+, +t0+, +t1+, +t2+, + t3+); 7.系统测试方案和测试报告7.1测试方案由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中。整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进行基本测试,然后在按深度优先策略逐一将子模块组装到主模块上进行测试,最后再对系统进行全面的整体测试。7.2测试过程(白盒测试过程略(参考代码),以下是系统黑盒测试过程:)7.2.1登陆测试双击可执行文件teachingsystem9_2.jar打开应用系统,可见登陆界面:图11 系统界面输入错误用户名或密码达到4次,出现报错信息,程序自动关闭:图12 登陆错误提示信息输入正确用户名和密码,用户正常登陆。注:系统自带用户名和密码是(hrk,123456)成功登陆后,进入主界面:7.2.2基本信息管理功能测试选择新信息录入:选择信息管理:输入刚录入的学号“7075”:7.2.3选课管理功能测试点击主界面上的“选课管理”,再选择“选课情况管理”:输入学号,再点击确定,即可查看该学生的选课情况:从上表可看出该学生已选了课程号为“3”的课程,我们再为他多选一门课程号为“2”的:再删除课程号为“3”的课程:7.2.4成绩管理功能测试1. 打开按课程管理,输入课程号“2”,再点击确定:要插入新的成绩时,只需先点击“插入”按钮,即会出现新的一行空白行:双击空白行,填入新的信息,再点击“

温馨提示

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

评论

0/150

提交评论