1、数据库应用系统设计数据库应用系统综合设计题目:学生宿舍管理系统专业:网络工程姓名:刘 梦 昕学号:20151047017班级:2015级2班任课教师:刘丽娟2017 年6月目录1需求分析31.1用户需求的获取31.2系统的功能结构32系统开发环境及语言42。1主要开发技术及所需工具简介42.1.1 C42.1。2 sql server 201243概念结构设计54逻辑结构设计65系统功能功能设计与实现75.1学生宿舍信息75。2班级信息管理75.3宿舍信息管理85。4系别信息管理85。5学生入住信息登记95.7贵重物品登记95。6外来人员登记105。8用户管理106程序调试116。1程序的测试
2、116.1。1 测试的重要性及目的116。1.2 测试的步骤126.1。3 测试的主要内容126。2总结137结论13附录15用户手册181需求分析随着计算机的发展,网络信息化管理系统已经用于各行各业。但是目前大多数的高校仍然采取人工管理的方式,人工管理只适用于小型的学校,并且存在很多弊端.人工管理管理存在效率差、数据不方便查阅、容易失误、耗费很多人力物力等问题。高校学生宿舍是学生生活休息、学习、交流的场所,对大学生的身心健康有着直接的影响。随着计算机的发展与网络的推广,基于计算机网络代替人工管理学生宿舍的方式得到了恨大的重视.人工管理学生宿舍对于小型学校而言还不存在太大的问题,但是对于大型学
3、校来说这种方式产生的矛盾日益突出.特别是在学生信息量很多的情况下查询某个学生的宿舍信息,需要一条一条的去找,这就显得很麻烦,效率相当低.反之如果采用计算机网络化的管理,这将会大大缩短工作时间,提高效率,而且利用计算技术对大量数据的保存也十分的便捷。采取这种方式与人工管理相比还可以节约很多资金,因此,开发一学生宿舍管理系统十分有必要。目前,计算机管理信息系统逐渐普及,许多高校教学管理系统得到广泛应用,学生宿舍管理系统是管理系统的一种,是高校学生宿舍结合网络技术的应用实例.然而,针对高校学生宿舍而设计的管理系统十分少见,大多数高校的学生宿舍管理仍处于人工管理阶段,从管理角度来讲,有一定的缺陷和漏洞
4、,手工操作使得宿舍管理员劳动力大,管理不及时。随着学校的信息化发展,人工管理方式必将会被淘汰。针对学校的实际情况,设计一套对学生宿舍管理信息系统十分必要。所设计的这套管理系统将提高宿舍管理部门的工作效率;充分利用资源;减少不必要的人力;减少学校的财政支出;方便宿舍管理部门的人员全面实时的掌握学生学生住宿情况等目的;为宿舍管理部门,开发设计专用系统-学生宿舍管理系统,来进行管理学校的学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度十分必要。1.1用户需求的获取 学生宿舍管理是当代学校中不可或缺的组成部分,在信息化飞速发展的今天,它的出现已经成了一种必然,本文件从宿舍管理系统的历史和现状
5、进行分析,以求本系统的设计具有实际的意义,并得到它在未来的发展,从而给谁时代的脚步,做出一个高质量的、安全性好的的宿舍管理系统、使其不仅能满足学校现在的需要,也能满足将来一段时间的需要。 1.2系统的功能结构系统要求用户必须输入正确的用户名和密码才能进入系统。管理员与用户登陆的账户名及密码不同,登陆成功后具有不同的权限。学生宿舍管理系统在实现上应该具有如下功能:1。系统应该提供学生住宿情况的基本登记。(管理员和用户)2.系统应提供人员来访登记及结束访问的详细登记.(管理员)3.系统应提供查询功能.对学生的信息、宿舍信息、寝室信息、班级信息的查询(管理员)4。出入管理。对外来的人员以及贵重的物品
6、进行登记(管理员)5.系统应提供增加、删除、修改用户帐户的功能.(管理员)6。系统还应具有添加、修改、删除学生及员工基本信息的功能.(管理员)7。对用户的管理(管理员)8。退出系统(管理员与用户)2系统开发环境及语言2。1主要开发技术及所需工具简介数据库技术方面:采用Mycrosoft Sql Sever 2012;模式方面:采用C/S模式;开发工具方面:采用C#。模式采用C/S模式C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器.对应的优点就是客户端响应速度快.2.1.1 Cc是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语
7、言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承).C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为。NET开发的首选语言。C是面向对象的编程语言.它使得程序员可以快速地编写各种基于MICROSOFT 。NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域.C使得C+程序员可以高效的开发程序,且因可调用由 C/C+ 编写的本机原生函数,因此绝不损失C/C+原有的强大的功能。因为这种继承关系,C与C/C+具有极大的相似性
8、,熟悉类似语言的开发者可以很快的转向C。2。1。2 sql server 2012全新一代 SQL Server 2012 为用户带来更多全新体验,,独特的产品优势定能使用户更加获益良多。企业版是全功能版本,而其它两个版本则分别面向工作组和中小企业,所支持的机器规模和扩展数据库功能都不一样,价格方面是根据处理器核心数量而定. 3概念结构设计宿舍入住住住宿舍编号性别学号姓名数据修改、添加、查询出入登记管理员管理住住组成宿舍楼学生图1-1学号班级姓 名 入住信息查询用户 图1-24逻辑结构设计图1-3学生信息表11姓名学号性别班级宿舍号宿舍楼号系别赵恒旭100男计科15。230925计科范力川10
9、056男计科15。230925计科唐智1212男计科15。230925计科刘梦昕153男计科15。230925计科5系统功能功能设计与实现5。1学生宿舍信息图1-45。2班级信息管理图1-65.3宿舍信息管理图1-55。4系别信息管理图1-75.5学生入住信息登记图1-85.7贵重物品登记图1-105。6外来人员登记图195。8用户管理图1116程序调试在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正.但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果.这类错误隐蔽性强,有
10、时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。6。1程序的测试6。1。1 测试的重要性及目的(1)测试的重要性软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难. 事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方
11、式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40以上。而在软件开发的总成本中,用在测试上的开销要占30到50。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。 在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存
12、在一些不正确的看法和错误的态度,这包括: 认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感; 以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定; 测试工作枯燥无味,不能引起人们的兴趣; 测试工作是艰苦而细致的工作; 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法. 这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量. (2)测试的目的 如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。 软件测试是为了发现错误而执行程序
13、的过程; 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此. 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,
14、完整的测试是评定测试质量的一种方法。6。1。2 测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成.因此,大型软件系统的测试基本上由下述几个步骤组成:(1)模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误.(2)系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。(3)验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误.6。1.3 测试的主要内容为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试
15、。 (1)单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。 (2)集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 (3)确认测试 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作.经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应
16、该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。 (4)系统测试 软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试.包括恢复测试、安全测试、强度测试和性能测试等。 单独对系统的测试主要从以下几方面入手: 功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准. 强度测试及性能测试:测试系统能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。 安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。针
17、对本系统主要是对权限系统的测试和对无效数据、错数据、和非法数据干扰的能力的测试.经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。 6.2总结系统完成后,进行了一系列的调试与测试,主要是针对系统功能是否按照设计要求正常工作,以及系统对大量数据的处理能力.通过调试,系统功能都能正常工作,但调整了分页中显示的数据条数,修改了部分组件的显示位置,以达到一定美化效果;同时在对大量数据的处理方面,信息录入功能需要一条一条的录入,存在工作量较大的问题,其他功能不存在问题。通过调试,用户管理功能发现设计上存在不完善的设计考虑,需要进一步完善,此外需要利用其他途径实现SQL与电子表之间
18、的转换。通过系统调试后,经过指导老师建议,存在以下问题可待优化1. 进一步完善用户管理功能的设计;2. 寻找其他途径实现SQL与电子表之间的转换;3. 可以多建宿舍管理的其他子系统,如宿舍水电收费系统,宿舍人员来访考勤系统,宿舍物件维修管理系统等,进行组合使用。7结论通过自己不懈地学习C的基本知识和开发技巧,以及系统后期的调试与完善,实现了学生宿舍信息管理系统的最基本的功能:1. 实现了信息管理系统的查询功能,包括了快速查询功能和分类查询功能;2. 实现了信息管理系统的信息录入,信息修改和信息删除功能;3. 信息删除功能可批量删除信息,但信息录入功能未能做到批量录入,有点不足;本次设计对系统进
19、行了详细的需求分析,对开发所需要的主要技术做了阐述。同时设计并实现了一个简单的学生宿舍管理系统。该系统基于C/S模式开发,使用C实现前后台的数据交互,后台选用SQL Sever 2012作为数据库服务器。系统经过调试和试运行,能够正常运行。但是因为初次开发,系统中难免会存在各种问题,有待进一步完善。学生宿舍是每一位在校同学学习、生活和交流的地方,良好的管理体系对学校和同学都至关重要。该系统的研发,使后勤和管理人员脱离了人工操作阶段,适应了现代化物管的需要,减轻了工作人员繁重而冗长的工作量。同时也方便了数据的存储,增加了安全性。本设计也锻炼了我综合运用以前所学知识的能力和实际动手能力。附录nam
20、espace StuApart partial class login / / Required designer variable。 / /summary private System.ComponentModel。IContainer components = null; / summary / Clean up any resources being used. / /summary / param name=”disposing”true if managed resources should be disposed; otherwise, false。 / Required meth
21、od for Designer support - do not modify / the contents of this method with the code editor. / /summary private void InitializeComponent() this。label1 = new System。Windows。Forms。Label(); this.textBox1 = new System。Windows.Forms.TextBox(); this.label2 = new System.Windows。Forms.Label(); this.textBox2
22、= new System.Windows。Forms。TextBox(); this。button1 = new System。Windows.Forms。Button(); this。button2 = new System。Windows.Forms。Button(); this.button3 = new System.Windows。Forms.Button(); this。SuspendLayout(); / / label1 / this。label1。AutoSize = true; this.label1。Location = new System.Drawing。Point(
23、46, 54); this。label1.Name = ”label1”; this.label1。Size = new System。Drawing。Size(41, 12); this。label1.TabIndex = 0; this。label1。Text = 用户名; / / textBox1 / this。textBox1。Location = new System.Drawing。Point(115, 51); this.textBox1。Name = ”textBox1; this。textBox1。Size = new System。Drawing。Size(118, 21)
24、; this.textBox1.TabIndex = 1; / / label2 / this。label2。AutoSize = true; this.label2.Location = new System。Drawing。Point(48, 95); this。label2.Name = label2”; this。label2。Size = new System。Drawing。Size(29, 12); this.label2.TabIndex = 2; this。label2。Text = ”密码”; / / textBox2 / this。textBox2。Location =
25、new System.Drawing。Point(115, 92); this.textBox2。Name = ”textBox2”; this.textBox2。Size = new System.Drawing.Size(118, 21); this.textBox2。TabIndex = 3; / / button1 / this.button1。Location = new System.Drawing。Point(48, 155); this。button1.Name = ”button1”; this.button1。Size = new System。Drawing.Size(7
26、3, 23); this。button1。TabIndex = 4; this.button1。Text = ”管理员登录; this。button1。UseVisualStyleBackColor = true; this。button1。Click += new System。EventHandler(this。button1_Click); / / button2 / this。button2.Location = new System。Drawing。Point(136, 154); this。button2。Name = ”button2”; this。button2。Size =
27、new System。Drawing。Size(61, 23); this.button2。TabIndex = 5; this。button2。Text = 学生登录”; this.button2。UseVisualStyleBackColor = true; this。button2。Click += new System。EventHandler(this.button2_Click); / / button3 / this。button3.Location = new System。Drawing。Point(214, 154); this。button3。Name = ”button
28、3; this。button3.Size = new System。Drawing。Size(75, 23); this.button3.TabIndex = 6; this.button3.Text = ”重置”; this.button3。UseVisualStyleBackColor = true; this。button3。Click += new System。EventHandler(this。button3_Click); / / login / this。AutoScaleDimensions = new System。Drawing.SizeF(6F, 12F); this。
29、AutoScaleMode = System。Windows。Forms。AutoScaleMode。Font; this.ClientSize = new System。Drawing.Size(342, 224); this。Controls.Add(this.button3); this。Controls。Add(this.button2); this。Controls。Add(this.button1); this。Controls.Add(this。textBox2); this.Controls。Add(this。label2); this。Controls。Add(this。te
30、xtBox1); this.Controls。Add(this.label1); this。Name = ”login”; this.Text = ”登录系统; this。ResumeLayout(false); this。PerformLayout(); endregion private System。Windows。Forms.Label label1; private System。Windows.Forms。TextBox textBox1; private System。Windows.Forms.Label label2; private System。Windows。Forms。TextBox textBox2; private System.Windows.Forms。Button button1; private System.Windows。Forms。Button button2; private System.Windows.Forms.Button button3; 用户手册1-2登录方式信息表字段名称数据类型说明adminadmin刘梦昕123文本 文本 文本 数字管理员密码用户名 密码管理员方式登陆进去图112以用户方式登陆图1-13