数据库课程设计——学生宿舍信息管理系统

目录

1.设计目的... 2

2、任务与要求... 2

3、学生宿舍管理系统课程设计... 2

3.1 引言... 2

3.2需求分析... 2

3.2.1. 2

3.2.2. 3

3.3概念设计... 6

3.4逻辑设计... 10

3.5物理结构设计... 12

3.6数据库实施... 14

3.6.1数据库表的定义... 14

3.6.2视图的定义:... 15

3.6.3索引:... 16

3.6.4触发器的定义:... 17

3.6.5用户的定义:... 18

3.6.6 对数据的管理:... 18

3.7系统调试和测试... 19

4.系统评价... 20

4.1我的系统特色:... 20

4.2 系统不足及改进... 21

5.设计心得... 21

1.设计目的

《数据库系统原理》课程设计是软件工程和计算机科学与技术专业集中实践性环节之一,旨在让我们自身加深对数据库基础理论和基本知识的理解,掌握设计数据库管理系统的基本方法,锻炼运用知识解决实际问题的动手能力。

2、任务与要求

要求学生们从给定的设计题目中进行选择,进行需求分析,概念设计、逻辑设计,数据库的设计过程,表结构、表之间的关联,给出视图的定义、触发器的定义、索引,安全性的实现,用SQL语句等在SQL Server 2008系统中实现数据库的数据输入,查询,更新和输出;给出实现效果截图及部分测试结果。

3、学生宿舍管理系统课程设计

3.1 引言

随着社会的发展以及教育水平的提高,当今社会在校生的数量越来越庞大。与此同时,使用曾经的手工的方式对学生的信息进行管理效率非常低下。在互联网技术高度发达的今天 ,使用数据库技术队对学生的住信息进行管理能够使学校对学生信息的管理更加的高效,检索迅速,查找方便,可靠性高存储量大。使用数据库技术的这些优点可以使得学生信息出错的发生。同时使用数据库技术可以使学生住宿信息长时间稳定地保存,也不容易丢失。开发出这样的一个数据库迫在眉睫。

3.2需求分析

3.2.1

系统需求调查的方法为访谈法,通过对多个学校的宿舍管理人员进行交谈,从而得出系统的主要任务和特定的要求。系统的主要任务是能够对宿舍信息,学生信息,管理员信息,住宿信息进行登记,调整,并能进行各种查询以及信息的备份。

完整性要求:防止不符合语义的数据进入数据库。

安全性要求:需要防止客户对数据进行未经授权的访问。

性能要求:最好能够实现并发访问,允许多个用户同时对数据库中的数据进行访问。

一致性要求:防止数据库进入不一致状态。

数据库要求:各种各样的故障都可能发生,出现意外时,,尽可能的确保任何数据在任何情况下都不会丢失。

3.2.2

系统的业务流程:

学生入住和退宿时通过管理员进行登记;

住宿产生的各种费用以及使用的各项物品由管理员进行登记;

管理员将登记的各项信息上报给教务处;

教务处将各项住宿信息进行统一管理;

储存的所有数据供不同权限的客户进行访问;

数据字典:

学生基本信息

编号

属性名

类型

解释

备注

0001

学号

Varchar(15)

0002

姓名

Varchar(10)

0003

性别

Varchar(2)

男、女

0004

年龄

Int

0……100之间

0005

手机号

Varchar(15)

手机号码

0006

专业

Varchar(20)

住宿费用信息:

编号

属性名

类型

解释

备注

0008

表单编号

Varchar(15)

0009

学号

Varchar(15)

0010

宿舍号

Varchar(6)

不是门牌号

0011

水费

Double(6)

大于0

0012

电费

Double(6)

大于0

0013

维修费

Double(6)

大于0

0014

住宿费

Double(6)

大于0

0015

日期

Date(8)

0016

合计

Double(6)

大于0

物品管理信息:

编号

属性名

类型

解释

备注

0017

员工号

Varchar(15)

0018

宿舍号

Varchar(15)

0019

桌子

Int

大于0

0020

椅子

Int

大于0

0021

Int

大于0

0022

电扇

Int

大于0

0023

Int

大于0

0024

窗户

Int

大于0

宿舍信息

编号

属性名

类型

解释

备注

0025

宿舍编号

Varchar(15)

0026

楼号

Varchar(15)

0027

区域

Varchar(15)

校园内

ABCDEFG

0028

人数

Int

0……8

0029

房间类型

Varchar(15)

按人数分

1(四人)2(六人)3(八人)

管理员信息

编号

属性名

类型

解释

备注

0030

员工号

Varchar(15)

0031

姓名

Varchar(10)

0032

性别

Varchar(2)

男,女

0033

年龄

Int

0……100

0034

手机号

Varchar(15)

11位

0035

楼号

int

0036

区域

int

ABCDEFG

0037

职位

Varchar(2)

1(高级员工)2(普通员工)

3.2.2 系统功能描述:

对学生的信息进行管理;

对宿舍信息进行管理;

对管理员信息进行管理;

对宿舍物品进行登记和管理;

对住宿产生的各项费用进行登记和管理;

对已经更改的学生和管理员信息进行保存

在这幅图中,其中各项从左往右前5部分功能都包括各自信息的增删改查,第六项功能为学生和教师信息的备份,也就是已修改信息储存。

3.3概念设计

(说明使用数据库概念设计的基本思想和原理方法,设计出系统E-R图)

基本思想:将需求分析得到的用户需求抽象为信息结构,分析数据字典中数据字典间内在语义关联,并将其抽象表示为数据的概念模式,从而能真实,充分地反应真实世界,包括事物和事物之间的联系,能满足用户对数据的处理需求,是现实世界的一个真实模型,易于理解,从而可以用它和不熟悉计算机的人交换意见,且易于更改。方法:首先分析整个系统中涉及到的实体,得到局部的ER图。然后分析这些实体之间的关系,进行连接从而得到

3.4逻辑设计

基本思想:首先整个系统一共可以划分出三个实体,分别是学生,管理员和宿舍,三者之间构成一个三角关系。同时,学生和宿舍之间的住宿关系衍生出一系列的住宿产生的费用,管理员和宿舍的管理关系衍生出一系列需要管理的物品,因此五张表相互关联生成完整的数据库系统。

数据库关系图:

学生的个人信息:学号,姓名,性别,年龄,手机号码,专业,管理员号

student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,manager_num)

宿舍费用信息:表单编号,水费,电费,维修费,住宿费,总费用,日期

live(list_num,stu_num,dor_num,water,electric,service,lodge,total,date)

宿舍物品信息:桌子,椅子,床,灯,

tool(mana_num,dor_num,table,chair,bed,light)

宿舍信息:宿舍编号,人数,房间类型,楼号,区域

dormitory(dor_num ,prople_total,size, build_num,zone)

宿舍管理人员信息:员工号,姓名,性别,年龄,手机号

manager(mana_num,mana_name,mana_gender,mana_age,mana_tele)

3.5物理结构设计

物理设计的基本思想:根据逻辑设计出的逻辑模式,DBMS及计算机系统所提供的手段和施加的限制,设计数据库的内模式,即文件结构,各种路径,控件分配,记录的存取方式等,为逻辑数据结构选取一个最合适的应用环境的物理结构。

学生基本信息表:

属性名

类型

长度

备注

Stu_num

varchar

15

Stu_name

varchar

10

Stu_gender

varchar

2

男、女

Stu_age

int

4

0……100之间

Stu_tele

varchar

15

Stu_spe

varchar

20

住宿费用信息表:

属性名

类型

长度

备注

List_num

Varchar

15

Stu_num

Varchar

15

Dor_num

Varchar

15

water

double

6

大于0

Elect

double

6

大于0

Repaire

double

6

大于0

live

double

6

大于0

date

date

8

指的是具体一年

物品管理信息表:

属性名

类型

长度

备注

Mana_num

Varchar

15

Dor_num

Varchar

15

Desk

Int

2

大于0

Chair

Int

2

大于0

Bed

Int

2

大于0

fan

Int

2

大于0

lighr

Int

2

大于0

window

Int

2

大于0

宿舍信息表:

属性名

类型

长度

备注

Dor_num

Varchar

15

Build_num

Varchar

2

Zone

Varchar

2

ABCDEFG

People_total

Int

2

0……8

size

varchar

2

1(四人)2(六人)3(八人)

管理员信息表:

属性名

类型

长度

备注

Mana_num

Varchar

15

Mana_name

Varchar

10

Mana_gender

Varchar

2

男,女

Mana_age

Int

4

0……100

Mana_tele

varchar

15

11位

Build_num

int

2

zone

varchar

2

ABCDEFG

3.6数据库实施

数据库的实施:数据库设计完成后,设计人员要用DBMS提供的数据定义语言和其他的使用程序将数据库逻辑结构设计和物理结构设计的结构用DDL严格描绘出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。最后将数据装入数据库。

3.6.1数据库表的定义

创建学生信息表:

Create table student

(stu_num  varchar(15),

Stu_name  varchar(10),

Stu_gender  varchar(2)  check(stu_gender=’男’ or stu_gender=’女’),

Stu_age  int  check(stu_age>0 and stu_age<100),

Stu_tele  varchar(15),

Stu_spe  varchar(20),

Primary key (stu_num),

);

创建费用信息表:

Create  table  live

( list_num  varchar(15),

Stu_num  varchar(15),

Dor_num  varchar(15),

Water  float check(water>=0),

Elect  float  check(elect>=0),

Repair  float  check(repair>=0),

Living  float  check(living>=0),

statu  int default(1),

Date  date,

Primary key(list_num),

Foreign key (stu_num ) references  student(stu_num)

on update cascade,

Foreign key (dor_num ) references  dormitory(dor_num)

on update cascade

);

创建物品信息管理表:

Create  table tool

( mana_num  varchar(15),

Dor_num  varchar(15),

desk  int  check(desk>=0),

Chair  int  check(chair>=0),

Bed  int  check(bed>=0),

Light  int  check(light>=0),

Primary key (dor_num),

Foreign key (mana_num ) references  manager(mana_num)

on update cascade on delete set null

);

创建宿舍信息管理表:

Create table dormitory

(dor_num varchar(15),

People_total  int  check(people_total>=0 and people_total<=8),

Size   int check(size=1 or size=2  or size=3)

);

创建管理员信息表:

Create table manager

(mana_num  varchar(15),

mana_name  varchar(10),

mana_gender  varchar(2)  check(stu_gender='男' or stu_gender='女'),

mana_age  int  check(stu_age>0 and stu_age<100),

mana_tele  varchar(15),

Primary key (mana_num)

);

3.6.2视图的定义:

所有的信息汇总在一起:

Create view allmass

(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dor_num,water,elect,repair,living,live_status,Date,people_total,size,dor_status,mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu)

as select student.stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dormitory.dor_num,water,elect,repair,living,live_statu,Date,people_total,size,dor_statu,manager.mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu

from student,lives,dormitory,tool,manager

where student.stu_num=lives.stu_num

and lives.dor_num=dormitory.dor_num

and dormitory.dor_num=tool.dor_num

and tool.mana_num= manager.mana_num ;

学生信息视图:

Select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,mana_name

from allmass

where stu_statu=1;

管理员信息:

create view manager_view

as

select manager.mana_num,mana_name,mana_age,mana_gender,mana_tele

from manager

where  mana_statu=1;

宿舍信息:

create view dormitory_view

as

select tool.dor_num,build_num,zone,people_total,size

from tool,dormitory

where tool.dor_num=dormitory.dor_num and dor_statu=1;

物品信息:

create view tool_view

as

select dor_num,mana_num, desk,chair,bed,light

from tool

where tool_statu=1;

账单信息:

create view lives_view

as

select list_num,stu_name,dor_num,water,elect,date,repair,living

from lives,student

where live_statu=1 and lives.stu_num=student.stu_num;

3.6.3索引:

每一张表通过主键的列产生索引,从而加快查询时的进度。

拿学生信息表进行举例:

Create index stu_index on student(stu_num);

当然可以通过数据库自动生成。

3.6.4触发器的定义:

在学生表上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

create trigger on_pre_stu

on student

for update

as

begin

declare @stu_num varchar(15)

declare @pre_stu_name varchar(10)

declare @pre_stu_gender varchar(2)

declare @pre_stu_age int

declare @pre_stu_tele varchar(15)

declare @pre_stu_spe  varchar(20)

select  @stu_num = stu_num from deleted

select @pre_stu_name =stu_name from deleted

select @pre_stu_gender =stu_gender from deleted

select @pre_stu_age = stu_age from deleted

select @pre_stu_tele =stu_tele from deleted

select @pre_stu_spe = stu_spe from deleted

insert into pre_stu(stu_num,pre_stu_name,pre_stu_gender,pre_stu_age,pre_stu_tele,pre_stu_spe )

values(@stu_num,@pre_stu_name,@pre_stu_gender,@pre_stu_age,@pre_stu_tele,@pre_stu_spe)

end

在管理员上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

create trigger on_pre_mana

on manager

for update

as

begin

declare @mana_num varchar(15)

declare @pre_mana_name varchar(10)

declare @pre_mana_gender varchar(2)

declare @pre_mana_age int

declare @pre_mana_tele varchar(15)

select  @mana_num = mana_num from deleted

select @pre_mana_name =mana_name from deleted

select @pre_mana_gender =mana_gender from deleted

select @pre_mana_age = mana_age from deleted

select @pre_mana_tele =mana_tele from deleted

insert

into pre_mana(mana_num,pre_mana_name,pre_mana_gender,pre_mana_age,pre_mana_tele)values(@mana_num,@pre_mana_name,@pre_mana_gender,@pre_mana_age,@pre_mana_tele)

end

3.6.5用户的定义:

create user dba for login dba with default_schema=dbo

exec sp_addrolemember 'db_owner' ,'dba'

3.6.6 对数据的管理:

对数据的管理主要是由增删改查组成,以学生信息的管理为例,

增加:

insert into

student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu)

values('201677H0555','刘飞达','男',19,14646646465,'软工',1);

删除:值得注意的是我删除信息用的是更新信息语句,只需要更改状态值即可标示数据是否被删除,数据不会真的被删除,做好了别分工作。

update student set stu_status=0 where stu_num=’201677H0522’;

修改:

update student set stu_name='刘豪' where stu_num='201677H0522';

查询:值得注意的是查询的条件是数据行的状态值是1,也就是被标示未被删除。

select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe from student where stu_statu=1;

分别查询每一个宿舍的总费用,并且按照宿舍号进行排序(使用的是分组求和的思想):

select dor_num , sum(w   ater+elect + repair +living) from lives group by dor_num order by dor_num ;

在sql代码执行的过程中,会自动生成存储过程,将有价值的存储过程进行储存。

3.7系统调试和测试

在对数据库的备份功能进行测试的过程中,我在原表中对数据进行修改,从而触动触发器将被删除的信息储存在备份表中。执行语句update student set stu_name='刘豪' where stu_num='201677H0522'; 然后查看备份表中的信息,验证之后正确。

把数据库总所有的信息联合起来,形成一张非常大的表,生成一个视图,测试之后,可以成功生成,满足要求。

在安全性方面,我创建了用户并且进行了授权:

create login dba with password='123456', default_database=stu_dor_manage;

create user dba for login dba with default_schema=dbo

exec sp_addrolemember 'db_owner' ,'dba'

执行以后,成功生成了一个用户:测试成功!

4.系统评价

4.1我的系统特色:
A、数据结构化 ,数据之间具有联系,面向整个系统。
B、数据的共享性高,冗余度低,易扩充 。
C、数据独立性高 。
D、数据由DBMS统一管理和控制。

4.2 系统不足及改进

在对数据库进行设计的过程中,结构比较简单,不能够应对是否能复杂的情况,只能对学生住宿的简单信息进行操作。另外,在安全性方面做得也不够完善,主要原因在于设计的重点是功能的正常执行,而不是在每一个细节做到完美。另外,执行虚度方面没有做出专门的优化。因此,这个数据库系统需要我在以后相信的去完成每一个细节。

5.设计心得

在设计数据库的过程中我遇到过非常多的问题:

首先,在设计阶段有非常多的数据项,当时觉得不好分类和处理,而且有很多的数据项和许多实体都有关系。最后通过查看课本例题,问同学等方式将各个数据项进行归类,对于和多个实体之间都有关系的数据项可以建立一个关系表,从而完成归类。

接着,在添加数据的过程中,我忽略掉了数据的参照完整性,导致许多数据不能够正常加入。后来经过同学的提示,我将数据进行了统一分析,保持所有的数据一致,最后数据可以正常输入。

最后,每个表中的数据更改完成之后,更改后的数据会丢失找不到了。对于这个问题就解决办法为加入触发器,记录表中信息的修改前的值,成功解决问题。

收获:对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。

数据库课程设计——学生宿舍信息管理系统相关推荐

  1. 数据库课程设计《教务信息管理系统》

    (87条消息) 数据库系统课程设计<教务信息管理系统>python连接pymysql-MySQL代码类资源-CSDN文库 本文使用python和mysql创建一个基础中的基础的教务信息管理 ...

  2. 数据库课程设计:图书信息管理系统(Java+MySQL)(附程序)

    期末数据库课程设计做了个图书信息管理系统,由于老师给的选题给得早,所以我在开学后的几周就开学搞了,删删改改整了好多,在此整理分享一下: 项目简介: 随着社会的发展,人们对知识的需求也在不断增长.书籍作 ...

  3. C++/数据库课程设计_诊所信息管理系统_系统介绍

    系统介绍 本系统是一个诊所信息管理系统,可以作为C++或者数据库课程设计的参考,实现了患者挂号.支付.电子病历, 医生诊断.开处方.查看病历,医生.患者.药房.科室管理以及药品进销存. 针对用户的具体 ...

  4. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  5. 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

    <JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...

  6. 数据库课程设计-----------学生选课管理系统的设计

    由于时间关系,里面许多图片都已经变形或错位 课程设计(学年论文) 题目:学生选课管理系统的设计与实现 系    院计算机科学技术系 专    业计算机科学与技术 班    级 姓    名 学    ...

  7. 数据库应用设计学生宿舍管理系统java+SQL

    数据库应用设计学生宿舍管理系统java+SQL 具体功能如下: 1.用户登录界面 学生通过用户名和密码获取登录权限,宿舍楼管理员通过用户名和密码获取登录权限. 2.学生用户界面 本宿舍楼的学生能查询其 ...

  8. oracle学生考勤,Oracle数据库课程设计――学生考勤系统的Oracle实现1

    Oracle数据库课程设计――学生考勤系统的Oracle实现1 辽宁工程技术大学 Oracle数据库课程设计报告 学生考勤系统 姓 名: XXXXX 班 级: 计SJ08-1班 学 号: 完成日期: ...

  9. java毕业生设计学生学籍信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计学生学籍信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计学生学籍信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S ...

最新文章

  1. 【Qt】QtCreator无法调试终端程序,启动报错SIGSTOP
  2. Bootstrap+PHP实现多图上传
  3. jconsole观察分析Java程序的运行,进行排错调优
  4. Spring自动扫描组件
  5. 零基础学云计算怎么样?2020年云计算学习路线
  6. 539.最小时间差-LeetCode
  7. C++ 动态联编实现原理分析
  8. .Net MVC中设置默认启动为某区域的视图
  9. ImageLoader的简单分析(二)
  10. 安全策略篇 ASPF:隐形通道
  11. php转换ofd文件格式,OFD文件转换服务
  12. 功率因数cosφ仪表盘
  13. jersey 过滤_Jersey的Filter详解
  14. 小程序梦想贩卖机v2-1.0.88-带4插件(2022.9.8更新)
  15. realityOS会是苹果的新操作系统吗?
  16. IPCAM视频数据解码并处理
  17. 一般网站上传图片的大小是多少?网站图片上传格式大小建议 附带简单修图方法
  18. html中怎样写渐变色代码,纯css简单几行代码实现颜色渐变效果 非常漂亮
  19. Vue的生命周期过程详解
  20. 步进电机+protues

热门文章

  1. 中秋福利!三维重建/SLAM/点云/相机标定/深度估计/缺陷检测课程
  2. postgres 导入纯文本数据txt
  3. Outlook关闭时最小化到任务栏的完美解决方法
  4. c语言的菜单制作,C语言的菜单制作.ppt
  5. Python菜鸟爬虫技巧
  6. openpyxl学习笔记(2020--8-11)——制图续
  7. Talk预告 | 普渡大学王虓:如何利用合作对抗学习来提升自监督学习
  8. LeetCode.M11.盛最多水的容器
  9. SSM和SSH框架对比
  10. android 沉浸式状态栏导致布局被遮挡,沉浸式状态栏导致华为手机虚拟按钮被遮挡的解决办法...