数据库课设(宿舍管理系统附带源码,SQLServer+VisualStudio+C#)

前言


提示:该课程设计使用C#+sql语言,文章为原创,仅供参考


链接: https://pan.baidu.com/s/17cD9JKikljMehg6M5sp5jQ 提取码:6wog 复制这段内容后打开百度网盘手机App,操作更方便哦

在这里插入图片描述


一、 概述

(一)、程序名称: 学生宿舍管理系统

(二)、开发平台:Window 10

Microsoft Visual Studio 2010
Microsoft SQL Server 2008

(三)、运行环境: Windows NT/2000/XP/VISTA/7/8/10

(四)、系统管理的对象:

◇系统用户信息:用户编号、用户名、密码、用户权限
◇宿舍信息:宿舍编号、宿舍号、宿舍楼、楼层、床位数、单价、人数
◇宿舍楼信息:楼编号、宿舍数、楼位置
◇学生信息:学号、姓名、性别、年龄、所在院系、年级、电话
◇学生进出记录: 学号、进入时间、离开时间、是否晚归、原因
◇调整宿舍信息:学号、调整时间、原宿舍、新宿舍、理由
◇学生宿舍信息:学号、宿舍编号

(五)、开发背景:

学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。

(六)、程序基本原理及技术需求说明:

为了使系统使用者操作方便,提供便利的数据查询修改和删除信息,在程序上开发出了八个主面板每个面板都负责不同的功能,可以查询、添加、删除学生、宿舍、楼房等信息,便于管理、节省人力。同时,提供了人性化、美观的操作界面、尽可能的为用户的录入,查询等操作提供方便,同时,系统应具备以下功能:
◇用户管理:不同权限用户实现不同管理功能。超级管理员可以管理宿舍楼 信息,楼中的宿舍房等信息;普通管理员可以管理宿舍成员;普通用户可查看宿舍成员的信息。
◇宿舍管理:根据院系、年级分配寝室,登记住宿情况,可调整学生宿舍。
每个同学只能在一个宿舍,不同宿舍的费用标准可以不同。不同院系、年级的同学可以住同一间宿舍。
◇学生管理:实现入住学生信息的登记、维护和查询功能。
◇信息查询:按公寓楼号、学生姓名等查询住宿信息。
◇出入登记:对学生进出公寓的情况进行登记、实现基本的出、入监控功能。

二、 程序概要设计

(一)、程序结构图

在这里插入图片描述

(二)、数据库设计

1.Building

在这里插入图片描述

2.Dormitory

在这里插入图片描述
在这里插入图片描述

3.Manager

在这里插入图片描述

4.Student

在这里插入图片描述
在这里插入图片描述

5.StuDormitory

在这里插入图片描述

6.Visiter

在这里插入图片描述

7.Adjust

在这里插入图片描述

8.InOut

在这里插入图片描述
在这里插入图片描述

(三)、程序的文件结构

数据库信息保存在mdf文件中,ldf文件为数据库的日志文件。cs文件为程序类文件,存放定义的各种类以及界面信息,jpg文件为程序背景图片,用于美化界面,resx 文件为资源文件 ,是用于将逻辑层与显示层隔离。csproj文件为程序的工程文件
关系E-R图
在这里插入图片描述

(四)、分配宿舍子E-R图

在这里插入图片描述

三、程序详细设计

(一)、系统数据库的设计

1.创建数据库

CREATE DATABASE [dms] ON PRIMARY
( NAME = N’test’, FILENAME = N’E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N’test_log’, FILENAME = N’E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
CREATE DATABASE home
ON
(NAME = home_Data,
FILENAME = ''E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf ',
SIZE = 3072kb
MAXSIZE = UNLIMITED
FILEGROWTH =1024kb
LOG ON
(NAME = ’ test_log ',
FILENAME = ’ E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf ',
SIZE = 1024kb,
MAXSIZE = 2048gb,
FILEGROWTH = 10%
此段代码为数据库的建库代码,通过SQL语句建立了名为test的这个数据库,位置为: E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

2.建表

CREATE TABLE [dbo].[Manager](
[mid] [int] NOT NULL,
[pass] char NOT NULL,
[name] varchar NOT NULL,
[permision] char NOT NULL,
CONSTRAINT PRIMARY KEY CLUSTERED
([mid] ASC)
) ON [PRIMARY]
此段为数据库的建表代码,建立了名为Manager的表,以及表内的各个列名。

CREATE TABLE Adjust(
sid bigint NOT NULL,
atime date NOT NULL,
olddid int NOT NULL,
newdid int NOT NULL,
reason nvarchar(50) NULL,
PRIMARY KEY (sid ,atime),
foreign key(sid) references Student(sid)on UPDATE CASCADE ON DELETE CASCADE,
foreign key(olddid) references Dormitory(did)on UPDATE CASCADE ON DELETE CASCADE,
foreign key(newdid) references Dormitory(did)on UPDATE CASCADE ON DELETE CASCADE,
)
该段建立了名为Adgust的表,其中,主码为sid 外码为olddid和newdid ,同时设置了级联操作,在主表更新或删除记录是能够将与其相关的信息也进行更新
后面的几个表格的建表代码都与这段大同小异,无异于数据的类型不一样,以及每一列的列名不一样,是都能被设置成空值,以及是否有主键,主键为哪一个列。

(二)、程序主体代码

1.连接数据库

string constr = @“data source=.;database = dms; integrated security = true”;
SqlConnection connection = new SqlConnection(constr);
connection.Open();
此段代码为在C#的窗口中连接数据库用的语句,但是这个语句在C#中调用SQL语句要添加头文件using System.Data.SqlClient;但是每次连接完数据库后都建议使用connection.Close();来关闭数据库的连接,以造成数据库的信息的泄露。

2.获取数据库信息

public static DataSet 获?取¨?数ºy据Y(string sqlStr)
{
try
{
try
{
conn.Open();
}
catch
{
}
SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn);
DataSet myDataSet = new DataSet();
myDataSet.Clear();
myAdapter.Fill(myDataSet);
conn.Close();
if (myDataSet.Tables[0].Rows.Count != 0)
{
return myDataSet;
}
else
{
return null;
}
}
catch
{
MessageBox.Show(“打䨰开a数ºy据Y库a失º¡ì败㨹”, “提¬¨¢示º?”);
return null;
}
}
为方便程序需要,直接将获取表格数据的操作分装为一个静态类,以便于其他类或方法调用

3.登录功能

为了区分登录账号信息,避免过多的无用访问数据库,在登录的时候检查了账号信息

并通过正则表达式检查信息
public class 正则¨
{

    public static bool IsInt(string value)//正整数
    {
        return Regex.IsMatch(value, @"^[1-9]\d*$");
    }

}

接着通过SQL的SELECT语句来查询在manager表中的信息
String 数据库字符串 =“select * from Manager where mid=’” + 账号Text.Trim() + “’”;
DataSet 数据集 = new DataSet();
数据集 = database.获取数据(数据库字符串);
if (数据集 == null)//没有匹配账户
{……}
else登录成功
{
String 原密码 = 数据集
Tables[0].Rows[0][“pass”].ToString();
if (原密码Trim().Equals(密码.Text.Trim()))//匹配成功
{……}
else //匹配失败
{……}
}

若在查询中找到一样的账号名,则使用if语句来判断输入的密码是否与数据库中的该账号所对应的密码是否一样。若一样则登录成功。否则为密码或账号错误,无法登录。登录后会跳转页面到主菜单的界面,并且关闭掉不用使用的登录窗体。

4.查看学生同一宿舍成员信息

DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds = database.获取数据
(@“select *from Student where sid in
(select sid from StuDormitory where did in
(select did from StuDormitory
where StuDormitory.sid=’” + 登录d.ToString() + “’))”
);
改选择语句先从学生-宿舍表里选择和当前学生相同宿舍编号的学号,再在学生表里用聚合语句选出,具有所选学号的学生
if (ds != null)
{
int count = ds.Tables[0].Rows.Count;
dt.Columns.Add(“sid”, typeof(string));//添加列
……
……
dt.Columns.Add(“phone”, typeof(string)) //添加列
for (int i = 0; i < count; i++)
{
DataRow dr1 = dt.NewRow();
dr1[“sid”] = ds.Tables[0].Rows[i][“sid”].ToString();
……
……
Convert.ToDateTime(ds.Tables[0].Rows[i][“birth”].ToString()).Year).ToString() + “岁¨º”;
dr1[“faculty”] = ds.Tables[0].Rows[i][“faculty”].ToString();
dr1[“class”] = ds.Tables[0].Rows[i][“class”].ToString();
dr1[“phone”] = ds.Tables[0].Rows[i][“phone”].ToString();
dt.Rows.InsertAt(dr1, 0);
}
信息表.DataSource = dt;
信息表.Columns[“sid”].HeaderText = “学¡ì号?”;
……
……
信息表.Columns[“year”].HeaderText = “年¨º龄¢?”;
信息表.Columns[“year”].DisplayIndex = 3;

        }
        else
        {
            信息表.DataSource = null;
        }
在这里将查询到的表数据作为临时数据、再新建一个显示表,由于在基本表里存放的数据需要经过边换,
例如学生的生日转换成年龄,再为显示表增加一列,显示年龄。

5. 空余宿舍获取

ds = database.获取数据
("select * from Dormitory where bed> (select COUNT (StuDormitory.did) from StuDormitory where StuDormitory.did=Dormitory.did) ")
该语句从学生-宿舍表里列出每一个宿舍标号的记录数量,该数量就表示住宿的学生数量,该数量与Dormitory 里的床位相比,选出床位大于数量的宿舍。

6.修改信息

sqlStr1 = “update Building set bid=’” + 楼号文本框.Text.Trim() +
“’,num=’” + 宿舍文本框.Text.Trim() +
“’,local=’” + 楼位置文本框.Text.Trim() +
“‘where bid=’” + 楼号文本框.Text.Trim() + “’”;
database.更新(sqlStr1);
UPDATE的命令用于修改数据库数据的语句,用于修改更信息。此处的UPDATE语句用于将程序窗体上的各个文本框分别赋值给表中的各个列。另外此处的SQL语句中有添加条件,在语句的末尾有where,这里的where用来匹配查找这次需要修改的表所在的行。bid为Bulidinng表的主键,此处的功能就是通过这个主键来判断我们要找的行从而准确的修改数据库中的信息。

7.增加功能

if (分配宿舍id.Text.Equals("") || 分配宿舍学号显示框.Text.Equals(""))
{
MessageBox.Show(“缺¨¡À少¦¨´选?中D数ºy据Y!”, “提¬¨¢示º?”);
return;
}

            if (!IsNotExist_OtherSex(分配宿舍id.Text.Trim(), 分配宿舍学号显示框.Text.Trim()))
            {……}
            try
            {

string str2 = @" insert into StuDormitory values(’" + 分配宿舍id.Text.Trim() + “’,’” + 分配宿舍学号显示框.Text.Trim() + “’)”;
database.更新(str2);
……
……
}
Catch
{……}
添加功能使用了INSERT的命令,进行数据库信息的添加,此处为将窗口的中的字符赋值给数据库中的表的各个列的数据。在将数据写入数据库前代码中有一个if条件语句,例如插入学生,首先要检查所插入的学生是否存在,存在后再检查宿舍里有没有其他先别性别的学生,如果有就不允许插入,没有就再检查所插入的宿舍名额满了没,或是该宿舍是否没人入住,通过以上条件后才允许入住。

8.删除功能

sqlStr1 = “delete from Dormitory where did=’” + 宿舍id.Text.Trim() + “’”;
database.更新(sqlStr1);
宿舍获取();
删除功能也是通过让用户输入一个条件,通过这个条件,在该表中寻找到符合要求的主键所在的行,将该行从这个表中删除。这个删除功能也可以在本系统中其他板块的的删除中使用,只要在表中有可以识别的唯一标识,就可以将其设为主键,然后通过主键来删除整行的数据库的数据。

四、 程序发布和测试

(一)、程序测试

1.登录

在这里插入图片描述

2.学生界面

在这里插入图片描述

3.查看宿舍人员信息

在这里插入图片描述

4.查看出入记录

在这里插入图片描述

5.管理员界面(宿舍楼管理)

在这里插入图片描述

6.管理员界面(宿舍管理)

在这里插入图片描述

7.管理员界面(宿舍报修管理)

在这里插入图片描述
点击标题可以排序,点序号前面可以自动选择 点击删除则直接删除报修信息

8.管理员界面(学生信息管理)

在这里插入图片描述
宿舍管理员会提示权限不足
在这里插入图片描述

9.管理员界面(分配宿舍)

在这里插入图片描述
该功能会自动列出还未分配的学生以及还有空余床位的宿舍,管理员只需点击学生与宿舍,即可将学生与宿舍信息绑定到信息栏,进而分配宿舍

10.管理员界面(调整宿舍)

在这里插入图片描述

11.管理员界面(记录登记)

在这里插入图片描述

五、 总结与分析

(一)、程序优缺点分析

优点:程序总体结构简单、执行高效,功能较为完善,使用简单方便易上手。
程序的界面看上去非常的简洁所有功能都清晰可见对于数据库的操作十分的简单,就算是没有任何计算机知识的人也可以轻松上手这个程序。整个程序逻辑严谨,有明确的提示引导用户使用。
缺点:程序的部分功能考虑得可能不够周全,容错性不够高,输入信息时有很多格式上的容错性没有做。
SQL语句简单基础不够高级,程序对数据库的操作有待加强。

(二)、总结与感悟

历时两个星期,在不断地纠错和改正中终于完成了数据库大作业,通过这次的大作业,我明白到在开发这样的数据库系统的过程中要不断思考,不断创新,这需要我们付出更多的精力和时间。例如价格数据库里表格的数据进行读写,需要将其转换成程序能够兼容的数据,在设计基本表时,还要考虑表格与表格之间的关联,是否符合3nf范式或者bcnf范式以及更高。我们要不断钻研,研究,思考放开我们的思维去打代码。要不断的汲取学习心得知识,复习旧的知识,将各种知识串联起来。

总结

继续加油!!!!码字不易,喜欢就点个赞吧!

  • 72
    点赞
  • 538
    收藏
    觉得还不错? 一键收藏
  • 51
    评论
目录 宿舍管理系统 - 1 - 一 概述 - 1 - 1.1计背景 - 1 - 1.2计目的 - 1 - 1.3涉及范围及相关领域 - 2 - 二 需求分析 - 2 - 2.1功能需求 - 2 - 2.2数据流图 - 3 - 三 概念结构计 - 4 - 3.1数据库实体E-R图 - 4 - 四 关系结构计 - 7 - 4.1关系模式 - 7 - 4.2其他约束关系的创建 - 7 - 五 物理结构计 - 8 - 5.1数据表 - 8 - 六 用户界面 - 12 - 七 数据库运行和维护 - 12 - 八 心得 - 13 - 九 参考文献 - 14 - 宿舍管理系统 一 概述 1.1计背景 当今时代是飞速发展的信息时代,在各行各业离不开信息处理,这正是计算机被广泛 应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理,使用计 算机进行信息控制,不仅提高了工作效率而且大大的提高了其安全性。尤其对于复杂的 信息管理,计算机能够充分发挥它的优越性。 管理信息系统是进行信息采集、存储、加工、维护和使用的系统,它是随着管理科学和 技术科学的发展而形成的。信息管理系统是一个必不可少的系统,尤其是像一个大的公 司或学校,员工和学生的公寓管理更是需要一个完整的信息管理系统管理,以实现更 高效(包括个人信息的录入、查询和删除等)的管理,它的应用实现了宿舍信息的有利 维护和管理。一直以来我们一些学校或者公司靠传统的人工方式来管理宿舍的一切,这 种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文 件和数据以及数据的赘余,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识 ,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分 ,使用计算机对宿舍进行管理,有着手工管理所无法比拟的优点,例如:检索迅速、查 找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提 高宿舍管理的效率,因此开发这样的一套宿舍管理系统成为很有必要、很有意义的事。 此外,在开发的过程中也可以加深对数据库这门学科的认识,发现问题解决问题的过程 更是学习的好机会。 1.2计目的 开发宿舍管理系统的目的是提高宿舍管理的效率,同时在开发此系统的同时也可以加 深对数据库管理信息的认识,既熟练了知识又可以帮助同学、老师和学校解决实际问题 。 1.3涉及范围及相关领域 本系统只是侧重于个人一些简单的信息管理,其它的一些信息管理不做要求。涉及的 技术领域有:C#、SQL server。 计分析: 分析:宿舍管理系统主要用来管理公寓以及宿舍的同学或员工的所有相关信息。宿舍管 理主要包括内务评比、员工、学生的日常管理等等。计时主要将各个实体通过联系和 属性实现。属性在数据字典中已有这里不再列举。 预期结果: 用户可以利用此宿舍管理系统宿舍信息资料进行高效、系统、安全的管理。 二 需求分析 2.1功能需求 1. 用户登陆管理: 包括管理员的权限管理均包括在内。 2. 公寓管理:包括管理所有的公寓和各个公寓的宿舍。 3. 学生管理:包括学生注册、信息录入、以及离校管理等。 4. 日常管理:包括日常打分统计、水电费等的查询、添加、删除等操纵。 5. 系统管理:包括密码等的修改。 根据上述系统功能的分析,下面将进行具体的实现。从技术角度分析,这像开发工作 所涉及的专业技术如下: 1技术平台(Operating System):Windows 系列。虽然理上对操作系统没有作更具体的规定,但由于所开发中涉及的SQL server的应用,所以建议最好使用windows 2000以上的版本 2 开发工具:Microsoft Visual Studio 2008 3,数据库管理系统(DBMS)SQL server2005 2.2数据流图 三 概念结构计 3.1数据库实体E-R图 本数据库包括以下几个实体:用户实体、公寓实体、宿舍实体、学生实体、员工实体、 内务实体、水电费实体、注册实体等,前五个实体E-R图如下: 3.1.1用户E-R图 3.1.1用户ER图 3.1.2公寓E-R图 3.1.2公寓E-R图 3.1.3宿舍E-R图 3.1.3宿舍E-R图 3.1.4 学生E-R图 3.1.4学生E-R图 3.1.5员工E-R图 3.1.5员工E-R图 3.1.6系统整体ER图 实体E—R图 四 关系结构计 4.1关系模式 在完成数据的概念模型计即E- R图后,即可进入数据库的逻辑计阶段。数据库的逻辑计即把得到的满足第三范式的 关系转化为特定的数据库管理系统下的数据库。再根据每个实体的性质不同和联系,即 可得到相对应数据表,然后对各个表之间的不
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值