数据库课程设计正文.doc_第1页
数据库课程设计正文.doc_第2页
数据库课程设计正文.doc_第3页
数据库课程设计正文.doc_第4页
数据库课程设计正文.doc_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

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

文档简介

王浩 手机话费管理系统的设计与实现 第页 共32页 手机话费管理系统的设计与实现学生姓名:王浩 指导老师:肖晓丽摘 要 本本课程设计主要解决手机信息管理的问题, 设计开发一个简单的手机话费管理系统 ,实现手机收费,话费查询,详单查询等功能。在课程设计中,系统开发平台为Windows XP,程序设计语言采用Visual C+,数据库采用SQL Server 2000,程序运行平台为Windows98/2000/Xp。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在手机信息管理中,解决实际问题。关键词 数据库;手机话费管理系统1引言 过去, 当手机还是一个很新鲜的字眼的时候, 手机是权利与身份的象征, 科技和人们的意识等决定了手机的外在服务不可能达到很高的水平, 那时还没有很完善的机制和软件系统来实现这个不太突出的需求.现代社会, 随着科技的迅猛发展和人们生活水平的日益提高, 手机已成为一个大众化, 且普及率相当高的通讯工具. 正是由于手机的大量普及, 手机网络的服务已成为客户看重的一点. 顾客即是上帝, 一个产品的成功与否很大程度在于它对无形资产的积累, 如培养长期客户. 在这个竞争激烈的市场上, 如何提高手机的服务功能来满足顾客的需要, 在服务上取胜, 培养长期顾客, 创造长远价值成为手机市场的核心问题. 对于目前大多数手机用户来说,手机话费充值的方法都过于单调。除了移动公司所发行的动感地带系列手机卡可以通过直接缴费的方式进行充值外,其他方式的手机卡均只能通过手机充值卡进行充值。因此, 一个具备基本功能且可靠方便的手机话费查询及充值系统可以满足广大手机用户的需要. 本手机用户话费及使用状况查询系统的客户主要有两类:一类是手机的普通用户,可以通过其手机号直接查询该手机的话费;另一类则是管理手机充值的工作人员,除了了可以为用户提供充值以外,他们还具有查看用户信息的权利。该系统将给客户提供方便, 快捷, 准确的服务。2数据库设计2.1需求分析 一、系统功能需求:对于普通的手机用户来说,该系统仅允许他们作一个操作:即可以使用该系统通过手机号与密码发出查询请求, 查询该手机所剩余的话费。以下所述的各种功能都是针对专门的工作人员。他们拥有各自的账号与密码。 工作人员必须通过账号与相对应的密码登陆系统才能有权限完成以下的各种功能。 工作人员的登陆账号也存在两种,一种为普通的工作人员账号,可视为employee账 号; 一种为特定的管理员账号,可视为employer账号。 employee账号所表示的意义一般是工作人员的姓名,而employer账号可以例外。 两种帐号均可进行的操作有:1. 更改与当前登陆账号所对应的密码。2. 可以统计并查看所有的手机用户信息,该信息主要包括两方面,一方面是仅关于本手机的各种信息;另一方面是登记该手机的用户信息。3. 手机的各种信息包括手机号,手机密码,手机收费方式(手机卡使用种类或手机套餐使用种类),手机当前余额等。4. 用户信息包括用户身份证号,姓名,性别,家庭住址等。5. 当存在新的手机号时,无论此时有无用户对其进行登记,都可以将与该手机号相关的纪录添加入数据库中,即可以添加手机用户的纪录。6. 对于所能查看的信息,在需要时可以对相应的信息进行修改更新。7. 对于已销号的手机可以删除关于该手机的纪录。8. 如果存在过多的信息,而需要查找某一条特定纪录时,提供足够的查询信息,如手机号或用户身份证号,则可以直接查询关于该手机号的纪录或关于该用户的所有手机纪录。9. 可以统计并查看所有的手机充值纪录,充值纪录信息也包括两类:手机信息与执行此次充值操作的管理员信息。10. 充值手机信息有:被充值的手机号,本次充值的金额,充值后本手机的当前金额。11. 管理员信息有:管理员编号与管理员账号。12. 可以对特定的手机进行充值,即可以添加手机充值的纪录。13. 可以查询特定的手机充值纪录,提供手机号或工作人员编号,可以查询到对该手机进行充值的纪录或由该工作人员执行过的手机充值纪录。14. 注意已存在手机充值纪录不能也无需由工作人员自身进行删除或更改。15. 如果系统中某手机被销号,则关于该手机所有的充值记录将全部自动消失。16. 每一次手机被充值后,手机的所剩金额将得到自动更新。通过特定的管理员账号所可以执行的特殊操作有:17. 可以查询所有的工作人员的详细信息,该信息包括:工作人员编号,账号名称,密码,性别,家庭住址以及该工作人员是否具有管理员权限。18. 当出现新的工作人员时,可以添加该工作人员的信息。19. 对现存的工作人员的信息可以进行修改。20. 当工作人员离开此岗位时,可以删除该工作人员的信息。21. 对当前系统中存在的所有信息可以进行备份。22. 如果已作过备份,存在备份文件,则可将对系统中所有的信息进行还原(鉴于时间关系,目前该功能的实现较为草率,在以后的版本中将对该功能作做进一步的改进)。 系统的功能需求图见系统功能中6.系统功能设计模块图。二、系统非功能需求 方便性 实时性 快捷性2.2数据流图 系统数据流图如下:用户手机用户基本信息工作人员请求手机充值工作人员基本信息查询个人信息提供用户手机余额请求全部或个别用户信息手机余额查询请求提供查询信息提供所有用户信息请求更改信息供应手机用户信息查询手机用户信息更改信息返回更改状态请求更改信息提供更改后状态手机充值返回充值后的状态更改信息手机充值信息添加充值纪录返回充值状态 查看或查询纪录提供查询纪录提供查询请求返回查询纪录提供更改纪录请求返回更改信息更改信息请求返回更改后的状态查看或查询信息提供信息查看或查询请求返回查看或查询状态图2.1 数据流图2.3数据字典 1、手机信息NameMobile Phone InformationAliases Phonewhere used/how used描述特定手机的信息Description包括手机号、手机余额等 2、用户信息NameCustomer InformationAliases Customerwhere used/how used描述手机持有者的信息Description包括用户姓名,身份证号等 3、工作人员基本信息NameStaff InformationAliases Staffwhere used/how used描述进行充值服务的工作人员的信息Description包括工作人员的编号,账号秘密等 4、手机充值信息NamePhone Record InformationAliases Recordwhere used/how used表示记录每次手机充值的信息Description包括相应的手机信息,充值金额,执行该操作的管理员信息2.4数据库概念结构设计,局部E-R图、全局优化E-R图 由以上的需求分析及数据流图,可以得出以下结论: 1本系统中存在各种关系的实体有:工作人员,手机及手机用户。在本系统中,工作人员主要对手机信息产生操作,所以将用户信息加入手机中,形成手机用户信息。工作人员用staff表示,手机用户信息有phone表示。 2本系统主要存在两种关系:staff对其自身存在管理的关系以及staff充值的phone的记录关系。管理关系使用manage表示,记录关系使用record表示。 由此可得全局及局部优化E-R图为:staffstaffid recordphoneAdministratormanager_of (0:N)reports_to (0:1)recordidphoneid(1:1)(0:N)(1:1)(1:1)(1:1)moneystaffid recordrecordidphoneidbalance(1:1)(1:1)(1:1)(1:1)(1:1)staffnamesexis_managerstaffstaffid(1:1)(1:1)(0:1)(1:1)(1:1)passwordstaffaddr(0:1)customeridpasswordbalancecustomersexID_nocustomernamephonefeetype(0:1)(1:1)(0:1)(1:1)(0:1)(0:1)(0:1)(0:1)customeraddrphoneid(1:1)phoneno(1:1) 图2.2 局部E-R图2.5数据库逻辑结构设计,优化后的数据模型 2.5.1 数据库逻辑结构设计,建立关系模型根据E-R图的描述,建立该系统中所使用的数据库的关系模型。根据转化规则1将图中的每一个实体映射到关系数据库中的一个表,并用实体名来命名该表,有:表2-5-1staffstaff_idstaff_namestaff_passwordsexstaff_addris_manager表2-5-2phonephone_idphone_nopasswordfee_typebalancecus_idcus_nameID_nocus_sexcus_addr又根据转换规则4,可考虑将staff对其自身的一对多的manage关系作为外键添加入staff表中,该外键参照的是自身表中的主键即staff_id。但考虑到staff表中已存在is_manager属性,在具体实现中仅使用该属性即可达到区分工作人员的目的,所以manage关系在该关系数据库中将不再被表示。staff表中不添加表示manager的一列外键。下面根据转换规则3转化staff与phone之间的一对多对多关系:record关系。使用单独的一个表来表示该关系。表中包括从staff与phone转化而来的两个表的主键,还包括连结到该联系的所有属性的列。表示该关系自身存在的属性有:纪录标号recordid, 手机余额balance,充值金额money。总结成下表为: 表2-5-3recordrecord_idphone_idstaff_idbalancemoney 2.5.2 模型中的函数依赖 该关系模型中存在的函数依赖如下: 表staff中:staff_id staff_name, staff_password, sex, staff_addr, is_manager; 表phone中:phone_id phone_no, password, fee_type, balance, cus_id; cus_id cus_name, ID_no, cus_sex, cus_addr; 表record中:record_id phone_id, staff_id, balance, money。 2.5.3 分析范式,优化数据模型 由以上的函数依赖易知:该关系模型仅满足第二范式,而不满足第三范式,所以需要对以上数据模型作进一步改进。如果希望上述模型满足第三范式,则仅需对表phone作无损分解,将关于customer的所有信息写到另一个表中。即将依赖于cus_id的所有属性放到一个名为customer的表中,而在表phone仅留下cus_id属性作为一个外键。优化后的数据模型为: 表2-5-4staffstaff_idstaff_namestaff_passwordsexstaff_addris_manager表2-5-5phonephone_idphone_nopasswordfee_typebalancecus_id 表2-5-6Customercus_idcus_nameID_nocus_sexcus_addr表2-5-7recordrecord_idphone_idstaff_idbalancemoney 2.5.4 分析完整性要求,提出主键、外键、候选键 由以上的表及E-R图中已经可以看出各表的主键及外键,先列举如下: 表2-5-8各表的主键及外键表名主键外键候选键staffstaff_id无staff_name, staff_idphonephone_idcus_idphone_id, phone_nocustomercus_id无cus_id, ID_norecordrecord_idphone_id, staff_idrecord_id2.5.5 提出用户视图本系统的三种用户有三种不同的用户视图范围:手机客户可以访问的列仅有表phone中的phone_no及balance列,并且只能对该两列作查询操作,不能做其他操作。普通工作人员对表order, customer及phone中有查询、添加、删除及更改的权限,但对表staff一般没有操作权限。高层管理员对该数据库中所有的表均具有查询、添加、删除及更改的权限,但不能更改数据库或表本身的配置。2.6数据库物理设计(用SQL语言实现)2.6.1 数据库结构定义表2-6-1staff列名数据类型长度允许空主键外键描述staff_idint4否是否staff_namevarchar15否否否staff_passwordvarchar10是否否staff_addrvarchar20是否否sexbit1否否否1表示男性,0表示女性is_managerbit1否否否1表示manager,0表示normal staff表2-6-2customer列名数据类型长度允许空主键外键描述cus_idint4否是否cus_namevarchar50否否否ID_nochar18否否否cus_addrvarchar20否否否sexbit1是否否1表示男性,0表示女性表2-6-3phone列名数据类型长度允许空主键外键描述phone_idint4否是否passwordvarchar6是否否phone_nochar11否否否fee_typechar20是否否balancemoney8否否否cus_idint4是否是引用表customer的主键cus_id列表2-6-4order列名数据类型长度允许空主键外键描述order_idint4否是否phone_idint4否否是引用表phone的主键phone_id列staff_idint4否否是引用表staff的主键staff_id列moneymoney8否否否balancemoney8是否否 2.6.2 建立索引、视图 1索引:本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。在查询时即引用主索引即可。表staff的主索引列为:staff_id;表customer的主索引列为:cus_id;表order的主索引列为:order_id;表phone的主索引列为:phone_id。2视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select语句的结果集取代。2.6.3 存储过程(如果使用)的结构和定义2.6.4 主要的查询语句等 1对表staff进行操作的语句有: 查询表中所有行,并按staff_id排序:select * from staff order by staff_id;对于一定的staff_id值,查询表中相应列:select is_manager from staff where staff_id =; 对于一定的staff_id值,查询表中所有列:select * from staff where staff_id = ;插入新行:insert staff (staff_id, staff_name, staff_addr, staff_password, sex, is_manager) values (, , , , , ); 删除某列:delete from staff where staff_id=; 更新表中的特定列:Update staff set staff_name = , staff_password = , sex = , staff_addr = , is_manager = where staff_id = 。 2对表phone,customer所执作的操作与对表staff的操作类似: 查询:select * from phone, customer where phone.cus_id = customer.cus_id order by phone_id; select * from phone where cus_id is NULL order by phone_id; select cus_id from phone where phone_no = ; 插入:insert customer (cus_id, cus_name, ID_no, sex, cus_addr) values (, ,); 删除:delete from phone where phone_id = ; 更新:Update phone set phone_no = , password =,fee_type = , balance = CAST( AS money) where phone_id = 。 3对表order所执行的操作: 查询:select * from order order by order_id;select * from phone where phone_no = ; select phone_id from phone where phone_no = ; 插入:insert order (order_id, phone_id, staff_id, money, balance) values (, ,CAST( AS money), CAST( AS money); 4备份恢复数据库所需的语句: 建立备份文件:EXEC sp_addumpdevice disk,DiskBak_MPQ,; 文件备份:BACKUP DATABASE MPhoneData to DiskBak_MPQ; 文件恢复:RESTORE DATABASE MPhoneData from DiskBak_MPQ; 删除备份文件:sp_dropdevice DiskBak_MPQ。3.系统功能3. 3.1程序的运行环境 表3-1 程序的运行环境类别标准配置最低配置计算机硬件Pentium (R) 4 CPU,256MB内存Pentium (R) 4 CPU 1.8GHZ,128MB内存软件操作系统Windows XP Service Pack 1, Windows XP Service Pack 2, and Windows 2000Windows 98ODBC数据源命名为MPQ的数据源,连接本系统所用数据库的MPQueryData命名为MASTER的数据源,连接系统数据库master网络通信其他3.2开发环境表3-2 开发环境类别标准配置最低配置计算机硬件Pentium (R) 4 CPU,256MB内存Pentium (R) 4 CPU 1.8GHZ,128MB内存软件操作系统Windows XP Service Pack 1, Windows XP Service Pack 2, and Windows 2000Windows 98数据库后台程序Microsoft SQL Server 2000前台开发程序Microsoft Visual C+ 6.0ODBC数据源命名为MPQ的数据源,连接本系统所用数据库的MPQueryData命名为MASTER的数据源,连接系统数据库master网络通信3.3系统总体设计功能模块图 手机话费管理系统用户信息管理工作人员信息管理手机充值用户信息查看用户信息删除用户信息修改工作人员信息查看工作人员信息修改工作人员信息删除用户信息查询系统管理手机充值记录查看手机充值手机充值记录查询用户信息添加工作人员信息添加系统管理密码管理用户管理工作人员管理系统登陆管理备份恢复管理用户查询备份区分工作人员权限图3.1系统总体设计功能模块图3.4主要功能描述 由以上的功能模块图可以看出系统所具有的主要功能:1. 手机用户可以选择用户查询功能直接查询某手机的余额。2. 全部工作人员均可以查询用户信息,并提供用户充值。a) 工作人员选择手机用户信息查看可以统计所有手机及该手机持有者的信息。如果该手机没有用户信息,则用户信息为空白。b) 对于所能查看到的每条手机及用户信息,工作人员都可以对其进行修改。c) 对于所能查看到的需要删除的手机及用户信息,工作人员均可以将其删除,并自动删除相应的手机充值纪录。d) 工作人员可以添加新的手机及其用户信息。e) 如果存在手机或用户纪录,工作人员可以通过提供手机号或用户身份证号查询到相应的纪录。f) 工作人员可以查看所有手机的所有充值纪录。g) 工作人员填写相应的手机号及充值金额即可为手机提供充值,并自动更新手机余额。h) 选择相应的手机号或工作人员编号,可以查询到该手机所有的充值纪录或由该工作人员完成的充值纪录。3. 全部工作人员均可以修改与自己的用户名相应的密码,并立即生效。4. 高层管理人员还可以管理全部工作人员的信息。a) 高层管理人员选择工作人员信息查看可以统计工作人员的信息。b) 对于所能查看到的每条工作人员信息,高层管理人员都可以对其进行修改。c) 对于已离职的工作人员,高层管理人员均可以将其信息删除。d) 高层管理人员工作人员可以添加新的工作人员信息。e) 高层管理人员可以使用工作人员的编号查询到相应的信息纪录。3.5主要运行界面的图片 a.登陆界面:图3.2登陆界面 b.充值界面:图3.3充值界面 c.查询界面:图3.3查询界面 4程序调试情况该系统在调试过程中主要出现了以下四个问题:1VC+连接数据库时,需要在系统中建立连接了该数据库的数据源,并且保证程序中引用该数据源时使用的名称正确。2在对表示充值纪录的表order执行各种操作时,总是会出现SQL语句执行错误的提示,原因是“order”是SQL语言中的保留字,所以如果有表的名字和order相同,则在使用表order时必须写作“order”。3在程序执行过程中,需要进行SQL数据类型char与money之间的转换,此时,SQL语言不支持这两种语言之间的隐性转换,必须使用CAST或convert函数进行显性转换:如使用CAST(变量名 AS money)。4在执行对手机用户信息的操作时,需要将customer ,phone两个表在cus_id列上做连接。由于phone表引用了customer表的cus_id列作为外键,所以对于某一手机如果出现新的用户信息,必须先在customer表上添加用户,再将phone进行更新;反顺序执行将出现错误。对于引用外键的表均需采用该种方法添加或修改表中的信息,另如staff表。5总 结综上所述,本系统是一个简单的用作手机用户充值或查询信息的系统,它具有功能简单完整,操作方便的特点。通过对该系统的实现,使我较好的掌握了SQL Server数据库应用系统与MS VC+6.0之间的连接方法,熟悉了MFC的用法,也使我进一步熟悉了对数据库的各种基本操作,使我受益匪浅。但是本系统在备份与恢复数据库时还存在着一些问题,我希望能在以后的系统开发中,更好地解决该问题。致 谢在这次数据库课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计,在此,我衷心感谢我的指导老师.肖晓丽老师,另外,感谢学校为我们供了良好的设计环境以及各方面的支持,感谢。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 回想此次课程设计的经历,至今我深有感触,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,这个本学期真的是非常的忙尤其是这两周甚至比高三还忙,但是真的发现课程设计可以学到很多很多的的东西,得到许多许多做项目的实战经验,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。比如说word我以前对这个办公软件掌握是远远不够的了解是经过这次课程设计以后我又进一步的学习了它的使用方法。还有我对与多媒体编程理解有了质的飞跃对于数据库的的使用更加熟悉,这都是此次课程设计带给我的收获。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中我遇到太多太多问题太多太多挫折,但还是坚持下来了,我知道这对于一个以计算机为专业的学生而言这是必须经历的。在设计的过程中我发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固.通过这次课程设计之后,一定把以前所学过的知识重新温故。 最后感谢肖晓丽老师和那些给过我帮助的所有同学!参考文献1 李彦,韩光林,李玉波.SQL SERVER完全自学手册.北京:电子工业出版社,20092 宋绅,刘锐宁.Visual C+开发技术大全.北京:人民邮电出版社,20093 王艳平,张铮.Windows程序设计.北京:人民邮电出版社,20084 王红梅,胡明,王涛. 数据结构(C+版).北京:清华大学出版社,2009 5 Mark Allen Weiss.数据结构与算法分析C+描述.北京:人民邮电出版社,20096 郑阿奇,丁有和. Visual C+教程.北京:机械工业出版社,20087 萨师煊, 王珊.数据库系统概论(第三版).北京:高等教育出版社. 2007附录 部分程序代码/ 程序名称: ADOConn.cpp/ 程序功能:数据库连接/ 程序作者:王浩/ 最后修改日期:2010-09-08void ADOConn:OnInitADOConn() /初始化 连接数据库/ 初始化OLE/COM库环境 :CoInitialize(NULL); try/ 创建Connection对象m_pConnection.CreateInstance(ADODB.Connection);/ 设置连接字符串,必须是BSTR型或者_bstr_t类型_bstr_t strConnect = Provider=SQLOLEDB; Server=5B41B73D460A40A;Database=Hospital; uid=sa; pwd=sa;m_pConnection-Open(strConnect,adModeUnknown);/ 捕捉异常catch(_com_error e)/ 显示错误信息AfxMessageBox(e.Description();/ 执行查询_RecordsetPtr& ADOConn:GetRecordSet(_bstr_t bstrSQL)try/ 连接数据库,如果Connection对象为空,则重新连接数据库if(m_pConnection=NULL)OnInitADOConn();/ 创建记录集对象m_pRecordset.CreateInstance(_uuidof(Recordset);/ 取得表中的记录m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);/ 捕捉异常catch(_com_error e)/ 显示错误信息AfxMessageBox(e.Description();/ 返回记录集return m_pRecordset; / 执行SQL语句,Insert Update _variant_tBOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL)/_variant_t RecordsAffected;try/ 是否已经连接数据库if(m_pConnection = NULL)OnInitADOConn();/ Connection对象的Execute方法:(_bstr_t CommandText, / VARIANT * RecordsAffected, long Options ) / 其中CommandText是命令字串,通常是SQL命令。/ 参数RecordsAffected是操作完成后所影响的行数, / 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名/ adCmdProc-存储过程;adCmdUnknown-未知m_pConnection-Execute(bstrSQL,NULL,adCmdText);return true;catch(_com_error e)AfxMessageBox(e.Description();return false;void ADOConn:ExitConnect()/ 关闭记录集和连接if (m_pRecordset != NULL)m_pRecordset-Close();m_pConnection-Close();/ 释放环境:CoUninitialize();/ AddAdminDlg.cpp : implementation file/#include stdafx.h#include MPhoneQuery.h#include AddAdminDlg.h#include MPhoneQueryView.h#include MainFrm.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAddAdminDlg dialogCAddAdminDlg:CAddAdminDlg(CWnd* pParent /*=NULL*/): CDialog(CAddAdminDlg:IDD, pParent)/AFX_DATA_INIT(CAddAdminDlg)m_strAdminId = _T();m_strAdminAddr = _T();m_strAdminName = _T();m_strAdminPswd = _T();m_strAdminSex = _T();m_strIsManager = _T();/AFX_DATA_INITvoid CAddAdminDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAddAdminDlg)DDX_Text(pDX, IDC_ADD_IDNUMBER, m_strAdminId);DDX_Text(pDX, IDC_ADD_ADDRESS, m_strAdminAddr);DDX_Text(pDX, IDC_ADD_NAME, m_strAdminName);DDX_Text(pDX, IDC_ADD_PSWD, m_strAdminPswd);DDX_Text(pDX, IDC_ADD_SEX, m_strAdminSex);DDX_Text(pDX, IDC_ADD_ISMANAGER, m_strIsManager);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAddAdminDlg, CDialog)/AFX_MSG_MAP(CAddAdminDlg)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CAddAdminDlg message handlersvoid CAddAdminDlg:OnOK() / TODO: Add extra validation hereUpdateData(true);m_strAdminId.TrimRight( ); m_strAdminName.TrimRight( );m_strAdminPswd.TrimRight( );m_strAdminSex.TrimRight( );m_strAdminAddr.TrimRight( );m_strIsManager.TrimRight( );/ 确定所有输入有效CString sWarning=;if ( = m_strAdminId ) sWarning = _T(管理员编号); else if ( = m_strAdminName )sWarning = _T(管理员姓名名称);else if ( = m_strAdminSex )sWarning = _T(管理员性别);else if ( = m_strIsManager)sWarning = _T(是否高层管理员); if ( != sWarning ) sWarning += _T(不能为空); AfxMessageBox(sWarning, MB_ICONEXCLAMATION); return;CString strSex;if ( m_strAdminSex = 男)strSex = 1;else if ( m_strAdminSex = 女)strSex = 0;if ( m_strIsManager = 是 )m_strIsManager = 1;else if ( m_strIsManager = 否)m_strIsManager = 0;_variant_t strQuery;if (m_bAppend)/ 判断管理员唯一性strQuery = select * from staff where staff_id = +m_strAdminId+;theApp.ADOExecute(theApp.m_pADOSet, strQuery);int iCount = theApp.m_pADOSet-GetRecordCount();if ( iCount != 0 ) AfxMessageBox(_T(已经存在该编号的纪录!), MB_ICONEXCLAMATION); return;/ 添加记录;strQuery = insert staff (staff_id, staff_name, staff_addr, staff_password, sex, is_manager) values (+m_strAdminId+, +m_strAdminName+,+m_strAdminPswd+,+m_strAdminAddr+,+strSex+,+m_strIsManager+);if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) AfxMessageBox(_T(添加记录成功!), MB_ICONINFORMATION);/ 清空输入数据m_strAdminId = m_strAdminName = m_strAdminAddr = m_strAdminSex = m_strAdminPswd = m_strIsManager = ;UpdateData(false);else AfxMessageBox(_T

温馨提示

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

评论

0/150

提交评论