资源描述
精选优质文档-倾情为你奉上数据库课程设计报告学生宿舍管理系统设计专业学生姓名班级学号指导教师完成日期专心-专注-专业目 录学生宿舍管理系统的设计1 课程设计目的及要求 设计目的:1) 简化宿舍管理人员手工记录数据的繁琐;2) 提高记录查询速度,缩短查询时间;3) 实现数据的安全存储。设计要求:1)要求用户必须输入正确的密码才能进入系统;2)实现按宿舍号、学生学号的查询。3)实现分别按宿舍号、学生学号的统计。 2 课程设计的主要内容2.1 经济可行性分析系统的经济可行性分析是指对组织的经济状况和投资能力进行分析,对系统的建设运营和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。由于本系统作为毕业设计,所以在资金上没有太多的需求,只是需要系统开发者投入较多的时间,去进行研究和分析,以及思考问题的所在。2.2 技术可行性分析学生公寓管理系统使用SQL Sever 2017以及Java6.0进行开发,由于Netbeans6.0的可视化模块比较强大,所以在系统的设计过程中不会有太大问题,同该系统使用Macro Software的SQL server 2017对后台的数据进行操作,使得数据完整性得以保证,同时数据操作简单化。通过上述分析得出该系统在技术上是可行的。2.3 操作可行性分析本系统直观易懂,使用非常方便,管理员经过简单的培训就可以熟练的使用,因此系统的操作没有什么太大困难。3数据库设计3.1 概念设计学生学号性别姓名年龄所属学院入住寝室号居住性别寝室人数寝室N楼号房间数包含1管理宿舍楼N1管理员性别姓名员工号楼号N1楼号寝室号楼号 3.1.13.1.2 数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所 收获得的主要成果。数据字典通常包括以下5个部分:A 数据项:数据项是不可再分的数据单位。B 数据结构:数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干数据项和数据结构混合组成。C 数据流:数据流是数据结构在系统内传输的路径。D 数据存储:数据存储是数据及其结构停留或保存的地方,也是数据流的来源和去向之一。E 处理过程:处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典是关于数据库中数据的描述,即对元数据的描述。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。a. 数据项编号:E01数据项:管理员信息表描述:宿舍管理员的相关信息定义:管理员信息表=员工姓名+性别+员工号+管理的楼号b. 数据项编号:E02数据项:宿舍楼信息表描述:宿舍楼的相关信息定义:宿舍楼信息表=宿舍楼号+宿舍数目c. 数据项编号:E03数据项:寝室信息表描述:学生寝室的相关信息定义:寝室信息表=寝室号+居住性别+寝室人数+楼号d. 数据项编号:E04数据项:学生信息表描述:学生的个人信息定义:学生信息表=学号+性别+姓名+年龄+所属学院+居住楼号+寝室号3.2 逻辑设计分析后达到三范式后建立以下4个表:MANAGER_INFO 表 管理员信息FLOOR_INFO 表 宿舍楼信息ROOM_INFO 表 寝室信息STUDENT_INFO 表 学生信息一、管理员信息表(MANAGER_INFO) 管理员信息表字段名数据类型长度说明描述mnameChar10不空,主键管理员姓名msexChar10不空性别mnumberInt4不空编号mlouInt4不空楼号二、宿舍楼信息表(FLOOR_INFO) 宿舍楼信息字段名数据类型长度说明描述mlouInt4不空楼号roomInt4不空房间数三、寝室信息表(ROOM_INFO)寝室信息字段名数据类型长度说明描述qnumberInt4不空,主键寝室号qsexChar10不空居住性别qcountInt4不空寝室人数mlouInt4不空楼号四、学生信息表(STUDENT_INFO) 学生信息字段名数据类型长度说明描述snumberInt4不空,主键学号snameChar10不空姓名ssexChar10不空性别sageInt4不空年龄scollegeChar10不空所属学院mlouInt4不空楼号qnumberInt4不空寝室号3.3 物理设计 数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。1、CREATE DATABASE data_baseON(NAME=data_base_Data,FILENAME=C:ProgrameFilesMicrosoftSQLServerMSSQLdatadata_base_Data.MDF,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5MB) LOG ON(NAME=data_base_Log,FILENAME=C:Program FilesMicrosoft SQL ServerMSSQLdatadata_base_Log.LDF,SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=5MB)2、CREATE TABLE MANAGER_INFO( mname char(10) not null primary key, msex char(10) not null, mnumber int(4) not null, mlou int(4) not null)Go3、CREATE TABLE FLOOT_INFO ( mlou int(4) not null primary key,room int(4) not null)Go4、CREATE TABLE ROOM_INFO( qnumber int (4) not null primary key,qsex int (10) not null,qcount int (4) not null,mlou int (4) not null)Go5、CREATE TABLE STUDENT_INFO( snumber int (4) not null primary key,sname char(10) not null,ssex char(10) not null,sage int (4) not null,scollege char(10) not null,mlou int (4) not null,qnumber int (4) not null)4程序模块设计4.1 登录界面模块设计 功能需求:实现密码正确时才可使用此系统。用户界面设计:程序代码设计和分析: 程序主界面由6个部分怎么组成,菜单栏5个按钮分别三“按学号查询”、“按宿舍号查询”、“按学院统计”、“按宿舍号统计”、“帮助”,分别对应各自的功能。初始状态下5个按钮都是无效的,只有输入正确的口令,功能才被激活。口令出错时会出现“您输入的密码不正确”这样的提示窗口。如果三次输入错误,用户会被禁用。运行结果:口令正确,窗口如下:口令错误,窗口如下:口令三次错误,用户被禁用,窗口如下:4.2 按宿舍号、学生学号的查询模块设计功能需求:实现分别按宿舍号、学生学号查询学生的相关信息。用户界面设计: 程序代码设计和分析: 由于按学号查询跟按宿舍号查询功能类似,所以以学号举例。查询之前首先需要建立与SQL的连接。 连接成功以后,使用String sql=select * from STUDENT_INFO where snumber=+t1.getText();进行查询,使用System.out.println(“”);在命令行中输出。运行结果:按宿舍号查询结果如下:按学号查询结果如下:4.3 按宿舍号、学生学号的统计模块设计功能需求:实现分别按宿舍号、学院进行统计。用户界面设计: 程序代码设计和分析:在文本框中输入学院代号,1表示博雅学院,2表示化生学院,3表示机械学院,设置一个变量x表示相应学院的住宿生人数。然后使用java命令行输出表达式在DOS界面进行设计。 运行结果: 按宿舍号统计住宿生,结果如下: 按学院统计住宿生,结果如下:5 小结这次数据库课程设计收获颇丰。由于很多知识书本上没有,所以使得我学要在网络上寻找相应的内容,提高了我的知识查询能力。在java程序与sql数据库连接上花了不少时间。首先安装了SQL Sever 2000 JDBC 驱动程序,接着有对电脑本来的SQL Sever 2000 打上SP3补丁,安装SP3驱动程序。另外,还得在java的目录下粘贴msbase.jar,mssqlserver.jar,msutil.jar文件。最后在DOS环境中使用“ netstat an”查看端口1433是否打开,打开后才可以进行数据库的连接。1433端口是java和sql数据库进行连接的主要端口,该端口打开后也就意味着计算机给网络中的不法分子提供了一个入侵漏洞,计算机受到不断入侵会把用户的cmd.exe进行拦截,以至于用户不能打开DOS界面。 附 录附录1 源程序清单import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.JOptionPane;import java.sql.*;public class Zu extends Frame implements ActionListenerstatic int i=0; static int m=1;Label a1,a2;TextField text1;Button button1,m1,m2,m3,m4,m5;Font f;Zu(String s)super(s);setLayout(null);f=new Font(黑体,Font.BOLD,20);m1=new Button(按学号查询);m2=new Button(按宿舍号查询);m3=new Button(按学院统计);m4=new Button(按宿舍号统计);m5=new Button(帮助);m1.addActionListener(this);m2.addActionListener(this);m3.addActionListener(this);m4.addActionListener(this);m5.addActionListener(this);m1.setBounds(10,30,120,25);m2.setBounds(140,30,140,25); m3.setBounds(290,30,120,25); m4.setBounds(420,30,80,25);m5.setBounds(510,30,80,25);add(m1);add(m2);add(m3);add(m4);add(m5);a1=new Label(数据库课程设计,Label.CENTER);a2=new Label(输入口令:);a1.setBounds(180,100,300,40);a1.setBackground(Color.white);a1.setFont(f); a2.setBounds(180,200,90,25); a2.setBackground(Color.white);text1=new TextField(18);text1.setBounds(280,200,200,25);button1=new Button(确认);button1.setBounds(300,250,70,30);button1.addActionListener(this);add(a1);add(a2);add(text1);add(button1);setBackground(Color.white);setBounds(100,100,600,400);setVisible(true);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );public void actionPerformed(ActionEvent e) String s=new String();if(e.getSource()=button1) while(i=0&m=3)JOptionPane.showMessageDialog(this,您已被禁用,错误对话框,JOptionPane.ERROR_MESSAGE);if(i=1)if(e.getSource()=m1)Show s1=new Show(按学号查询信息);s1.setVisible(true);else if(e.getSource()=m2)Form3 f1=new Form3();f1.setTitle(按宿舍号查询信息);f1.setVisible(true);else if(e.getSource()=m3)Form4 f2=new Form4();f2.setTitle(按学院统计);f2.setVisible(true);else if(e.getSource()=m4)Form5 f5=new Form5(); f5.setTitle(按宿舍号统计);f5.setVisible(true);else if(e.getSource()=m5)Help h1=new Help(帮助信息);h1.setVisible(true); class JavaConnectSQLServer public static Connection getConnection() Connection conn=null; try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); catch (ClassNotFoundException e) e.printStackTrace(); try String connURL=jdbc:microsoft:sqlserver:/localhost:1433;databaseName=data_base; conn=DriverManager.getConnection(connURL,sa,); return conn; catch (SQLException e) e.printStackTrace(); return conn; class Show extends Frame implements ActionListenerLabel b1,b2;Font f;TextField t1; Button button1,button2;Show(String s) super(s);setLayout(null);f=new Font(黑体,Font.BOLD,20);b1=new Label(按学号查询信息 );b2=new Label(请输入学号:);t1=new TextField(18);t1.setBounds(280,200,200,25);b1.setBounds(180,100,250,40);b1.setFont(f);b1.setBackground(Color.white);b2.setBounds(100,200,120,25);b2.setBackground(Color.white);t1=new TextField(15);t1.setBounds(250,200,200,25);button1=new Button(确定);button2=new Button(返回);button1.setBounds(200,350,70,25);button2.setBounds(360,350,70,25);setBounds(100,100,600,400);setBackground(Color.white);add(b1);add(b2);add(button1);add(button2);add(t1);button1.addActionListener(this);button2.addActionListener(this);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false); ); public void actionPerformed(ActionEvent e)if(e.getSource()=button1)t1.requestFocusInWindow(); Connection conn=JavaConnectSQLServer.getConnection(); Statement stm=null; try stm = conn.createStatement(); String sql=select * from STUDENT_INFO where snumber=+t1.getText(); ResultSet rs=stm.executeQuery(sql); while(rs.next() System.out.print(学号);System.out.print( ); System.out.print(姓名);System.out.print( ); System.out.print(性别);System.out.print( ); System.out.print(年龄);System.out.print( ); System.out.print(所属学院);System.out.print( ); System.out.print(寝室楼号);System.out.print( ); System.out.print(寝室号);System.out.print( ); System.out.println();System.out.print(rs.getString(snumber);System.out.print( ); System.out.print(rs.getString(sname); System.out.print(rs.getString(ssex);System.out.print(rs.getString(sage);System.out.print( ); System.out.print(rs.getString(scollege);System.out.print(rs.getString(mlou);System.out.print( ); System.out.print(rs.getString(qnumber); System.out.println();System.out.println(); catch (SQLException k) k.printStackTrace(); else if(e.getSource()=button2)setVisible(false); class Form3 extends Frame implements ActionListenerLabel b1,b2;Font f;TextField t1;Button button1,button2;Form3()setLayout(null);f=new Font(黑体,Font.BOLD,20);b1=new Label(按宿舍号查询信息 );b2=new Label(请输入宿舍号:);b1.setBounds(180,100,250,40);b1.setFont(f);b1.setBackground(Color.white);b2.setBounds(100,200,120,25);b2.setBackground(Color.white);t1=new TextField(15);t1.setBounds(250,200,200,25);button1=new Button(确定);button2=new Button(返回);button1.setBounds(200,350,70,25);button2.setBounds(360,350,70,25);setBounds(100,100,600,400);setBackground(Color.white);add(b1);add(b2);add(button1);add(button2);add(t1);button1.addActionListener(this);button2.addActionListener(this);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false); );public void actionPerformed(ActionEvent e)if(e.getSource()=button1) t1.requestFocusInWindow(); Connection conn=JavaConnectSQLServer.getConnection(); Statement stm=null; try stm = conn.createStatement(); String sql=select * from STUDENT_INFO where qnumber=+t1.getText(); ResultSet rs=stm.executeQuery(sql); System.out.print(学号);System.out.print( ); System.out.print(姓名);System.out.print( ); System.out.print(性别);System.out.print( ); System.out.print(年龄);System.out.print( ); System.out.print(所属学院);System.out.print( ); System.out.print(寝室楼号);System.out.print( ); System.out.print(寝室号);System.out.print( ); while(rs.next() System.out.println();System.out.print(rs.getString(snumber);System.out.print( ); System.out.print(rs.getString(sname); System.out.print(rs.getString(ssex);System.out.print(rs.getString(sage);System.out.print( ); System.out.print(rs.getString(scollege); System.out.print(rs.getString(mlou);System.out.print( ); System.out.print(rs.getString(qnumber); System.out.println();System.out.println(); catch (SQLException k) k.printStackTrace(); else if(e.getSource()=button2)setVisible(false); class Form4 extends Frame implements ActionListenerLabel b1,b2;Font f;TextField t1;Button button1,button2;Form4()setLayout(null);f=new Font(黑体,Font.BOLD,20);b1=new Label(按学院统计 );b2=new Label(请输入学院代号:);b1.setBounds(250,100,250,40);b1.setFont(f);b1.setBackground(Color.white);b2.setBounds(100,200,120,25);b2.setBackground(Color.white);t1=new TextField(15);t1.setBounds(250,200,200,25);button1=new Button(确定);button2=new Button(返回);button1.setBounds(200,350,70,25);button2.setBounds(360,350,70,25);setBounds(100,100,600,400);setBackground(Color.white);add(b1);add(b2);add(button1);add(button2);add(t1);button1.addActionListener(this);button2.addActionListener(this);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false); );public void actionPerformed(ActionEvent e)if(e.getSource()=button1) int x=0;t1.requestFocusInWindow(); Connection conn=JavaConnectSQLServer.getConnection(); Statement stm=null; try stm = conn.createStatement(); String sql=select * from STUDENT_INFO where scollege=+t1.getText(); ResultSet rs=stm.executeQuery(sql); System.out.print(学号);System.out.print( ); System.out.print(姓名);System.out.print( ); System.out.print(性别);System.out.print( ); System.out.print(年龄);System.out.print( ); System.out.print(所属学院);System.out.print( ); System.out.print(寝室楼号);System.out.print( ); System.out.print(寝室号);System.out.print( ); while(rs.next() x+; System.out.println(); System.out.print(rs.getString(snumber);System.out.print( ); System.out.print(rs.getString(sname); System.out.print(rs.getString(ssex); System.out.print(rs.getString(sage);System.out.print( ); if(t1.getText()=1) System.out.print(博雅); System.out.print( ); else if(t1.getText()=2) System.out.print(化生); System.out.print( ); else System.out.print(机械);System.out.print( );System.out.print(rs.getString(mlou);System.out.print( ); System.out.print(rs.getString(qnumber); System.out.println(); System.out.println(该学院有住宿生+x+名); System.out.println();System.out.println(); catch (SQLException k) k.printStackTrace(); else if(e.getSource()=button2)setVisible(false); class Form5 extends Frame implements ActionListenerLabel b1,b2;Font f;TextField t1;Button button1,button2;Form5()setLayout(null);f=new Font(黑体,Font.BOLD,20);b1=new Label(按宿舍号统计 );b2=new Label(请输入宿舍号:);b1.setBounds(180,100,250,40);b1.setFont(f);b1.setBackground(Color.white);b2.setBounds(100,200,120,25);b2.setBackground(Color.white);t1=new TextField(15);t1.setBounds(250,200,200,25);button1=new Button(确定);button2=new Button(返回);button1.setBounds(200,350,70,25); button2.setBounds(360,350,70,25);setBounds(100,100,600,400);setBackground(Color.white);add(b1);add(b2);add(t1);add(button1);add(button2);button1.addActionListener(this);button2.addActionListener(this);validate();addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false); );public void actionPerformed(ActionEvent e)if(e.getSource()=button1) int y=0;t1.requestFocusInWindow(); Connection conn=JavaConnectSQLServer.getConnection(); Statement stm=null; try stm = conn.createStatement(); String sql=select * from STUDENT_INFO where qnumber=+t1.getText(); ResultSet rs=stm.executeQuery(sql); System.out.print(学号);System.out.print( ); System.out.print(姓名);System.out.print( ); System.out.print(性别);System.out.print( ); System.out.print(年龄);System.out.print( ); System.out.print(所属学院);System.out.print( ); System.out.print(寝室楼号);System.out.print( ); System.out.print(寝室号);System.out.print( ); while(rs.next() y+; System.out.println();System.out.print(rs.getString(snumber);System.out.print( ); System.out.print(rs.getString(sname); System.out.print(rs.getString(ssex);System.out.print(rs.getString(sage);System.out.print( ); System.out.print(rs.getString(scollege);System.out.print(rs.getString(mlou);System.out.print( ); System.out.print(rs.getString(qnumber); System.out.println(); System.out.print(该宿舍有+y+人); System.out.println();System.out.println(); catch (SQLException k) k.printStackTrace(); else if(e.getSourc
展开阅读全文