中北大学数据库课程设计说明书学院、系:软件学院专业:企业信息化软件开发与应用学生姓名:毕青林学号:1021010445设计题目:软件学院机房管理系统起迄日期:2012年5月28日~2012年6月18日指导教师:董晓丽2012年6月17日软件学院机房管理系统1一、需求分析建立一个“软件学机房管理系统”,实现软件学院机房上机管理。要求可以随时添加新用户,而且还可以对用户的信息进行查询,对上机情况进行查询。同时具有上机和下机管理功能。(1)系统要求1)实现无人职守,通过验证学生身份做到自判断是否允许学生上机,学生下机时自动将该学生所用的机器电源关掉。2)方便管理,采用友好界面,帮助机房管理员方便有效地对机房进行管理。3)要求在Windows平台下,使用面向对象程序设计语言,结合SQLServer进行开发。(2)系统功能分析该系统采用了模块化的设计思想,将其分为了4个模块,大大提高了设计的效率,最爱的限度地减少不必要的错误。其系统模块结构图如下:其中:管理员管理模块:主要用来管理和统计学生的上下机时间、计费,同时在线显示出机房内机器的分布情况,由学生选择机器上机。调整计费模块:主要是对学生平时上机计费设定,这样可以灵活掌握各班学生的上机学时和计费情况。查询模块:机时查询可以随时查询某人或某班的总机时以及在任意时间段内的上机记录,使学生准确地知道自己上机的总机时和在什么时间上过机。学生信息管理模块:主要是针对学生数据库的增加、修改和删除而设置的,以便灵活处理学软件学院机房管理系统管理员管理模块调整计费方式模块查询模块学生信息管理模块软件学院机房管理系统2生数据库的数据,使系统的完整性得到加强。二、总体设计由需求分析可得,机房管理系统的体系结构:有以下关系模式:管理员表(管理员编号,密码)学生表(学号,登录密码,剩余费用,学生姓名)机器表(机器编号,使用状态,机器描述)上下机记录表(学号,机器号,上机时间,下机时间,所用费用,剩余费用)学生总记录表(序号,学号,上机时间,下机时间,剩余费用)E-R图:(1)管理员E-R图:子模块的功能:主要负责管理员的登录,对子相关信息的修改、删除等。实体管理员的属性有管理员编号,登录密码。管理员(管理员编号,密码);软件学院机房管理系统管理员管理模块调整计费方式模块查询模块学生信息管理模块管理员管理员编号登录密码软件学院机房管理系统3(2)学生E-R图子模块功能:主要是学生上下机以及学生在上机过程中对自己信息的查询等。实体学生的属性有学号,学生姓名,登录密码,剩余费用;学生(学号,登录密码,剩余费用,学生姓名);(3)机器E-R图:子模块功能:主要是对上下机记录及学生总记录的查询,修改等;实体机器的属性有机器编号,机器描述,使用状态;机器(机器编号,使用状态,机器描述);(4)上下机记录E-R图学生学号学生姓名剩余费用登录密码机器机器编号使用状态机器描述上下机记录学号所用费用上机时间下机时间剩余费用机器号软件学院机房管理系统4子模块功能:主要是对学生上下机信息的储存与处理;实体上下机记录的属性有学号,机器号,上机时间,下机时间,所用费用,剩余费用上下机记录表(学号,机器号,上机时间,下机时间,所用费用,剩余费用)(5)学生总记录E-R图子模块功能:主要是对所有学生信息的记录存储与处理学生总记录的属性有序号,学号,上机时间,下机时间,剩余费用学生总记录表(序号,学号,上机时间,下机时间,剩余费用)总E-R图:学生总记录序号学号上机时间下机时间剩余费用软件学院机房管理系统5联系所对应的关系模式:把机器和学生之间的n:m的操作联系转化为相应的关系模式如下:操作(学号,机器编号,开始时间,结束时间);上下机记录和学生之间的1:1联系与学生关系合并;学生总记录和管理员之间的n:1联系与学生总记录关系合并;机器和管理员之间的n:1联系与机器关系合并;优化后的数据模型:管理员(管理员编号,密码);3NF学生(学号,学生姓名,名登录密码,剩余费用);3NF机器(机器编号,使用状态,机器描述);3NF上下机记录(学号,机器号,上机时间,下机时间,所用费用,剩余费用);3NF学生总记录(序号,学号,上机时间,下机时间,剩余费用)3NF操作(学号,机器编号,开始时间,结束时间);3NF表一:管理员表(zhenghu)列名数据类型可否取空备注说明yonghuChar(10)NOTNULL管理员名软件学院机房管理系统6mimaChar(3)NOTNULL密码表二:学生表(Card)列名数据类型可否取空备注说明IdVarchar(10)NOTNULL学号PasswordVarchar(50)NOTNULL登录密码balanceIntnull剩余费用UserNameVarchar(50)NULL学生姓名表三:机器表(computer)列名数据类型可否取空备注说明IdVarchar(10)NOTNULL机器编号OnUseBitNOTNULL使用状态notesVarchar(100)NULL机器描述表四:上下机记录表(record)列名数据类型可否取空备注说明CardIdVarchar(10)NOTNULL学号ComputerIdVarchar(10)NOTNULL机器号BeginTimeSmalldatetimenull上机时间EndTimesmalldatetimenull下机时间FeeIntNull所用费用YueintNULL剩余费用表五:学生总记录表(jilu)列名数据类型可否取空备注说明IDChar(10)null序号CardIdchar(10)NULL学号BeginTimeSmalldatetimenull上机时间EndTimesmalldatetimenull下机时间YueintNULL剩余费用三、详细设计管理员登录:软件学院机房管理系统7importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.util.*;importjava.sql.*;importjavax.swing.border.TitledBorder;publicclassMainFrameextendsJFrameimplementsRunnable,ActionListener{staticinti=1;JPanelcontentPane;JMenuBarjMenuBar1=newJMenuBar();//菜单栏JMenujMenu1=newJMenu();//帮助菜单JMenuItemjMenuItem4=newJMenuItem();JMenuItemjMenuItem10=newJMenuItem();JMenujMenuFile=newJMenu();//使用菜单JMenuItemjMenuItem1=newJMenuItem();JMenuItemjMenuItem2=newJMenuItem();JMenujMenu2=newJMenu();//退出菜单JMenuItemjMenuItem3=newJMenuItem();JMenujMenu3=newJMenu();//用户菜单JMenuItemjMenuItem5=newJMenuItem();JMenuItemjMenuItem6=newJMenuItem();JMenuItemjMenuItem7=newJMenuItem();JMenuItemjMenuItem8=newJMenuItem();JMenuItemjMenuItem9=newJMenuItem();JMenuItemxiaji=newJMenuItem(下机);JMenuItemchongzhi=newJMenuItem(充值);JScrollPanejScrollPane1=newJScrollPane();//提供了一个用来实现滚动功能的滚动窗口Threadt=null;Statementstt=null;//执行命令的对象JPopupMenupope=newJPopupMenu();//tab1快捷菜单ResultSetMetaDatares=null;//用于存放查询结果的对象MyTableTab=null;JTextFieldt1=newJTextField();JButtonjButton1=newJButton(上机);JButtonjButton2=newJButton(下机);JButtonjButton3=newJButton(注册);JButtonjButton4=newJButton(离开);软件学院机房管理系统8JButtonjButton5=newJButton(注销);JButtonjButton6=newJButton(充值);JButtonjButton7=newJButton(修改);JButtonjButton9=newJButton(查询);JLabeljLabel2=newJLabel();JTextFieldt2=newJTextField();JTextFieldt3=newJTextField();JLabeljLabel3=newJLabel();JTextFieldt4=newJTextField();JLabeljLabel4=newJLabel();JTextFieldt5=newJTextField();JLabeljLabel5=newJLabel();JTextFieldt6=newJTextField();JLabeljLabel6=newJLabel();TitledBordertitledBorder1=newTitledBorder();TitledBordertitledBorder2=newTitledBorder();JLabeljLabel1=newJLabel();JLabeljLabel7=newJLabel();JLabeljLabel8=newJLabel();JLabeljLabel9=newJLabel();JLabeljLabel10=newJLabel();JLabeljLabel11=newJLabel();JLabeljLabel12=newJLabel();JLabeljLabel13=newJLabel();JLabeljLabel14=newJLabel();JLabeljLabel15=newJLabel();JLabeljLabel16=newJLabel();JLabeljLabel120=newJLabel();publicMainFrame(){try{setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);jbInit();}catch(Exceptionexception){exception.printStackTrace();}}软件学院机房管理系统9publicstaticvoidmain(Stringargs[]){newMainFrame();}/***Componentinitialization.**@throwsjava.lang.Exception*/privatevoidjbInit()throwsException{contentPane=(JPanel)getContentPane();contentPane.setLayout(null);setSize(newDimension(800,600));setTitle(机房管理系统);this.addWindowListener(newMainFrame_this_windowAdapter(this));this.addFocusListener(newMainFrame_this_focusAdapter(this));//jLabel16.setText(F2:上机F3:下机F4:充值);contentPane.setOpaque(true);c