数据库 学校饭堂消费管理系统的设计说明书_第1页
数据库 学校饭堂消费管理系统的设计说明书_第2页
数据库 学校饭堂消费管理系统的设计说明书_第3页
数据库 学校饭堂消费管理系统的设计说明书_第4页
数据库 学校饭堂消费管理系统的设计说明书_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书设计名称:数据库系统原理课程设计题目:学校饭堂消费管理系统的设计学生姓名:孙璐专业:网络工程班级:12网络1班学号:2012394108指导教师:顾艳春、韦庆清、李娅、胡明日期:2015年01月14日课程设计任务书网络工程专业12年级1班孙璐设计题目学校饭堂消费管理系统主要内容通过对学生在学校饭堂或餐厅的消费流程进行分析,完成具有食品管理、消费管理、帐户管理、餐厅管理等相关功能的小型数据库管理应用系统(消费刷卡可以通过手工输入来模拟完成)根据任务要求完成有关表的设计(表的设计需要遵循3NF)。完成饭堂(餐厅)员工表、消费人员及帐户表、餐厅表、食品价目表的维护。完成消费表的生成,并计算消费折扣(可现金消费也可刷卡消费)。按人员、时间、餐厅统计计算消费总额。按食品类别、时间、餐厅统计计算消费总额。完成用户帐户管理功能。完成数据备份与恢复功能。具体要求围绕课程设计的目的和意义,基本要求如下:1、巩固和加深对数据库系统原理的理解,提高综合运用本课程所学知识的能力。2、培养学生选用参考书,查阅手册及文献资料的能力。培养独立思考、深入研究、分析问题、解决问题以及团队协作能力。3、通过实际系统的分析设计、编程调试,掌握数据库软件的分析设计方法和巩固软件工程方法。软件开发的流程可参见软件工程课程教材。(见第六部分)4、能够按要求编写课程设计报告书,能正确阐述设计和实验结果、正确绘制系统数据流图和E-R图。5、通过课程设计,培养学生严谨的科学态度,严肃认真的工作作风,和团队协作精神。6、本课程设计只要求大家完成一个基本的数据库软件的开发工作,系统开发不要求大而全数据库软件的开发,只要完成数据的增、删、改、查等基本功能,并设计一个较友好系统操作界面(最好是图形界面)。7、系统开发平台不做统一要求。进度安排依照教学计划,课程设计时间为:2周。本设计要求按照软件工程的基本过程完成设计。建议将时间分为四个阶段:第一阶段,根据题目要求,确定系统的总体设计方案(概要设计):即系统包括哪些功能模块,每个模块的实现方法,同时编写相应的设计文档;第二阶段,完成系统的详细设计工作;第三阶段,完成数据库设计和编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第四阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。三个阶段时间分配的大概比例是:25:25:40:10。具体安排如下:1月5日-1月6日:资料查找、系统分析,数据流程分析,概要设计。1月7日-1月8日:系统详细设计、功能设计。1月9日-1月14日:算法实现、编程调试。1月15日-1月16日:功能演示、资料整理、课程设计说明书编写。完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境),其内容不能过于简单,必须包括的内容有:课程设计的基本思想,系统的总功能和各子模块的功能说明;数据库设计中有关数据流图和E-R图,并对重要的操作画出有关算法流程图;源程序中核心代码的说明;本课程设计的个人总结,主要包括以下内容:课程设计中遇到的主要问题和解决方法;你的创新和得意之处;设计中存在的不足及改进的设想;本次课程设计的感想和心得体会。5.源代码要求在关键的位置有注释,增加程序的可读性。程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。总评成绩指导教师签名日期年月日系主任审核日期年月日目录一.设计任务分析…………51.1系统总功能分析…………………51.2系统总框架………51.3设计思想简述……………………5二.总体设计思路…………6三.需求分析………………63.1数据字典…………7数据库用到的表…………73.1.2各表的说明………………7四.概念结构设计…………84.1消除不必要的冗余,设计基本的E-R图………84.2合并分E-R图,生成总的E-R图………………9五.逻辑结构设计…………105.1数据模型的优化…………………105.2由E-R图得到的关系模式………10六.物理结构设计…………106.1为关系模式选择存取方法………106.2选择存取路径……………………106.3创建基本表………116.4建立索引…………146.5建立触发器………176.6建立视图…………18数据库的实施…………197.1数据的载入………19数据库的试运行………228.1视图中的数据……………………228.2视图的查询………23九.数据库运行和维护……………………239.1系统开发工具的介绍………………239.2VB6.0与SQLsever的连接……249.3VB实现学校餐厅的管理…………279.3.1登录界面……………………279.3.2管理员功能…………………309.3.3学生功能……………………57十.课程设计的总结报告…………………60一.设计任务分析1.1系统总功能分析通过对学生在学校饭堂或餐厅的消费流程进行分析,完成具有食品管理、消费管理、帐户管理、餐厅管理等相关功能的小型数据库管理应用系统。根据任务要求完成有关表的设计(表的设计需要遵循3NF)。同时还要完成进人员、餐厅、食品价目表的维护,完成消费表的生成,并计算消费折扣。以及按人员、时间段、餐厅统计计算消费总额,按食品类别、时间段、餐厅统计计算消费总额,最后完成用户管理功能,完成数据备份与恢复功能。1.2系统总框架用户登录用户登录验证密码 密码错误验证密码密码正确退出系统退出系统管理员功能学生功能管理员功能学生功能查看自己基本信息查询学生卡余额修改自己的密码备份与恢复对餐厅信息查增删改对员工信息查增删改对管理员信息查增删改对食品信息查增删改对学生信息查增删改查看自己基本信息查询学生卡余额修改自己的密码备份与恢复对餐厅信息查增删改对员工信息查增删改对管理员信息查增删改对食品信息查增删改对学生信息查增删改查询消费总额1.3设计思想简述这个系统我建立了管理员、员工、学生、餐厅、食品和餐厅营业表六张基本表,为了提高查找速度,我为前五个基本表以主键建立了唯一索引,为营业表建立了以餐厅编号、学生学号、食品编号和消费时间一起的唯一索引。为了简化操作,更清晰地表达查询,我为学生、餐厅、食品和餐厅营业表建立了视图。总体设计思路需求分析通过我对学校餐厅的调查分析,我得出了餐厅以下几点特点:工作人员分为管理员,一般员工。管理员都有唯一的工号,姓名,密码,其中初始密码为工号。而一般员工都有唯一的工号、姓名、职位和所属餐厅。其中只有管理员可以登录系统,对餐厅、学生、一般员工、食品进行管理,对餐厅营业表进行查询消费总额。每位同学都有唯一的学号、姓名、密码、专业和学生卡内余额,其中初始密码为学号后5位,学生可以利用学号和初始密码登录系统进行修改密码,查看自己的基本信息以及查询自己卡内的余额。餐厅分为两个,每个餐厅都有唯一的编号和姓名。食品的类别分为素菜和肉菜,每个食品都有唯一的编号,食品名称,素菜的单价为2元,肉菜的单价为4元。学生在学校餐厅就餐,就有所就餐的餐厅编号、该学生的学号、所食用的食品编号、食品数量、该食品的类别,付款方式(现金或者刷卡)和就餐时间。消费表就是建立的视图,包括学生学号、餐厅号、食品号、食品单价、食品数量、折扣后价格。以上就是我对学校餐厅管理系统的需求分析,要求系统能有效、快速、安全、可靠和无误的完成上述操作,服务器程序利于维护。3.1数据字典:数据库用到的表数据库表名关系模式名称manager管理员信息表student学生信息表restaurant餐厅信息表food食品价格表operation餐厅营业表worker员工信息表pf_operation消费表(视图)3.1.2各表的说明表一管理员信息表元素变量名数据类型备注工号mnoChar(9)主键(非空)姓名mnameChar(20)非空密码mpswChar(18)非空表二学生信息表元素变量名数据类型备注学号snoChar(9)主键(非空)姓名snameChar(20)非空密码spswChar(18)非空专业sdeptChar(20)非空余额sbalanceInt表三餐厅信息表元素变量名数据类型备注编号rnoChar(9)主键(非空)名称rnameChar(20)非空表四食品价格表元素变量名数据类型备注食品编号fnoChar(9)主键(非空)食品名称fnameChar(20)非空食品单价fpriceInt非空食品类别fbelongChar(20)非空表五餐厅营业表元素变量名数据类型备注餐厅编号rnoChar(9)Restaurant的外键学号snoChar(9)Student的外键食品编号fnoChar(9)Food的外键食品数量fnumChar(10)非空消费时间ctimeDatetime允许空值付款方式wayChar(10)非空食品类别fbelongChar(20)非空表六员工信息表元素变量名数据类型备注工号wnoChar(9)主键(非空)姓名wnameChar(20)非空职位wpostChar(18)非空所属餐厅rnoChar(9)非空概念结构设计4.1消除不必要的冗余,设计基本的E-R图由需求分析的结果可知,本系统设计的实体包括:员工基本信息:员工工号、员工姓名、员工职位、所属餐厅。管理员基本信息:管理员工号、管理员姓名、管理员密码。学生基本信息:学生学号、学生姓名、学生密码、专业、卡内余额。餐厅基本信息:餐厅编号、餐厅名称。食品基本信息:食品编号、食品名称、食品单价、食品类别。由于餐厅的营业表学生、餐厅、食品三者之间的多对多联系转换出来的表,是其基本属性,不必画在E-R图上。这些实体间的联系包括:(1)每位学生可以在多个餐厅里消费,每个餐厅也可以供给多个学生的饭菜。(2)每个学生可以点多种食物,每个食物也可以被多个学生点。(3)每个餐厅可以有多名员工,而每个员工只能在一个食堂工作。4.2合并分E-R图,生成总的E-R图学生密码卡内学生密码卡内余额单价工作单价工作销售销售员工编号名称专业姓名学号食品类别食品名食品号点菜食品学生消费餐厅管理姓名管理员工号密码工号姓名员工编号名称专业姓名学号食品类别食品名食品号点菜食品学生消费餐厅管理姓名管理员工号密码工号姓名所属餐厅职位所属餐厅职位逻辑结构设计5.1数据模型的优化数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需求适当地修改、调整数据模型的结构,这就是数据模型的优化。方法为:确定数据依赖;对于各个关系模式之间的数据依赖进行极小化的处理,消除冗余的联系;按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数、传递依赖、多值依赖等,确定各关系模式分别处于第几范式。由于并不是规范化程度越高的关系就越优,一般说来,第三范式就足够了,所以对于本系统,按照要求,达到第三范式。按照需求分析阶段得到的处理要求,分析对于这样的应用环境这些模式是否合适,确定是否要对模式进行合并或分解。本系统中的管理员皆是餐厅的员工,但是只要管理员拥有密码可以对餐厅进行管理,所以我把他们分为管理员表和员工表。对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。5.2由E-R图得到的关系模式数据结构名组成管理员信息工号,姓名,密码学生信息学号,姓名,密码,专业,卡内余额餐厅信息编号,名称食品价格表食品号,食品名,食品价,食品类别营业表餐厅编号,学号,食品号,食品数量,消费时间,付款方式,食品类别员工信息工号,姓名,职位,所属餐厅(下划线标注的属性为主码)物理结构设计6.1为关系模式选择存取方法数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。这个系统我选择使用索引,为前五个基本表以主键建立了唯一索引,为营业表建立了以餐厅编号、学生学号、食品编号和消费时间一起的唯一索引。6.2选择存取路径createdatabase学校餐厅on(name=学校餐厅_data,filename='d:\slslsl\学校餐厅_data.mdf')logon(name=学校餐厅_log,filename='d:\slslsl\学校餐厅_log.ldf')6.3创建基本表创建管理员表CREATETABLEmanager(mnoCHAR(9)PRIMARYKEY,mnameCHAR(20)NOTNULL,mpswCHAR(18)NOTNULL);2)创建学生表CREATETABLEstudent(snoCHAR(9)PRIMARYKEY,snameCHAR(20)NOTNULL,spswCHAR(18)NOTNULL,sdeptCHAR(20)NOTNULL,sbalanceINTCHECK(sbalance>=0));3)创建餐厅表CREATETABLErestaurant(rnoCHAR(9)PRIMARYKEY,rnameCHAR(20)NOTNULL);4)创建食品表CREATETABLEfood(fnoCHAR(9)PRIMARYKEY,fnameCHAR(20)NOTNULL,fpriceINTNOTNULL,fbelongCHAR(20)NOTNULL);5)创建餐厅营业表CREATETABLEoperation(rnoCHAR(9)NOTNULL,snoCHAR(9)NOTNULL,fnoCHAR(9)NOTNULL,fnumCHAR(10)NOTNULL,ctimeDATETIMEDEFAULTGETDATE(),wayCHAR(10)NOTNULL,fbelongCHAR(20)NOTNULL,FOREIGNKEY(rno)REFERENCESrestaurant(rno),FOREIGNKEY(sno)REFERENCESstudent(sno),FOREIGNKEY(fno)REFERENCESfood(fno));6)创建员工表CREATETABLEworker(wnoCHAR(9)PRIMARYKEY,wnameCHAR(20)NOTNULL,wpostCHAR(18)NOTNULL,rnoCHAR(9)NOTNULL,FOREIGNKEY(rno)REFERENCESrestaurant(rno));6.4建立索引CREATEUNIQUEINDEXworker_wnoONworker(wno);CREATEUNIQUEINDEXmanager_mnoONmanager(mno);CREATEUNIQUEINDEXstudent_snoONstudent(sno);CREATEUNIQUEINDEXrestaurant_rnoONrestaurant(rno);CREATEUNIQUEINDEXfood_fnoONfood(fno);CREATEUNIQUEINDEXoperation_rsftONoperation(rnoASC,snoASC,fnoASC,ctimeASC);6.5创建触发器CREATETRIGGERstudent_balanceONoperationAFTERINSERTASBEGINDECLARE@cardchar(10)定义变量DECLARE@timedatetimeselect@card=way,@time=ctimefrominsertedif@card='card' begin UPDATEstudent SETstudent.sbalance=student.sbalance-food.fprice*operation.fnum*1FROMstudent,operation,food WHEREstudent.sno=operation.snoandoperation.fno=food.fno andctime=@time endEND学生卡内余额=原余额-食品单价X数量X折扣。只有当学生的付款方式为刷卡时才计算,支付现金不计算。6.6创建视图CREATEVIEWpf_operationASSELECTstudent.sno,restaurant.rno,food.fno,fprice,fnum,fnum*fprice*1price,food.fbelong,ctimeFROMoperation,restaurant,student,foodWHEREoperation.sno=student.snoANDoperation.rno=restaurant.rnoANDoperation.fno=food.fno数据库的实施7.1数据的载入1)向管理员表中插入数据INSERTINTOmanager(mno,mname,mpsw)VALUES('30481','王红','30481');INSERTINTOmanager(mno,mname,mpsw)VALUES('30482','李明','30482');2)向学生表中插入数据INSERTINTOstudent(sno,sname,spsw,sdept,sbalance)VALUES('201215121','李勇','15121','cs','101');INSERTINTOstudent(sno,sname,spsw,sdept,sbalance)VALUES('201215143','刘晨','15143','cs','140');INSERTINTOstudent(sno,sname,spsw,sdept,sbalance)VALUES('201247384','王敏','47384','ma','99');INSERTINTOstudent(sno,sname,spsw,sdept,sbalance)VALUES('201268974','张立','68974','is','70');由于建立了触发器会自动修改学生卡内余额,截图是在所有消费记录输入过以后的,所以插入数据时的余额跟截图的余额会有不同。向餐厅表中插入数据INSERTINTOrestaurant(rno,rname)VALUES('01','清风楼');INSERTINTOrestaurant(rno,rname)VALUES('02','映月阁');4)向食品表中插入数据INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('01','红烧鱼块','4','carn');INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('02','炸鸡腿','4','carn');INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('03','清炒西洋菜','2','veg');INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('04','苦瓜炒蛋','2','veg');INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('05','酸辣土豆丝','2','veg');INSERTINTOfood(fno,fname,fprice,fbelong)VALUES('06','家常豆腐','2','veg');5)向餐厅营业表中插入数据(插入了两天的营业记录,时间自动为系统时间)INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215121','01','01','cash','carn');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215121','03','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215143','02','02','cash','carn');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215143','05','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201247384','01','02','cash','carn');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201247384','03','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201247384','04','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201247384','05','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201268974','01','01','cash','carn');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201268974','05','01','cash','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201268974','02','01','cash','carn');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215121','04','01','card','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('01','201215143','06','01','card','veg');INSERTINTOoperation(rno,sno,fno,fnum,way,fbelong)VALUES('02','201268974','03','01','card','veg');6)向员工表中插入数据INSERTINTOworker(wno,wname,wpost,rno)VALUES('40481','张兰','经理','01');INSERTINTOworker(wno,wname,wpost,rno)VALUES('40482','马燕','厨师','01');INSERTINTOworker(wno,wname,wpost,rno)VALUES('40483','周扬','经理','02');INSERTINTOworker(wno,wname,wpost,rno)VALUES('40484','王刚','厨师','02');数据库的试运行8.1视图中的数据8.2视图的查询经计算,结果正确九.数据库运行和维护9.1系统开发工具的介绍微软公司的VisualBasic6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。利用VISUALBASIC程序设计语言,可以很方便地设计出在WINDOWS环境下运行的应用程序。故而,实现本系统VB是一个相对较好的选择。ADO对象能够存取到数据库的内容,首先要求数据库的驱动程序(ODBC驱动程序与OLEDB驱动程序)必须安装上,否则,ADO对象是无法存取数据库中内容,其原理示意图如下图所示:客户端客户端客户端客户端ADO对象各种数据库所对应的驱动程序各种数据库(如Access、SQLServer以及Oracle等)9.2VB6.0与SQLsever的连接如果在一台新的电脑上应该先附加数据库,就是说要先有数据资源。对于我们的实验关机后会使数据库中我们自己建立的数据库不见,所以可以进行如同下图的步骤:选择mdf格式文件即可,会提示附加数据库成功。点击VB工程处添加,新增一个模块,在里面输入如下代码,即可实现VB与数据库SQL的连接。OptionExplicitPublicstrSQLAsStringPublicFunctionExecuteSQL(ByValstrSQLAsString)AsADODB.RecordsetOnErrorGoToErrorTrap'声明ADODB.Connection对象变量DimobjConnectionAsADODB.Connection'声明ADODB.Recordset对象变量DimobjRecordsetAsADODB.Recordset'声明一个存放SQL查询条件的数组DimstrArray()AsString'定义新连接SetobjConnection=NewADODB.Connection'创建新连接objConnection.ConnectionString=ConnectString'打开数据库objConnection.Open'Split函数返回一个下标从零开始的一维数组,包含指定数目的子字符串strArray=Split(strSQL)IfInStr("INSER,DELETE,UPDATE",UCase(strArray(0)))Then'执行SQL查询objConnection.ExecutestrSQLElse'打开记录集SetobjRecordset=NewADODB.RecordsetobjRecordset.OpenTrim(strSQL),objConnection,_adOpenKeyset,adLockOptimisticSetExecuteSQL=objRecordsetEndIf'释放对象SetobjRecordset=NothingSetobjConnection=NothingExitFunction'出错处理ErrorTrap:SetobjRecordset=NothingSetobjConnection=NothingEndFunction'连接字符串赋值函数PublicFunctionConnectString()AsStringConnectString="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=学校餐厅;DataSource=.;"(本地数据库写.即可)EndFunction9.3VB实现学校餐厅的管理9.3.1登录界面分为管理员和学生两种使用者,管理员有两个,初始登录密码是自己的工号,登录后可以自己修改。代码如下:PrivateSubCommand1_Click()'声明ADODB.Recordset对象变量DimobjRecordsetAsADODB.Recordset'声明SQL字符串DimstrSQLAsStringSelectCaseoptCase1'查找用户名strSQL="selectmnofrommanagerwheremno='"&_Trim(txtno.Text)&"'"'获得符合输入的用户记录集SetobjRecordset=ExecuteSQL(strSQL)'如果输入的用户不存在IfobjRecordset.EOF=TrueThenMsgBox"用户名错误!",vbExclamation+vbOKOnly,"警告"txtno.SetFocustxtno.SelStart=0txtno.SelLength=Len(txtno.Text)ExitSubEndIf'从数据库中获得用户名mno=objRecordset.Fields(0)'查找用密码strSQL="selectmnofrommanagerwherempsw='"&_Trim(txtpsw.Text)&"'"'获得符合输入的密码记录集SetobjRecordset=ExecuteSQL(strSQL)'如果输入的密码不存在IfobjRecordset.EOF=TrueOrmno<>objRecordset.Fields(0)ThenMsgBox"密码错误!",vbExclamation+vbOKOnly,"警告"txtpsw.SetFocustxtpsw.SelStart=0txtpsw.SelLength=Len(txtpsw.Text)ExitSubEndIf'显示主界面管理员界面.ShowCase2'查找用户名strSQL="selectsnofromstudentwheresno='"&_Trim(txtno.Text)&"'"'获得符合输入的用户记录集SetobjRecordset=ExecuteSQL(strSQL)'如果输入的用户不存在IfobjRecordset.EOF=TrueThenMsgBox"用户名错误!",vbExclamation+vbOKOnly,"警告"txtno.SetFocustxtno.SelStart=0txtno.SelLength=Len(txtno.Text)ExitSubEndIf'从数据库中获得用户名sno=objRecordset.Fields(0)'查找用密码strSQL="selectsnofromstudentwherespsw='"&_Trim(txtpsw.Text)&"'"'获得符合输入的密码记录集SetobjRecordset=ExecuteSQL(strSQL)'如果输入的密码不存在IfobjRecordset.EOF=TrueOrsno<>objRecordset.Fields(0)ThenMsgBox"密码错误!",vbExclamation+vbOKOnly,"警告"txtpsw.SetFocustxtpsw.SelStart=0txtpsw.SelLength=Len(txtpsw.Text)ExitSubEndIf'显示主界面学生界面.StudentID="'"&Trim(txtno.Text)&"'"学生界面.ShowEndSelect'卸载登陆窗体UnloadMeEndSubPrivateSubCommand2_Click()UnloadMeEndSubPrivateSubOption1_Click()opt=1EndSubPrivateSubOption2_Click()opt=2EndSub9.3.2管理员功能其中一个管理员进行登录:点击登录,进入管理员界面查询消费总额当摁下管理员界面的查询餐厅总额按钮后会显示出未查询前,数据库中的所有消费记录,和pf_operation视图的数据相同。这是利用了adodc部件和DataGrid部件,二者经常搭配使用。点击“查询”按钮可查询相关内容:按“返回”按钮可返回到管理员界面,按“退出”按钮直接退出。代码如下:PrivateSubForm_Load()DimobjRecordsetAsADODB.Recordset'绑定学生strSQL="selectDISTINCTsnofromstudent"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDoWhileNotobjRecordset.EOFCombo1.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo1.ListIndex=0'绑定时间strSQL="selectDISTINCTconvert(char(10),ctime,120)Fromoperation"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo2.ClearDoWhileNotobjRecordset.EOFCombo2.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo2.ListIndex=0'绑定餐厅strSQL="selectDISTINCTrnofromrestaurant"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo3.ClearDoWhileNotobjRecordset.EOFCombo3.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo3.ListIndex=0'绑定菜类别strSQL="selectDISTINCTfbelongfromfood"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo4.ClearDoWhileNotobjRecordset.EOFCombo4.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo4.ListIndex=0'绑定时间strSQL="selectDISTINCTconvert(char(10),ctime,120)Fromoperation"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo5.ClearDoWhileNotobjRecordset.EOFCombo5.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo5.ListIndex=0'绑定餐厅strSQL="selectDISTINCTrnofromrestaurant"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo6.ClearDoWhileNotobjRecordset.EOFCombo6.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo6.ListIndex=0Adodc1.Visible=FalseAdodc1.RecordSource="selectsno学号,rno餐厅编号,fno菜编号,fprice菜单价,fnum菜量,price折扣后价格,fbelong菜类,ctime消费时间frompf_operation"Adodc1.RefreshSetDataGrid1.DataSource=Adodc1.RecordsetDataGrid1.RefreshEndSub2)管理学生信息**查找学生**和查询总额相似,点击查询学生后,即可看见学生表中全部信息,点击查询后,看到某个学生信息。按“返回”按钮可返回到管理员界面,按“退出”按钮直接退出。代码如下:PrivateSubCommand1_Click()DimstrSQLAsStringstrSQL="selectsno学生学号,sname学生姓名,spsw学生密码,sdept学生专业,sbalance卡内余额fromstudentwheresno='"&Trim(Combo1.Text)&"'"Adodc1.Visible=FalseAdodc1.RecordSource=strSQLAdodc1.RefreshSetDataGrid1.DataSource=Adodc1.RecordsetDataGrid1.RefreshEndSubPrivateSubCommand2_Click()管理员界面.ShowUnloadMeEndSubPrivateSubCommand3_Click()UnloadMeEndSubPrivateSubForm_Load()DimobjRecordsetAsADODB.Recordset'绑定学生strSQL="selectDISTINCTsnofromstudent"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDoWhileNotobjRecordset.EOFCombo1.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo1.ListIndex=0Adodc1.Visible=FalseAdodc1.RecordSource="selectsno学生学号,sname学生姓名,spsw学生密码,sdept学生专业,sbalance卡内余额fromstudent"Adodc1.RefreshSetDataGrid1.DataSource=Adodc1.RecordsetDataGrid1.RefreshEndSub**增加学生**按“返回”按钮可返回到管理员界面。代码如下:PrivateSubCommand1_Click()'声明SQL字符串DimstrSQLAsStringIfText1.Text=""OrText2.Text=""OrText3.Text=""OrText4.Text=""OrText5.Text=""ThenMsgBox"学生信息中有空值!",vbOKOnly+vbExclamation,""ElsestrSQL="insertintostudentvalues('"&_Trim(Text1.Text)&"','"&_Trim(Text2.Text)&"','"&_Trim(Text3.Text)&"','"&_Trim(Text4.Text)&"','"&_Trim(Text5.Text)&"')"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"增加学生信息成功",vbOKOnly+vbExclamation,""EndIfEndSubPrivateSubCommand2_Click()管理员界面.ShowUnloadMeEndSub**修改学生**学生学号处利用Combo按钮,下拉选择学生学号即可。点击“查看原信息”按钮即可查看学生原来信息,方便管理员修改。点击“修改”按钮进行修改。代码如下:PrivateSubCommand2_Click()DimstrSQLAsStringDimobjRecordsetAsADODB.RecordsetstrSQL="updatestudentsetsname='"&Trim(Text1.Text)&"'wheresno='"&Trim(Combo1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)strSQL="updatestudentsetspsw='"&Trim(Text2.Text)&"'wheresno='"&Trim(Combo1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)strSQL="updatestudentsetsdept='"&Trim(Text3.Text)&"'wheresno='"&Trim(Combo1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)strSQL="updatestudentsetsbalance='"&Trim(Text4.Text)&"'wheresno='"&Trim(Combo1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"修改学生信息成功!",vbOKOnly+vbExclamation,""EndSubPrivateSubCommand3_Click()管理员界面.ShowUnloadMeEndSubPrivateSubForm_Load()DimobjRecordsetAsADODB.Recordset'绑定学生strSQL="selectDISTINCTsnofromstudent"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDoWhileNotobjRecordset.EOFCombo1.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo1.ListIndex=0EndSub**删除学生**点击“确认删除”按钮进行删除。代码如下:PrivateSubCommand1_Click()DimstrSQLAsStringDimobjRecordsetAsADODB.RecordsetstrSQL="deletefromoperationwheresno='"&Trim(Combo1.Text)&"'"strSQL="deletefromstudentwheresno='"&Trim(Combo1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"删除学生信息成功!",vbOKOnly+vbExclamation,""EndSubPrivateSubCommand2_Click()管理员界面.ShowUnloadMeEndSubPrivateSubForm_Load()DimobjRecordsetAsADODB.Recordset'绑定学生strSQL="selectDISTINCTsnofromstudent"SetobjRecordset=ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDoWhileNotobjRecordset.EOFCombo1.AddItemobjRecordset.Fields(0)objRecordset.MoveNextLoopCombo1.ListIndex=0EndSub管理食品信息(代码与说明部分和学生信息管理相似,不再赘述)**查询食品****增加食品****修改食品****删除食品**管理管理员信息(代码与说明部分和学生信息管理相似,不再赘述)**查找管理员****增加管理员****修改管理员****删除管理员**管理员工信息(代码与说明部分和学生信息管理相似,不再赘述)**查找员工****增加员工****修改员工****删除员工**管理餐厅信息(代码与说明部分和学生信息管理相似,不再赘述)**查找餐厅****编辑餐厅**因为前面我的增删修改都不在同一个窗体,而餐厅的信息比较简单,所以我做了另外一种不同于之前的简单编辑窗体。按“初始化”按钮后可以使text的值为空,免去增加后又想删除时还要手动按delete键。代码如下:PrivateSubCommand1_Click()Text1.Text=""Text2.Text=""EndSubPrivateSubCommand2_Click()'声明SQL字符串DimstrSQLAsStringDimobjRecordsetAsADODB.RecordsetIfText1.Text=""OrText2.Text=""ThenMsgBox"餐厅信息中有空值!",vbOKOnly+vbExclamation,""ElsestrSQL="insertintorestaurantvalues('"&_Trim(Text1.Text)&"','"&_Trim(Text2.Text)&"')"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"增加餐厅信息成功",vbOKOnly+vbExclamation,""EndIfEndSubPrivateSubCommand3_Click()DimstrSQLAsStringDimobjRecordsetAsADODB.RecordsetstrSQL="updaterestaurantsetrname='"&Trim(Text2.Text)&"'whererno='"&Trim(Text1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"修改餐厅信息成功!",vbOKOnly+vbExclamation,""EndSubPrivateSubCommand4_Click()DimstrSQLAsStringDimobjRecordsetAsADODB.RecordsetstrSQL="deletefromoperationwhererno='"&Trim(Text1.Text)&"'"strSQL="deletefromrestaurantwhererno='"&Trim(Text1.Text)&"'"SetobjRecordset=ExecuteSQL(strSQL)MsgBox"删除餐厅信息成功!",vbOKOnly+vbExclamation,""EndSubPrivateSubCommand5_Click()管理员界面.ShowUnloadMeEndSub选择其他功能**备份**点击浏览按钮会弹出电脑磁盘图框,进行选择备份到的磁盘。点击备份按钮,进行备份。代码如下:PrivateSubCommand1_Click()CommonDialog1.Filter="C:\\\\"CommonDialog1.ShowOpenIfLen(CommonDialog1.FileName)<>0ThenOpenCommonDialog1.FileNameForAppendAs#1Text1.Text=CommonDialog1.FileNameClose#1EndIfEndSubPrivateSubCommand2_Click()DimcnAsNewADODB.ConnectionDimstrSQLAsStringstrSQL="backupdatabase学校餐厅todisk='"&Trim(Text1.Text)&".bak'"cn.Open"Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=学校餐厅;DataSource=.;"cn.BeginTranscn.ExecutestrSQLErr.Number=0IfErr.Number=0Thencn.CommitTransMsgBox"^_^恭喜您,数据备份成功",vbOKOnly+vbExclamation,"提示"Elsecn.RollbackTransMsgBox"对不起,数据备份失败!",vbOKOnly+vbExclamation,"提示"EndIfEndSubPrivateSubCommand3_Click()管理员界面.ShowUnloadMeEndSub**恢复**点击浏览按钮会弹出电脑磁盘图框,进行选择备份到的磁盘。点击备份按钮,进行备份。代码如下:PrivateSubCommand1_Click()CommonDialog2.Filter="C:\\\\"CommonDialog2.ShowOpenIfLen(CommonDialog2.FileName)<>0ThenOpenCommonDialog2.FileNameForAppendAs#1Text2.Text=CommonDialog2.FileNameClose#1EndIfEndSubPrivateSubCommand2_Click()ret=MsgBox("数据恢复操作将覆盖以前所有的数据并且覆盖后无法恢复,你确定要进行恢复操作吗?",vbOKOnly+vbExclamation,"提示")Ifret=vbOKThenDimcnAsNewADODB.ConnectionDimsnAsNewADODB.RecordsetDims_restoreAsStringcn.Open"Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=master;DataSource=.;"sn.Open"selectspidfromsysprocesseswheredbid=db_id('学校餐厅')",cnDoWhileNotsn.EOFcn.Execute"kill"&sn("spid")sn.MoveNextLoopsn.Closes_restore="restoredatabase学校餐厅fromdisk='"+Trim(Text2.Text)+"'withREPLACE"cn.Executes_restorecn.BeginTransIfErr.Number=0Thencn.CommitTransMsgBox"^_^恭喜您

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论