学生宿舍管理系统的设计数据库课程设计Word格式文档下载.docx
《学生宿舍管理系统的设计数据库课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统的设计数据库课程设计Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
数据存储是数据及其结构停留或保存的地方,也是数据流的来源和去向之一。
E.处理过程:
处理过程的具体处理逻辑一般用判定表或判定树来描述。
数据字典是关于数据库中数据的描述,即对元数据的描述。
数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。
a.数据项编号:
E01
数据项:
管理员信息表
描述:
宿舍管理员的相关信息
定义:
管理员信息表=员工姓名+性别+员工号+管理的楼号
b.数据项编号:
E02
宿舍楼信息表
宿舍楼的相关信息
宿舍楼信息表=宿舍楼号+宿舍数目
c.数据项编号:
E03
寝室信息表
学生寝室的相关信息
寝室信息表=寝室号+居住性别+寝室人数+楼号
d.数据项编号:
E04
学生信息表
学生的个人信息
学生信息表=学号+性别+姓名+年龄+所属学院+居住楼号+寝室号
3.2逻辑设计
分析后达到三范式后建立以下4个表:
MANAGER_INFO表管理员信息
FLOOR_INFO表宿舍楼信息
ROOM_INFO表寝室信息
STUDENT_INFO表学生信息
一、管理员信息表(MANAGER_INFO)
管理员信息表
字段名
数据类型
长度
说明
描述
mname
Char
10
不空,主键
管理员姓名
msex
不空
性别
mnumber
Int
4
编号
mlou
楼号
二、宿舍楼信息表(FLOOR_INFO)
宿舍楼信息
room
房间数
三、寝室信息表(ROOM_INFO)
寝室信息
qnumber
寝室号
qsex
居住性别
qcount
寝室人数
四、学生信息表(STUDENT_INFO)
学生信息
snumber
sname
姓名
ssex
sage
年龄
scollege
所属学院
3.3物理设计
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
1、CREATEDATABASEdata_base
ON(
NAME=data_base_Data,
’C:
\ProgrameFiles\MicrosoftSQLServer\MSSQL\data\data_base_Data.MDF’,
SIZE=10MB,
MAXSIZE=50MB,
)
LOGON(
NAME=data_base_Log,
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\data_base_Log.LDF’,
MAXSIZE=20MB,
2、CREATETABLEMANAGER_INFO
(mnamechar(10)notnullprimarykey,
msexchar(10)notnull,
mnumberint(4)notnull,
mlouint(4)notnull
Go
3、CREATETABLEFLOOT_INFO
(mlouint(4)notnullprimarykey,
roomint(4)notnull
4、CREATETABLEROOM_INFO
(qnumberint(4)notnullprimarykey,
qsexint(10)notnull,
qcountint(4)notnull,
mlouint(4)notnull
5、CREATETABLESTUDENT_INFO
(snumberint(4)notnullprimarykey,
snamechar(10)notnull,
ssexchar(10)notnull,
sageint(4)notnull,
scollegechar(10)notnull,
mlouint(4)notnull,
qnumberint(4)notnull
4程序模块设计
4.1登录界面模块设计
功能需求:
实现密码正确时才可使用此系统。
用户界面设计:
程序代码设计和分析:
程序主界面由6个部分怎么组成,菜单栏5个按钮分别三“按学号查询”、“按宿舍号查询”、“按学院统计”、“按宿舍号统计”、“帮助”,分别对应各自的功能。
初始状态下5个按钮都是无效的,只有输入正确的口令,功能才被激活。
口令出错时会出现“您输入的密码不正确”这样的提示窗口。
如果三次输入错误,用户会被禁用。
运行结果:
口令正确,窗口如下:
口令错误,窗口如下:
口令三次错误,用户被禁用,窗口如下:
4.2按宿舍号、学生学号的查询模块设计
功能需求:
实现分别按宿舍号、学生学号查询学生的相关信息。
程序代码设计和分析:
由于按学号查询跟按宿舍号查询功能类似,所以以学号举例。
查询之前首先需要建立与SQL的连接。
连接成功以后,使用Stringsql="
select*fromSTUDENT_INFOwheresnumber="
+t1.getText();
进行查询,使用System.out.println(“”);
在命令行中输出。
按宿舍号查询结果如下:
按学号查询结果如下:
4.3按宿舍号、学生学号的统计模块设计
实现分别按宿舍号、学院进行统计。
在文本框中输入学院代号,1表示博雅学院,2表示化生学院,3表示机械学院,
设置一个变量x表示相应学院的住宿生人数。
然后使用java命令行输出表达式在DOS界面进行设计。
运行结果:
按宿舍号统计住宿生,结果如下:
按学院统计住宿生,结果如下:
5小结
这次数据库课程设计收获颇丰。
由于很多知识书本上没有,所以使得我学要在网络上寻找相应的内容,提高了我的知识查询能力。
在java程序与sql数据库连接上花了不少时间。
首先安装了SQLSever2000JDBC驱动程序,接着有对电脑本来的SQLSever2000打上SP3补丁,安装SP3驱动程序。
另外,还得在java的目录下粘贴msbase.jar,mssqlserver.jar,msutil.jar文件。
最后在DOS环境中使用“netstat–an”查看端口1433是否打开,打开后才可以进行数据库的连接。
1433端口是java和sql数据库进行连接的主要端口,该端口打开后也就意味着计算机给网络中的不法分子提供了一个入侵漏洞,计算机受到不断入侵会把用户的cmd.exe进行拦截,以至于用户不能打开DOS界面。
附录
附录1源程序清单
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.JOptionPane;
importjava.sql.*;
publicclassZuextendsFrameimplementsActionListener
{
staticinti=0;
staticintm=1;
Labela1,a2;
TextFieldtext1;
Buttonbutton1,m1,m2,m3,m4,m5;
Fontf;
Zu(Strings)
{
super(s);
setLayout(null);
f=newFont("
黑体"
Font.BOLD,20);
m1=newButton("
按学号查询"
);
m2=newButton("
按宿舍号查询"
m3=newButton("
按学院统计"
m4=newButton("
按宿舍号统计"
m5=newButton("
帮助"
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=newLabel("
数据库课程设计"
Label.CENTER);
a2=newLabel("
输入口令:
"
a1.setBounds(180,100,300,40);
a1.setBackground(Color.white);
a1.setFont(f);
a2.setBounds(180,200,90,25);
a2.setBackground(Color.white);
text1=newTextField(18);
text1.setBounds(280,200,200,25);
button1=newButton("
确认"
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(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
});
}
publicvoidactionPerformed(ActionEvente)
Strings=newString("
0851401102"
if(e.getSource()==button1)
{
while(i==0&
&
m<
=3&
(!
(text1.getText().equals("
))))
if(text1.getText().equals(s))
{
JOptionPane.showMessageDialog(this,"
口令正确,欢迎使用"
"
成功登录对话框"
JOptionPane.INFORMATION_MESSAGE);
i=1;
}
else{
m++;
JOptionPane.showMessageDialog(this,"
您输入的密码不正确"
警告对话框"
JOptionPane.WARNING_MESSAGE);
text1.setText(null);
if(m>
=3)
JOptionPane.showMessageDialog(this,"
您已被禁用"
错误对话框"
JOptionPane.ERROR_MESSAGE);
if(i==1)
if(e.getSource()==m1)
{
Shows1=newShow("
按学号查询信息"
s1.setVisible(true);
}
elseif(e.getSource()==m2)
Form3f1=newForm3();
f1.setTitle("
按宿舍号查询信息"
f1.setVisible(true);
elseif(e.getSource()==m3)
Form4f2=newForm4();
f2.setTitle("
f2.setVisible(true);
elseif(e.getSource()==m4)
Form5f5=newForm5();
f5.setTitle("
f5.setVisible(true);
elseif(e.getSource()==m5)
Helph1=newHelp("
帮助信息"
h1.setVisible(true);
}
classJavaConnectSQLServer{
publicstaticConnectiongetConnection()
Connectionconn=null;
try{
Class.forName("
com.microsoft.jdbc.sqlserver.SQLServerDriver"
}catch(ClassNotFoundExceptione){
e.printStackTrace();
StringconnURL="
jdbc:
microsoft:
sqlserver:
//localhost:
1433;
databaseName=data_base"
;
conn=DriverManager.getConnection(connURL,"
sa"
returnconn;
}catch(SQLExceptione){
classShowextendsFrameimplementsActionListener
Labelb1,b2;
TextFieldt1;
Buttonbutton1,button2;
Show(Strings)
{
setLayout(null);
b1=newLabel("
按学号查询信息"
b2=newLabel("
请输入学号:
t1=newTextField(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=newTextField(15);
t1.setBounds(250,200,200,25);
确定"
button2=newButton("
返回"
button1.setBounds(200,350,70,25);
button2.setBounds(360,350,70,25);
add(b1);
add(b2);
add(button2);
add(t1);
button2.addActionListener(this);
{setVisible(false);
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==button1)
t1.requestFocusInWindow();
Connectionconn=JavaConnectSQLServer.getConnection();
Statementstm=null;
stm=conn.createStatement();
Stringsql="
ResultSetrs=stm.executeQuery(sql);
while(rs.next()){
System.out.print("
学号"
System.out.print("
"
System.out.print("
姓名"
性别"
System.out.print("
年龄"
所属学院"
寝室楼号"
寝室号"
System.out.println();
System.out.print(rs.getString("
snumber"
));
System.out.print(rs.getString("
sname"
System.out.print(rs.getString("
ssex"
sage"
scollege"
mlou"
qnumber"
System.out.println();
System.out.println();
}catch(SQLExceptionk){
k.printStackTrace();
elseif(e.getSource()==button2)
setVisible(false);
}
}
classForm3extendsFrameimplementsActionListener
Form3()
Font.BOLD,20