版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库应用课程设计 综合报告学 号: 031240420 姓 名: 孙慧华 小组成员: 实验地点: 5b803 2017年3月20日摘要随着学校学生的人数的增加教师以及职工人数也不断的增加,所以对老师的考勤工作就变的日益的繁重。为此,使用visual开发了教职工签到系统,本系统取代了传统的人工操作,利用计算机辅助管理教职工的日常出勤及缺勤情况既提高了签到的科学性,也减轻了学校的工作负担。利用sqlserver2008进行数据库的建立和编程设计,结合visual中的winsock控件实现了客户端与服务器模式的教职工签到管理系统,利用按钮和登录窗的方式实现了管理员登陆、教职工签到,每类信息的管理都
2、做到了相应信息的查询功能。经测试本系统运行正常,通过本系统可以做到教职工签到的规范管理。1 需求分析1.1需求来源 本系统主要是对教职工签到管理的系统。1.1.1功能需求 1、教职工签到并记录; 2、添加某个教职工的基本信息; 3、修改某个教职工的基本信息; 4、删除某个教职工的基本信息; 5、按照不同的条件对教职工签到信息查询统计; 6、系统以菜单方式工作1.1.2数据需求 本系统主要涉及的数据两个表:基本信息表(information)和签到管理表(signin)。基本信息表的属性有编号,姓名,年龄,性别,日期。签到管理表有编号,日期,情况属性1.1.3性能需求要求系统具有可靠性,速度要快
3、,方便简单。1.2设计目的要求实现-“教职工签到管理系统”记录教职工的签到情况,它包括:日期,迟到情况。并根据不同的条件对教职工信息进行统计查询。1.3设计要求 管理员功能:添加,修改,删除教职工基本信息,对教职工签到情况管理;教职工功能:签到3 总体设计3.1总体结构设计为了满足教职工签到方面信息的管理功能,需要明确对该管理的各个功能,各种操作都有哪些。数据库中应该有教职工以及管理员的基本信息,这些来自于该管理系统。教职工只能在客户端进行操作,当教职工签到时,由计算机记录系统的当前时间,并且通过winsock将信息保存在服务器上,管理员可以操作服务器,查看教职工的有关签到信息。管理员可以修改
4、、删除、增加教职工的信息。此种信息禁止教职工自行输入。除此之外,还要通过登录名和密码严格限定登陆者的身份并且控制相应的操作权限,只有管理员有权限修改账户以及密码,防止其他密码泄露造成的其他问题。功能模块图:教职工签到管理系统管理员登录教职工签到教职工基本信息管理签到情况管理帮助分为查看帮助,关于窗体根据不同条件对签到情况查询统计对教职工基本信息添加,更新,删除教职工根据自己的编号,姓名进行签到管理员拥有进入系统的账号,密码3.2 数据库设计3.2.1数据库设计概述设计是指根据用户的,在某一具体的上,设计数据库的结构和建立数据库的过程。需要操作系统的支持。设计是建立系统的技术,是开发和建设中的核
5、心技术。由于的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种反复探寻,的过程,也就是和结构化数据库中的数据对象以及这些数据对象之间关系的过程。数据库设计分为6个部分:1.需求分析阶段2.概念结构设计阶段3.逻辑结构设计阶段4.物理设计阶段5.数据库实施阶段6.数据库运行和维护阶段。其中,需求分析阶段,概念设计阶段,逻辑设计阶段,物理设计阶段独立于;实施阶段,运行和维护阶段依赖于。3.2.2概念结构设计基本信息表主要用于在系统中存储教职工基本信息,包含了教职工的编号,姓名,性别,年龄。其中编号是区分每个教职工的区别。签到情况表是对每个教职工的签到
6、情况进行记录管理。包括了教职工的编号,签到日期,签到情况。可以通过检索结果查看每个教职工或者每天的签到情况。根据对系统需求的分析,教职工只能完成签到的功能。管理员则能通过账号和密码进入系统,完成对教职工基本信息进行添加、删除、更新,能够对签到的情况根据不同的条件进行统计查询。根据对数据表的设计。分析出数据各实体间的关系如下所示。教职工教职工姓名年龄性别编号签到信息日期情况编号签到信息管理员管理员密码账号e-r图管理管理员密码账号情况日期编号编号姓名性别年龄签到信息职工mn13.2.3逻辑结构设计数据库设计分为两个表,将e-r图转换为关系模型。基本信息表的关系模型为:职工:(编号,姓名,年龄,性
7、别)管理:(编号)管理员:(账号,密码)签到管理表的关系模型为:管理员:(账号,密码)签到信息:(编号,日期,情况)管理:(编号)本系统采用sql sever 2008 进行数据库及表的建立。本系统需要的表共有两个,即基本信息表和签到情况表。具体设计如下:基本信息表字段名称数据类型字段长度是否为空说明编号char10nokey姓名varchar20no 年龄intno性别char2no管理信息表字段名称数据类型字段长度是否为空说明编号char10noinformation的外键日期varchar50no 情况varchar20no签到情况4 详细设计4.1数据库的创建create databa
8、se chy4.2表的创建基本信息表create table information(num char(10) primary key,name char(20),sex char(2),age int)签到情况表create table signin(num char(10) foreign key(num) references information(num),data varchar(50),situation varchar(20)4.3界面设计及功能实现4.3.1主菜单模块本模块编号包括了系统管理、签到、基本信息管理、签到管理、帮助。其中用户可以直接进入签到模块进行签到,其他的模块
9、则需要登录后才能使用。系统管理的子菜单有“登录”与“关闭”。帮助的子菜单有“查看帮助”和“关于”子菜单。用户也可以点击图片进入相应的功能模块。代码如下:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using system.data.sqlclient;namespace sql public
10、 partial class menu : form public menu() initializecomponent(); private bool islogined = false;/记录登录凭据 private void tsmexit_click(object sender, eventargs e) application.exit();/关闭所有应用程序 private void tsmdenglu_click(object sender, eventargs e) ad ad = new ad();/实例化管理员登录窗体 tssmsg.text = ad.text;/显示管理
11、员登录窗体 if (ad.showdialog() = dialogresult.ok) if (bool)ad.tag)/如果登录成功 islogined = true; tssmsg.text = 恭喜您,成功登录系统!; islogined = true; else islogined = false; tssmsg.text = 抱歉,必须先登录才能使用本系统!; private void tsmsign_click(object sender, eventargs e) sjgn sign = new sjgn(); sign.mdiparent = this; sign.show(
12、); tssmsg.text = sign.text; private void tsminformation_click(object sender, eventargs e) if (islogined) information information = new information(); information.mdiparent = this; information.show(); tssmsg.text = information.text; else tssmsg.text = 注意,必须先登录才能使用本系统!; 此处省略签到管理代码 private void tsmabou
13、t_click(object sender, eventargs e) aboutform af = new aboutform(); af.showdialog(); tssmsg.text = af.text; 此处省略查看帮助代码 4.3.2登录模块本模块功能主要是完成管理员登录进入系统的功能,从主页面的登录连接进入这个页面,登录时输入的信息必须符合相应条件才能够完成登录,否则会有错误信息提示。登录成功后直接进入主菜单。登录页面如图所示:代码如下:using system;using system.collections.generic;using system.componentmod
14、el;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using system.data.sqlclient;namespace sql public partial class ad : form public ad() initializecomponent(); private void btnok_click(object sender, eventargs e) string num = txtnum.text; string p
15、wd = txtpwd.text; if (num = 666 & pwd = 1) this.dialogresult = dialogresult.ok;/触发确定操作 this.tag = true;/登陆成功并记录 else messagebox.show(您输入的用户名或密码不正确!请重试, 登录失败, messageboxbuttons.ok, messageboxicon.exclamation); this.tag = false;/登录失败并记录 private void btncancel_click(object sender, eventargs e) txtnum.t
16、ext = ; txtpwd.text = ; txtnum.focus();/将光标定位到txtnum上 4.3.3签到本模块功能主要是完成用户签到的功能,无需登录就可进行。输入相应的信息进行签到。签到成功后会显示用户的签到信息。同时系统自动记录该用户的签到情况。签到页面如图所示:代码如下:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;usin
17、g system.windows.forms;using system.data.sqlclient;namespace sql public partial class sjgn : form public sjgn() initializecomponent(); string a; private void btnok_click(object sender, eventargs e) string nowtime = system.datetime.now.toshortdatestring(); datetime nowtime = system.datetime.now; date
18、time worktime = datetime.parse(11:00); string num = txtnum.text; string name = txtname.text; string connstring = data source=china-20150411i;initial catalog=chy;integrated security=true; dataset ds = new dataset(); sqlconnection conn = new sqlconnection(connstring);/创建连接对象 /获取用户名和密码匹配的行的数量的sql语句 str
19、ing sql = string.format(select count(*) from information where num=0and name=1, num, name); try conn.open();/打开数据库连接 sqlcommand comm = new sqlcommand(sql, conn);/创建command对象 int n = (int)comm.executescalar();/执行查询语句,返回匹配的行数 if (n = 1) this.dialogresult = dialogresult.ok;/触发确定操作 string qink = ; if (n
20、owtime worktime) qink = 迟到; else qink = 没有迟到; string message = string.format(迟到情况:0n实际到达时间:1n应到时间:2, qink, nowtime, worktime); rtbshow.text = message; conn.close(); a = string.format(insert into signin values( 0, 1,2), txtnum.text, nowtime, qink); conn.open();/打开数据库连接 comm = new sqlcommand(a, conn);
21、/创建command对象 comm.executereader(); else messagebox.show(您输入的用户名或密码不正确!请重试, 登录失败, messageboxbuttons.ok, messageboxicon.exclamation); catch (exception ex) messagebox.show(ex.message, 操作数据库出错!, messageboxbuttons.ok, messageboxicon.exclamation);/this.tag = false; finally conn.close();/关闭数据库连接 private vo
22、id btnqingjia_click(object sender, eventargs e) string nowtime = system.datetime.now.toshortdatestring(); string num = txtnum.text; string name = txtname.text; string start = txtstart.text; string end = txtend.text; datetime nowtime = system.datetime.now; datetime worktime = datetime.parse(end ); st
23、ring connstring = data source=china-20150411i;initial catalog=chy;integrated security=true; dataset ds = new dataset(); sqlconnection conn = new sqlconnection(connstring);/创建连接对象 string sql = string.format(select count(*) from information where num=0and name=1, num, name); try conn.open();/打开数据库连接 s
24、qlcommand comm = new sqlcommand(sql, conn);/创建command对象 int n = (int)comm.executescalar();/执行查询语句,返回匹配的行数 if (n = 1) this.dialogresult = dialogresult.ok;/触发确定操作 string qink = ; if (nowtime worktime) qink = 迟到; else qink = 没有迟到; string message = string.format(迟到情况:0n实际到达时间:1n应到时间:2, qink, nowtime, wo
25、rktime); rtbshow.text = message; conn.close(); a = string.format(insert into signin values( 0, 1,2), txtnum.text, nowtime, qink); conn.open();/打开数据库连接 comm = new sqlcommand(a, conn);/创建command对象 comm.executereader(); else messagebox.show(您输入的用户名或密码不正确!请重试, 登录失败, messageboxbuttons.ok, messageboxicon.
26、exclamation); catch (exception ex) messagebox.show(ex.message, 操作数据库出错!, messageboxbuttons.ok, messageboxicon.exclamation);/this.tag = false; finally conn.close();/关闭数据库连接 4.3.4基本信息管理模块本模块主要完成对教职工基本信息的添加、更新、删除功能。主键的约束要求添加时输入的编号是唯一的。同时更新、删除时输入的编号系统要存在。否则会报错。页面如图所示。代码如下:using system;using system.colle
27、ctions.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using system.data.sqlclient;namespace sql public partial class information : form public information() initializecomponent(); private void btnadd_click(obj
28、ect sender, eventargs e) string sql = string.format(insert into information values(0,1,2,3), txtnum.text, txtname.text, txtsex.text, txtage.text); string connstring = data source=china-20150411i;initial catalog=chy;integrated security=true; using (sqlconnection conn = new sqlconnection(connstring) c
29、onn.open();/打开数据库连接 sqlcommand comm = new sqlcommand(sql, conn);/创建command对象 int n = comm.executenonquery();/执行添加命令,返回匹配的行数if (n 0) string message = string.format(编号:0n姓名:1n性别:2n年龄:3n, txtnum.text, txtname.text, txtsex.text, txtage.text);lblshow.text = message; else messagebox.show(添加教职工基本信息失败!, 添加失
30、败, messageboxbuttons.ok, messageboxicon.exclamation); private void btnupdate_click(object sender, eventargs e) string sql = string.format(update information set name=0,age=1,sex=2where num=3and num in (select num from information), txtname.text, txtage.text, txtsex.text, txtnum.text); string connstr
31、ing = data source=china-20150411i;initial catalog=chy;integrated security=true; using (sqlconnection conn = new sqlconnection(connstring) conn.open();/打开数据库连接 sqlcommand comm = new sqlcommand(sql, conn);/创建command对象 int n = comm.executenonquery();/执行添加命令,返回匹配的行数 if (n 0) string message = string.form
32、at(更新教职工基本信息成功!n编号:0n姓名:1n性别:2n年龄:3n, txtnum.text, txtname.text, txtsex.text, txtage.text); lblshow.text = message; else messagebox.show(更新教职工基本信息失败!, 更新失败, messageboxbuttons.ok, messageboxicon.exclamation); private void btndelete_click(object sender, eventargs e) string connstring = data source=chi
33、na-20150411i;initial catalog=chy;integrated security=true;string sql = string.format(delete from information where num=0, txtnum.text); using (sqlconnection conn = new sqlconnection(connstring) conn.open();/打开数据库连接 sqlcommand comm = new sqlcommand(sql, conn);/创建command对象 int n = comm.executenonquery
34、();/执行添加命令,返回匹配的行数 if (n 0) string message = string.format(删除教职工0基本信息成功!, txtnum.text); lblshow.text = message; else messagebox.show(删除教职工基本信息失败!, 删除失败, messageboxbuttons.ok, messageboxicon.exclamation); private void btnexit_click(object sender, eventargs e) this.close(); 4.3.5签到管理模块本模块的功能主要是根据编号、日期
35、、签到情况的不同对教职工信息的签到情况进行查询统计。页面如图所示;代码如下:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using system.data.sqlclient;namespace sql public partial class signin : form public si
36、gnin() initializecomponent(); private sqldataadapter da = new sqldataadapter();/定义数据适配器 private dataset ds = new dataset(chy);/定义数据集 private void show() string connstring = data source=china-20150411i;initial catalog=chy;integrated security=true; string se = cbosearch.selecteditem.tostring(); string co = cbosta.selecteditem.tostring(); string sql; if (se = 编号) sql = select * from signin where num in( +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备药品招标采购制度
- 公共采购管理制度
- 政府工程类采购制度
- 原料煤采购制度
- 装修材料采购管理制度
- 杜绝无计划采购制度
- 蔬菜采购查验管理制度
- 药品采购监督制度
- 政府采购报告制度
- 信息技术采购制度
- 雨课堂在线学堂《自然辩证法概论》作业单元考核答案
- 建筑工程行业“防汛、防台风、防雷电”三防安全培训
- 科研项目团队介绍
- 2026年江西电力职业技术学院单招职业适应性考试必刷测试卷附答案
- 外墙砸瓷砖施工方案
- (独家!)2025年3月29日全国事业单位事业编联考A类《职测》真题及答案
- 知到《微观经济学(重庆财经学院)》智慧树网课完整版章节测试答案
- 基于Java的银行管理系统开发文档
- 2025年护理模拟试题(附答案)
- 江苏省省扬州市2025届高三上学期期末检测-政治试卷(含答案)
- 服装制作工中秋节后复工安全考核试卷含答案
评论
0/150
提交评论