数据库课程设计正文.docx
- 文档编号:16581005
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:34
- 大小:316.11KB
数据库课程设计正文.docx
《数据库课程设计正文.docx》由会员分享,可在线阅读,更多相关《数据库课程设计正文.docx(34页珍藏版)》请在冰点文库上搜索。
数据库课程设计正文
手机话费管理系统的设计与实现
学生姓名:
王浩指导老师:
肖晓丽
摘要本本课程设计主要解决手机信息管理的问题,设计开发一个简单的手机话费管理系统,实现手机收费,话费查询,详单查询等功能。
在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VisualC++,数据库采用SQLServer2000,程序运行平台为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、手机信息
NameMobilePhoneInformation
AliasesPhone
whereused/howused描述特定手机的信息
Description包括手机号、手机余额等
2、用户信息
NameCustomerInformation
AliasesCustomer
whereused/howused描述手机持有者的信息
Description包括用户姓名,身份证号等
3、工作人员基本信息
NameStaffInformation
AliasesStaff
whereused/howused描述进行充值服务的工作人员的信息
Description包括工作人员的编号,账号秘密等
4、手机充值信息
NamePhoneRecordInformation
AliasesRecord
whereused/howused表示记录每次手机充值的信息
Description包括相应的手机信息,充值金额,执行该操作的管理员信息
2.4数据库概念结构设计,局部E-R图、全局优化E-R图
由以上的需求分析及数据流图,可以得出以下结论:
1.本系统中存在各种关系的实体有:
工作人员,手机及手机用户。
在本系统中,工作人员主要对手机信息产生操作,所以将用户信息加入手机中,形成手机用户信息。
工作人员用staff表示,手机用户信息有phone表示。
2.本系统主要存在两种关系:
staff对其自身存在管理的关系以及staff充值的phone的记录关系。
管理关系使用manage表示,记录关系使用record表示。
由此可得全局及局部优化E-R图为:
图2.2局部E-R图
2.5数据库逻辑结构设计,优化后的数据模型
2.5.1数据库逻辑结构设计,建立关系模型
根据E-R图的描述,建立该系统中所使用的数据库的关系模型。
根据转化规则1将图中的每一个实体映射到关系数据库中的一个表,并用实体名来命名该表,有:
表2-5-1staff
staff_id
staff_name
staff_password
sex
staff_addr
is_manager
…
…
…
…
…
…
表2-5-2phone
phone_id
phone_no
password
fee_type
balance
cus_id
cus_name
ID_no
cus_sex
cus_addr
…
…
…
…
…
…
…
…
…
…
又根据转换规则4,可考虑将staff对其自身的一对多的manage关系作为外键添加入staff表中,该外键参照的是自身表中的主键即staff_id。
但考虑到staff表中已存在is_manager属性,在具体实现中仅使用该属性即可达到区分工作人员的目的,所以manage关系在该关系数据库中将不再被表示。
staff表中不添加表示manager的一列外键。
下面根据转换规则3转化staff与phone之间的一对多对多关系:
record关系。
使用单独的一个表来表示该关系。
表中包括从staff与phone转化而来的两个表的主键,还包括连结到该联系的所有属性的列。
表示该关系自身存在的属性有:
纪录标号recordid,手机余额balance,充值金额money。
总结成下表为:
表2-5-3record
record_id
phone_id
staff_id
balance
money
…
…
…
…
…
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-4staff
staff_id
staff_name
staff_password
sex
staff_addr
is_manager
…
…
…
…
…
…
表2-5-5phone
phone_id
phone_no
password
fee_type
balance
cus_id
…
…
…
…
…
表2-5-6Customer
cus_id
cus_name
ID_no
cus_sex
cus_addr
…
…
…
…
…
表2-5-7record
record_id
phone_id
staff_id
balance
money
…
…
…
…
…
2.5.4分析完整性要求,提出主键、外键、候选键
由以上的表及E-R图中已经可以看出各表的主键及外键,先列举如下:
表2-5-8各表的主键及外键
表名
主键
外键
候选键
staff
staff_id
无
staff_name,staff_id
phone
phone_id
cus_id
phone_id,phone_no
customer
cus_id
无
cus_id,ID_no
record
record_id
phone_id,staff_id
record_id
2.5.5提出用户视图
本系统的三种用户有三种不同的用户视图范围:
手机客户可以访问的列仅有表phone中的phone_no及balance列,并且只能对该两列作查询操作,不能做其他操作。
普通工作人员对表order,customer及phone中有查询、添加、删除及更改的权限,但对表staff一般没有操作权限。
高层管理员对该数据库中所有的表均具有查询、添加、删除及更改的权限,但不能更改数据库或表本身的配置。
2.6数据库物理设计(用SQL语言实现)
2.6.1数据库结构定义
表2-6-1staff
列名
数据类型
长度
允许空
主键
外键
描述
staff_id
int
4
否
是
否
staff_name
varchar
15
否
否
否
staff_password
varchar
10
是
否
否
staff_addr
varchar
20
是
否
否
sex
bit
1
否
否
否
1表示男性,0表示女性
is_manager
bit
1
否
否
否
1表示manager,0表示normalstaff
表2-6-2customer
列名
数据类型
长度
允许空
主键
外键
描述
cus_id
int
4
否
是
否
cus_name
varchar
50
否
否
否
ID_no
char
18
否
否
否
cus_addr
varchar
20
否
否
否
sex
bit
1
是
否
否
1表示男性,0表示女性
表2-6-3phone
列名
数据类型
长度
允许空
主键
外键
描述
phone_id
int
4
否
是
否
password
varchar
6
是
否
否
phone_no
char
11
否
否
否
fee_type
char
20
是
否
否
balance
money
8
否
否
否
cus_id
int
4
是
否
是
引用表customer的主键cus_id列
表2-6-4order
列名
数据类型
长度
允许空
主键
外键
描述
order_id
int
4
否
是
否
phone_id
int
4
否
否
是
引用表phone的主键phone_id列
staff_id
int
4
否
否
是
引用表staff的主键staff_id列
money
money
8
否
否
否
balance
money
8
是
否
否
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*fromstafforderbystaff_id;
对于一定的staff_id值,查询表中相应列:
selectis_managerfromstaffwherestaff_id='…';
对于一定的staff_id值,查询表中所有列:
select*fromstaffwherestaff_id='…';
插入新行:
insertstaff(staff_id,staff_name,staff_addr,staff_password,sex,is_manager)
values(…,…,…,…,…,…);
删除某列:
deletefromstaffwherestaff_id='…';
更新表中的特定列:
Updatestaffsetstaff_name='…',staff_password='…',sex='…',staff_addr='…',is_manager='…'wherestaff_id='…'。
2.对表phone,customer所执作的操作与对表staff的操作类似:
查询:
select*fromphone,customerwherephone.cus_id=customer.cus_idorderbyphone_id;
select*fromphonewherecus_idisNULLorderbyphone_id;
selectcus_idfromphonewherephone_no='…';
插入:
insertcustomer(cus_id,cus_name,ID_no,sex,cus_addr)values('…','…','…','…','…');
删除:
deletefromphonewherephone_id='…';
更新:
Updatephonesetphone_no='…',password='…’,fee_type='…',balance=CAST('…'ASmoney)wherephone_id='…'。
3.对表order所执行的操作:
查询:
select*from[order]orderbyorder_id;
select*fromphonewherephone_no='…';
selectphone_idfromphonewherephone_no='…';
插入:
insert[order](order_id,phone_id,staff_id,money,balance)values('…','…','…',CAST('…'ASmoney),CAST('…'ASmoney));
4.备份恢复数据库所需的语句:
建立备份文件:
EXECsp_addumpdevice'disk','DiskBak_MPQ','…';
文件备份:
BACKUPDATABASEMPhoneDatatoDiskBak_MPQ;
文件恢复:
RESTOREDATABASEMPhoneDatafromDiskBak_MPQ;
删除备份文件:
sp_dropdevice'DiskBak_MPQ'。
3.系统功能
3.3.1程序的运行环境
表3-1程序的运行环境
类别
标准配置
最低配置
计算机硬件
Pentium(R)4CPU,256MB内存
Pentium(R)4CPU1.8GHZ,128MB内存
软件
操作系统
WindowsXPServicePack1,WindowsXPServicePack2,andWindows2000
Windows98
ODBC数据源
命名为MPQ的数据源,连接本系统所用数据库的MPQueryData
命名为MASTER的数据源,连接系统数据库master
网络通信
其他
3.2开发环境
表3-2开发环境
类别
标准配置
最低配置
计算机硬件
Pentium(R)4CPU,256MB内存
Pentium(R)4CPU1.8GHZ,128MB内存
软件
操作系统
WindowsXPServicePack1,WindowsXPServicePack2,andWindows2000
Windows98
数据库后台程序
MicrosoftSQLServer2000
前台开发程序
MicrosoftVisualC++6.0
ODBC数据源
命名为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程序调试情况
该系统在调试过程中主要出现了以下四个问题:
1.VC++连接数据库时,需要在系统中建立连接了该数据库的数据源,并且保证程序中引用该数据源时使用的名称正确。
2.在对表示充值纪录的表order执行各种操作时,总是会出现SQL语句执行错误的提示,原因是“order”是SQL语言中的保留字,所以如果有表的名字和order相同,则在使用表order时必须写作“[order]”。
3.在程序执行过程中,需要进行SQL数据类型char与money之间的转换,此时,SQL语言不支持这两种语言之间的隐性转换,必须使用CAST或convert函数进行显性转换:
如使用CAST('变量名'ASmoney)。
4.在执行对手机用户信息的操作时,需要将customer,phone两个表在cus_id列上做连接。
由于phone表引用了customer表的cus_id列作为外键,所以对于某一手机如果出现新的用户信息,必须先在customer表上添加用户,再将phone进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 正文