万字长文毕业设计 C#开发基于BS的实验室预约管理系统 毕业论文论文+数据库+源程序
Posted CSDN专家-小兔子编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万字长文毕业设计 C#开发基于BS的实验室预约管理系统 毕业论文论文+数据库+源程序相关的知识,希望对你有一定的参考价值。
一、课题
C#开发基于BS的实验室预约管理系统(1万7千字)
二、目 录
此处省略几千字 https://blog.csdn.net/frank2102
三、系统需求分析
通过对系统的终端用户和客户进行调研,总结得到本系统典型的需求说明文本,关键部分如下:
- 学生可以预约实验,退定实验。
- 实验管理员可查询所有实验中心处理有关数据。也可以设下一级别权限的管理员。
- 系统应该可以对基础数据进行维护。
- 系统还应该提供强大的数据统计、查询等功能。
- 系统客户端运行在Windows平台下,服务器端可以运行在Windows平台下,系统还应该有一个较好的图形用户界面。
- 系统应该有很好的可扩展性。
1、分析需求
分析需求的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制,因此,开放实验室预约管理系统的需求分析应该是开发人员和用户或者客户共同完成的。
2、性能需求
(1)系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息的处理。由于系统的查询功能对于整个系统的功能和性能完成很重要。从系统的多个数据来源来看,学生信息查询、实验信息查询、预约结果查询、实验成绩查询及预约实验、撤消预约,其准确性很大程度上决定了系统的成败。因此,在系统开发过程中,系统采用优化的SQL语句及安全扩展存储过程来保证系统的准确性和及时性。
(2)系统的开放性和系统的可扩充性
系统在开发过程中,应该充分考虑以后的可扩充性。例如实验信息属性添加、修改,用户查询的需求及管理工作的分级管理,信息输出打印报表等模块也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
(3)系统的易用性和易维护性
系统是直接面对使用人员的,而有些使用人员往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;系统中涉及到的数据是高校实验室相当重要的信息,因此系统为不同角色的用户提供了方便的管理后台进行数据管理,特别为系统管理员提供了数据备份,日常安全管理,防止系统意外崩溃等功能。
(4)系统的响应速度
系统设计中摒弃大量数据冗余,提出了优化数据库的解决方案,大量使用存储过程,大大提高系统响应时间和速度。系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。严格保证操作人员不会因为速度问题而影响工作效率。
3、数据需求
(1)数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。因此,本系统设计时对数据输入进行了合法性较验,确保数据的准确性。在系统中,数据的输入及处理往往是大量的,因此系统拥有批处理能力,以保证迅速的处理数据。
(2)数据的一致性与完整性
由于系统的数据是共享和关联的,所以如何保证这些数据的一致性,是系统必须解决的问题。为解决这一问题,系统创建了表间关系,并定义了触发器、完整性约束,严格约束数据的更新与删除,减少数据冗余,增强数据一致性及完整性。
(3)数据的共享与独立性
整个系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的健壮性[10]
四、系统模块设计
在前一阶段,通过需求分析,我们对系统的定义及功能模块有了整体描述。在下面的数据库设计中实现系统各实体定义,实体间的关系及数据信息流在关系数据库中的映射结果和数据信息的物理存储问题。在以下的详细设计中将对在本阶段中对系统所做的所有详细设计进行说明。
在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。主要的工作有:根据在需求分析中所描述的数据、功能、运行、性能需求和系统所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),以及下面的几个问题:
(1)有效实现三类角色(学生、教师、管理员)的业务逻辑。
(2)判断信息的正误并采取相应的校验处理步骤。
(3)进行数据库的查询、修改工作。
(4)接受并判断错误,输出相应的出错消息。
1、系统功能结构图
本系统主要由三部分组成:学生系统模块、教师系统模块、系统管理员模块。
2、学生系统模块
学生想进入系统进行开放实验预约,必须先注册,否则学生是不能进入系统进行预约的。系统在此处利用存储过程封装了此处理过程,安全性高,防止非法用户进行SQL注入。
- 浏览实验信息:学生在线浏览实验信息,查看系统为实验信息设置的上限人数,当上限人数未满时,该实验才可进行预约,否则不能进行预约。并且浏览的实验信息中全部为当前时间点后进行的实验。
- 预约实验:凡进行某实验预约的学生,不可再重复进行该实验预约。若实验信息中上限人数不足,就可预约,直至预约人数达到上限人数或者时间超出实验信息规定的实验时间。否则不能进行预约。
- 提交实验报告:凡是进行预约实验的学生必须在预约实验完成后三天之内将实验报告提交,否则系统自动设置为不可提交。
- 预约实验结果查询:学生可按给定的关键字进行预约实验结果查询,查看自己预约的实验是否通过系统审核。若通过,则必须按时到实验地点参加开放实验,否则系统会记录该生一次未参加实验,超过三次,系统自动将该生信息冻结,以后不能进行预约实验。若未通过系统审核,系统会给出不通过的原因。
- 实验报告成绩查询:学生若按时提交实验报告,辅导教师会在规定的时间为学生批改实验报告,并给出评定级别,每一级别在系统中都对应一定的分数权值。学生可按指定的关键字进行成绩查询。
- 编辑个人信息:学生在进入个人资料管理界面后,可进行个人信息编辑,包括已注册的全部信息和提交的实验报告,预约的实验等。
- 撤消实验预约:若出现特殊情况,学生不能按时参加实验,学生也可进行撤消实验预约。但必须是在实验开始前,否则系统不会显示该实验信息,也就不能进行撤消操作。
- 查看个人实验记录
3、教师系统模块
- 浏览学生的实验报告:教师在进行批改学生实验报告前,可浏览学生的实验报告,为批改提供内容依据。
- 进行实验报告批改,登录成绩:教师可在线进行批量学生实验报告批改,为每一个学生选择评定级别,点击提交按钮,可进行批量成绩级别录入。
4、系统管理员模块
- 学生信息管理:管理员可管理已注册的学生信息。
- 教师信息管理:管理员可管理教师信息,并对新入职教师进行信息入库。
- 实验信息管理:管理员可对实验信息进行管理,并可添加新的预约实验信息。
- 管理员信息管理:系统超级管理员可进行权限授权给一般管理员,一般管理员也可进入授权操作。这样分级权限管理,方便管理操作,减轻系统维护工作量。
- 系统设置:系统管理员可对系统信息及网站参数进行预定设置。
- 数据库备份:系统管理员还可以对数据库进行备份,以防数据因为各种意外而丢失。
五、系统设计原则
1、具有较高的运行效率
运行效率主要包括3个指标数:
- 处理能力,指在单位时间内系统能处理事务的多少;
- 运行时间,指应用软件完成某项任务所花费的时间;
- 响应时间,用户向软件系统发出请求到软件系统返回结果所经历的时间。
2、具有较高的可靠性
从设计的角度来提高系统的可靠性,要提高系统检错、纠错、容错与排错能力,同时还要设计系统的故障恢复能力。对关键的输入数据应设计检错与纠错功能,对可能的错误应进行容错设计,对关键性的数据和操作,应设置必要的权限控制,防止越权操作,引发系统故障。
3、具有良好的交互性和可操作性
在软件系统设计时,要采用图形界面,屏幕显示美观清晰,数据的输入、输出、处理、查询的可操作性要好,并要提供较强的人机交互手段,使用户能方便灵活的使用软件系统。要提供简便的汉字输入手段,减少输入的工作量。
4、具有较好的可扩充性和可维护性
在系统设计中,必须使数据与程序分离,并采用模块化结构以减少模块间的数据耦合,提高各个模块的独立性、可装卸性。这样,当系统需求发生变化时,可以对应用软件功能、性能、结构进行调整,允许应用软件进行模块扩充。
六、数据库设计
数据库是管理信息系统的核心,一个良好的数据库结构既具有数据冗余少、操作处理过程简单等特点,同时也应具有信息查找比较容易、系统开销低等特点[6]。
本系统在进行数据库设计时,先根据在需求分析中得到的业务数据流,进行高度抽象得出系统实体,构造E-R图,然后再将E-R图转换生成特定的DBMS支持下的关系模式,再对确定的关系数据模式进行优化,最后确定数据的物理存储。
在开放实验室预约管理系统中,首先要创建数据库,然后在数据库中创建需要的表和字段。再设计视图、存储过程和触发器。
1、概念结构设计
概念结构设计的重点在于信息结构的设计,它是整个数据库系统设计的关键。它独立于逻辑结构设计和DBMS。现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。对象类型的组成成分可以抽象为实体的属性。为此本系统从业务逻辑数据流中抽象出各个实体:学生、教师、管理员、实验课程、实验报告等。并根据系统实际确定各实体之间的关系。
2、ER图
基于以上对系统数据信息流的分析和抽象,我们可以设计出本系统的E-R图(实体-联系图)如下:
3、逻辑结构设计(部分)
设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。设计逻辑结构时要将概念结构转换为一般的关系、网状、层次模型,并将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,对数据模型进行优化,最后再设计外模式[5]。由此,我们将概念结构得出的结果(E-R图)向特定DBMS支持下的数据模型转换得出如下表:
表4-4 Student(学生)
主键 | 列 名 | 数据类型 | 长度 | 允许空 | 备 注 |
√ | Sid | nchar | 10 | 学号 | |
Sname | char | 8 | 姓名 | ||
Sex | varchar | 2 | 性别 | ||
Pwd | varchar | 20 | 密码 | ||
Grade | varchar | 50 | 年级 | ||
Major | varchar | 50 | 专业 | ||
Class | varchar | 50 | 班级 | ||
Phone | varchar | 50 | √ | 电话 | |
| varchar | 50 | √ | 邮箱 | |
Abstract | text | 16 | √ | 备注 |
表4-7 Lib_Info(实验信息)
主键 | 列 名 | 数据类型 | 长度 | 允许空 | 备 注 |
√ | Cid | nchar | 10 | 实验编号 | |
Cname | varchar | 50 | 实验名称 | ||
Ccontent | text | 16 | 实验内容 | ||
Wanted | int | 4 | 预约限制人数 | ||
Real | int | 4 | √ | 实际预约人数 | |
Date | datetime | 8 | 时间 | ||
Address | varchar | 50 | 地点 | ||
Score | int | 4 | 实验学分 | ||
Teacher | varchar | 8 | 辅导教师 | ||
Worker | text | 8 | 工作人员 |
表4-9 Lib_Report(实验报告)
主键 | 列 名 | 数据类型 | 长度 | 允许空 | 备 注 |
√ | Cid | nchar | 10 | 实验编号 | |
√ | Sid | nchar | 10 | 学号 | |
Tid | int | 4 | 教师编号 | ||
Title | char | 10 | 实验题目 | ||
Content | char | 10 | 实际内容 | ||
Abstract | text | 16 | √ | 备注 | |
Score | int | 4 | √ | 实验学分 |
表4-11 Teacher(教师)
主键 | 列 名 | 数据类型 | 长度 | 允许空 | 备 注 |
√ | TID | int | 4 | 教师编号 | |
Tname | char | 10 | 教师姓名 | ||
Tsex | char | 2 | √ | 教师性别 | |
Tpwd | varchar | 50 | √ | 密码 | |
Tphone | varchar | 50 | √ | 电话 |
七、系统实现(部分)
1、学生登录模块
每一个学生都有自己的并且有且只有一个代表自己的学号,学生可以用自己的学号进行登录进行。验证学号和密码正确后方可登录主界面,当用户名错误或用户口令错误提醒并返回错误点,支持键盘和鼠标操作,在输入框利用回车键移动焦点。
代码设计
相关的实现程序如下。
关键代码:
protected void btnStuLogin_Click(object sender, EventArgs e)//登录系统
{
string stuID = this.txtStuID.Text;
string stuPwd = this.txtStuPwd.Text;
student stu = new student(); //定义一个学生对象
if (stu.checkStu(stuID, stuPwd) > 0) //核实学生记录是否在数据库中存在
{
Session["stuID"] = stuID;
Response.Redirect("/student/Default.aspx");
}
else
{
this.lbstu.Visible = true;
this.lbstu.Text = "错误提示:用户名或密码错误,请重新输入!";
}
}
2、学生注册模块
学生想进入系统进行开放实验预约,必须先注册,否则学生是不能进入系统进行预约的,注册填写完整相关信息之后就可以进入系统进行操作了.
代码设计
具体的代码如下所示:
protected void btnOK_Click(object sender, EventArgs e)
{
student stu = new student();
stu.stuID = this.txtStuID.Text;
stu.stuName = this.txtName.Text;
if (this.rbtMale.Checked)
{
stu.stuSex = "男";
}
else
{
stu.stuSex="女";
}
stu.stuPwd = this.txtPwd.Text;
stu.stuGrade = this.DropDownList3.SelectedItem.Text;
stu.stuMajor = this.DropDownList1.SelectedItem.Text;
stu.stuClass = this.DropDownList2.SelectedItem.Text;
stu.stuPhone = this.txtPhone.Text;
stu.stuEmail = this.txtEmail.Text;
stu.stuAbstract = this.TextArea1.Value;
if (this.IsValid)
{
if (stu.Add_student(stu))
{
Response.Write("<script language='javascript'>alert('恭喜您,您已经注册成功!请重新登录!');window.location.href('../Default.aspx');</script>");
// Response.Redirect("Default.aspx");
}
else
{
Response.Write("<script language='javascript'>alert('很抱歉,注册出现错误!请返回继续注册!');window.location.href('../Default.aspx');</script>");
// Response.Redirect("register.aspx");
}
}
}
3、学生在线预约模块
学生想进入系统进行开放实验预约,必须先注册,否则学生是不能进入系统进行预约的,注册填写完整相关信息之后就可以进入系统进行操作了.
代码设计
具体的代码如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
if (check_number()) //核实该实验人数是否已经超出上限
{
if (check_stu()) //核实学生是否已经预约该实验
{
Response.Write("<script language='JavaScript'>alert('对不起,您已经预约了此实验。不能再对此实验进行预约!');window.location.href = 'book_online.aspx';</script>");
}
else
{
update_lib_info();
book();
}
}
else
{
Response.Write("<script language='JavaScript'>aalert('对不起,此实验已经预约人数足够。不能再对此实验进行预约!');window.location.href = 'book_online.aspx';</script>");
}
}
}
protected void book() //预约实验
{
string cid = Request.QueryString["cid"];
string strsql = "insert into Lib_Book values('" + cid + "','" + Session["stuID"] + "','1')";
student stu = new student();
stu.ExecuteSQL_operation(strsql);
Response.Write("<script language='JavaScr以上是关于万字长文毕业设计 C#开发基于BS的实验室预约管理系统 毕业论文论文+数据库+源程序的主要内容,如果未能解决你的问题,请参考以下文章