资源描述
报刊订阅管理系统开发和
实现
专业: 计算机科学和技术 学号: 姓名:
课程设计名称: 数据库原理及应用
设计题目: 报刊订阅管理系统设计和实现
完成期限:自 12 月 14 日至 年 12 月 27 日共 2 周
设计依据、要求及关键内容(可另加附页):
本系统关键面向用户有系统管理员、读者。下面分角色对该系统不一样操作范围做说明,关键有以下功效模块:
(1)登陆功效:登陆系统为身份验证登录。分为管理员登录和通常见户登录。分别经过不一样用户名和密码进入报刊订阅管理界面。
(2)录入新信息功效:对于管理员,包含新用户信息和新报刊信息录入功效,信息一旦提交就存入到后台数据库中;一般用户自行注册进行录入个人信息。
(3)订阅功效:用户能够订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必需以用户身份订阅报刊。
(4)查询功效:用户能够查询并显示自己所订阅信息;管理员能够按人员、报刊、部门分类查询。查询出信息显示在界面上。
(5)统计功效:管理员能够按用户、部门、报刊统计报刊销售情况,并对部分关键订阅信息进行统计;一般用户能够统计出自己订阅情况。
(6)系统维护功效:管理员能够对用户、报刊、部门、订阅等信息进行添加、删除、更改等维护工作;用户能够更改自己注册信息,但用户名不能更改。
指导老师(签字): 教研室主任(签字):
同意日期: 年 月 日
摘 要
本系统是一个面向于企业报刊订阅管理系统。系统是智能化管理系统,它面向全部企业部门职员用户,但含有安全性能。它能够实现报刊订阅基础功效,包含新报刊信息登录、录入、订阅、查询、统计等操作。用户正当注册后必需输入有效密码才能成功进入此系统,能够进行订阅报刊,查询信息,统计信息等操作。对于非法操作,系统有识别和防护方法。
订阅信息处理特点是订阅信息处理量比较大,所管理信息信息种类繁多,而且订阅单、编辑单发生量尤其大,关联信息多,查询和统计方法各不相同。所以在管理上实现起来有一定因难。
系统在设计过程中,为了克服这些困难,需要使程序代码标准化,软件统一化,确保软件可维护性和实用性;删除无须要管理冗余,实现管理规范化、科学化;界面友好、简单化,做到实用、方便,尽可能满足报刊订阅中职员需要。
关键词: PowerBuilder;Microsoft SQL Server ;录入;查询;统计;订阅;
目 录
1 系统需求分析………………………………………………………………6
1.1 信息需求分析………………………………………………………6
1.2 业务步骤分析………………………………………………………6
1.3 功效需求分析………………………………………………………8
1.4 数据流图……………………………………………………………8
1.5 数据字典………………………………………………………… 11
2 系统设计………………………………………………………………… 13
2.1系统功效结构设计……………………………………………… 13
2.2 数据库概念设计………………………………………………… 13
2.3 数据库逻辑设计………………………………………………… 15
2.4 数据库物理设计………………………………………………… 17
3 系统实现和测试…………………………………………………………19
3.1 数据库连接………………………………………………………19
3.2 模块功效实现……………………………………………………20
3.2.1 菜单实现………………………………………………20
3.2.2 登录模块实现…………………………………………21
3.2.3 录入信息模块实现……………………………………24
3.2.4 查询信息模块实现……………………………………25
3.2.5 统计信息模块实现……………………………………28
3.2.6 订阅报刊模块实现……………………………………29
3.2.7 更改信息实现…………………………………………32
3.3 系统测试……………………………………………………… 34
总结…………………………………………………………………………41
参考文件……………………………………………………………………42
1. 系统需求分析
1.1 信息需求分析
1.3.1 资料搜集:业务步骤中用到相关单据关键是报刊信息还有订单信息
报刊信息表:
报刊代号
46-250
报刊名称
IT时代周刊
出版报社
科技出版社
出版周期
半月刊
每个月定价
10.00 元/月
分类编号
1001
报刊介绍
《IT时代周刊》是一本深刻解读信息时代商业变革杂志。除深度报道信息产业重大新闻外,还报道金融、汽车、股市、零售等传统行业利用IT提升商业和管理新闻。《IT时代周刊》以调查见深度;以商业小说见功力。是CEO/CIO/CFO和政府官员、商业领袖首选刊物。
订单信息表:
订单编号
报刊代号
用户编号
订阅日期
订阅月数
份数
操作
3003
46-205
3206
-7-1
订一月
1
取消订阅
3004
26-306
3108
-7-8
订六个月
2
取消订阅
3005
72-310
3100
-7-9
订十二个月
1
取消订阅
3006
45-214
2541
-7-10
订一季
1
取消订阅
1.2 业务步骤分析:
本系统关键面向用户有系统管理员、读者。下面分角色对该系统不一样操作范围做说明。
下图为该系统业务步骤图
1.3 功效需求分析
本系统关键结构功效图以下:
(1)登陆功效:登陆系统为身份验证登录。分为管理员登录和通常见户登录。分别经过不一样用户名和密码进入报刊订阅管理界面。
(2)录入新信息功效:对于管理员,包含新用户信息和新报刊信息录入功效,信息一旦提交就存入到后台数据库中;一般用户自行注册进行录入个人信息。
(3)订阅功效:用户能够订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必需以用户身份订阅报刊。
(4)查询功效:用户能够查询并显示自己所订阅信息;管理员能够按人员、报刊、部门分类查询。查询出信息显示在界面上。
(5)统计功效:管理员能够按用户、部门、报刊统计报刊销售情况,并对部分关键订阅信息进行统计;一般用户能够统计出自己订阅情况。
(6)系统维护功效:管理员能够对用户、报刊、部门、订阅等信息进行添加、删除、更改等维护工作;用户能够更改自己注册信息,但用户名不能更改。
1.4 数据流图
图1.6.1 报刊订阅管理系统顶层图
图1.6.2 系统1层图
图1.6.3 系统2层图
图1.6.4 系统3层图
图1.6.5 系统4层图
1.5 数据字典
(1)数据结构
管理员用户=管理员帐户+管理员密码
订户=订户编号+订户名+联络电话+联络地址
目录=目录编号+目录名+单价+批注信息
订单=订单号+订户编号+下订日期
订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价
(注:为确保订单确定后价格不随目录单价变动,订单细节中应该有独立单价来统计下订时目录单价)
(2)数据项
表2.1 数据项表
编号
标识符
类型
长度
所属表名
同义名
1
Aname
Varchar
20
Administrator
管理员帐户
2
Apassword
Varchar
20
Administrator
管理员密码
3
Uname
Varchar
20
Consumer
订户名
4
Uphone
Varchar
15
Consumer
联络电话
5
UAddress
Varchar
50
Consumer
联络地址
6
Magazine_name
Varchar
20
Magazine
目录名
7
WholPrice
Float
8
Magazine
Subscrible
目录单价,
下订时目录单价
8
Snum
Int
4
Subscribe
订阅数量
9
Subscribenum
Int
4
Subscribe
订阅期数
10
Snum
Float
8
Subscribe
订单项总价
(3) 数据流
编号
名称
起源
去向
组成
1
身份信息
系统管理员
应用系统
管理员帐户+密码
2
授权信息
应用系统
系统管理员
3
错误身份信息
应用系统
系统管理员
4
查询请求
系统管理员
应用系统
待查询对象识别符(如Cid,Ono)
5
查询结果
应用系统
系统管理员
被查询对象具体信息
6
管理请求
系统管理员
应用系统
识别符(Cid,Ono等)+类型
7
管理结果信息
应用系统
系统管理员
被管理对象处理结果
8
非法请求
应用系统
系统管理员
非法请求提醒信息
表2.2 数据流表
2 系统设计
2.1系统功效结构设计
系统功效结构图以下图所表示:
图2.1.1 系统功效结构图
2.2数据库概念设计
基础项构思ERD四条基础标准:
①标准1 (确定实体):能独立存在事物,比如人、物、事、地、团体、机构、活动、事项等等,在其有多个由基础项描述特征需要关注时,就应把它作为实体。
②标准2 (确定联络):两个或多个实体间关联和结合,如主管,隶属,组成,占有,作用,配合,协相同等,当需要给予关注时,应作为联络。实体间联络可分为一对一、一对多、多对多等三类,在确定联络时还要确定其类型。
③标准3 (确定属性):实体属性是实体本质特征。实体应有标识属性(能把不一样个体区分开来属性组),并指定其中一个作为主标识。联络属性是联络结果或状态。
④标准4(一事一地):信息分析中得到基础项要在且仅在实体联络图中一个地方作为属性出现。
经过上述系统功效分析和需求总结,设计以下面所表示数据项和数据结构。
l 管理员表(Administrator):用于存放管理员数据统计,包含数据项:管理员名、密码。
l 部门表(Department):用来存放部门相关统计,包含数据项:部门号,部门名。
l 用户表(Consumer):用于存放注册用户统计,包含数据项:用户账号、密码、真实姓名、身份证号、联络电话,联络地址,部门号(和部门表相关)等。
l 报刊信息表(magazine):用于存放报刊统计,包含数据项:报刊代号、报刊名称、出版报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表相关)等。
l 订单表(subscribe):用于存放用户下达订阅报刊基础信息,包含数据项:订单编号、用户编号(用户表主码)、报刊代号(报刊信息表主码)、订阅份数、订阅月数等。
依据上面设计计划出来实体有部门实体、管理员实体、用户实体、报刊信息实体和订单实体。
部门实体E-R图以下图所表示: 管理员实体E-R图以下图所表示:
用户实体E-R图以下图所表示: 报刊信息实体E-R图以下图所表示:
订单实体E-R图以下图所表示:
全部实体之间关系E-R图以下图所表示:
2.3 数据库逻辑设计
(1)通常逻辑模型设计
关系模型逻辑结构是一组关系模式集合。将E-R图转换为关系模型就是要将实体型、实体属性和实体型之间联络转换为关系模式。
由ERD导出通常关系模型四条标准;
①一个1:1联络能够转换为一个独立关系模式,也能够和任意一端对应关系模式合并。假如软换为一个独立关系模式,则和该联络相连各实体码和联络本身属性均转换为关系属性,每个实体码均是该关系候选码。假如和某一端实体对应关系模式何明,则需要在该关系模式属性中加入另一个关系模式码和联络本身属性。
②一个1:n联络能够转换为一个独立关系模式,也能够和n端对应关系模式合并。假如转换为一个独立关系模式,则和该联络相连各实体码和联络本身属性均转换为关系属性,而关系码为n端实体码。
③一个m:n联络转换为一个关系模式。和该联络相连各实体码和联络本身属性均转换为关系属性,各实体码组成关系码或关系码一部分。
④3个或3个以上实体间一个多元联络能够转换为一个关系模式。和该多元联络项链呢各实体码和联络本身属性均转换为关系属性,各实体码组成关系码或关系码一部分。
依据以上标准将E-R图转换成关系模式以下:
部门(部门号,部门名称)
用户(用户账号,密码,用户真实姓名,联络电话,联络地址,部门号)
管理员(管理员名,密码)
报刊类别(分类编号,分类名称)
报刊(报刊代号,报刊名称,出版报社,出版周期,每个月订价,内容介绍,分类编号)
订单(用户名,报刊代号,订阅份数,订阅月数,订阅总额)
(2)具体逻辑模型设计
在SQL Server数据库中,首先创建报刊订阅管理系统数据库,然后依据数据库逻辑结构分析创建表4-1━4-66张数据表。在前台访问数据库阶段设置了用户和密码,用户为sa,密码为空。
表4-1 department部门表结构
字段名称
字段类型
许可空
说明
Dnumber(主码)
Char(10)
否
部门号
Dname
Char(50)
否
部门名称
表4-2 consumer用户表结构
字段名称
字段类型
许可空
说明
Uname(主码)
Char(10)
否
用户帐号
Upassword
Char(20)
是
真实姓名
Urealname
Char(10)
否
用户密码
Usex
Char(150)
是
用户联络地址
Uphone
Char(20)
是
用户联络电话
Uaddress
Char(10)
否
用户所属部门号
Subscribenum
Char(10)
否
订阅数量
表4-3 magazine报刊表结构
字段名称
字段类型
许可空
说明
mnumber(主码)
Char(10)
否
报刊代号
mname
Char(40)
否
报刊名称
mkind
Int(4)
否
报刊分类
mpress
Char(10)
否
出版报社
mtime
Char(30)
否
出版日期
mhalfprice
Char(10)
否
六个月定价
mwhole
Float(8)
否
整年定价
表4-4 subscribe订单表结构
字段名称
字段类型
许可空
说明
Uname(主码)
Char(10)
否
用户帐号
Mnumber(主码)
Char(10)
否
报刊代号
Syear
Int(4)
否
订阅份数
Snumber
Int(4)
否
订阅月数
Ssum
Float(8)
是
订阅总额
表4-5 adminuser管理员表结构
字段名称
字段类型
许可空
说明
Aname(主码)
Char(10)
否
管理员用户名
Apassword
Char(10)
否
管理员密码
2.4 数据库物理设计
(1)索引选择建立
因为系统可能要包含大量数据操作,所以索引建立就成为一个必需。本系统采取B+树索引方法,分别在各Consumer,magazine_query,consumer_stat和query_depat各个表主键上建立关系表。
(2)数据存放位置
本系统数据和索引存放在磁盘中。
(3)确定系统配置
依据具体需要配置。
(4) 模块设计
登陆模块
图2.4.1 登陆模块IPO图
管理功效模块
图2.4.2 管理功效模块IPO图
查询功效模块
图2.4.3 查询功效模块IPO图
3 系统实现和测试
3.1 连接数据库实现
打开PowerBuilder,新建一个magazine,新建一个Application,取名magazine,然后点击工具栏上DB Profile,新建一个MSS Microsoft SQL Server,填入Profile Name,服务器名,用户名,密码,数据库,以下图:
连接数据库:
然后输入连接数据库关键代码:
3.2 模块功效实现
3.2.1 菜单实现
(1)制作管理员主菜单w_adminview,建管理员主界面w_mainmenu,将该菜单放到窗口中
(2)制作用户主菜单w_consumer,建用户主界面w_consumermain,将菜单放到窗口中
3.2.2 登录模块实现
(1)制作登录页面w_login1,在“确定”按钮输入以下:
“注册”按钮代码:open(w_enroll) //打开用户注册页面
“退出”按钮代码:close(w_login1) //退出本系统
(2) 制作注册窗口w_register,在“注册”按钮代码以下:
“取消”按钮代码:close(w_register)
open(w_login)
3.2.3录入信息模块实现
(1)制作管理员主菜单里录入报刊信息窗口w_inputmagazine,录入用户信息窗口w_inputconsumer,
(2)制作数据窗口d_consumer,d_magazien在数据窗口调整好外观,添加控件,并设定对应动作,分别放到这两个窗口中
这两个窗口功效相识,在窗口中输入:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_2.settransobject(sqlca)
dw_2.retrieve()
3.2.4 查询信息模块实现
(1)制作管理员主菜单中查询订阅信息窗口w_searchorder,制作数据窗口dw_booksearch,将其放入窗体中,在窗口中输入代码:
dw_1.settransobject(sqlca)
dw_1.retrieve()
sle_1.setfocus()
在“检索”按钮中输入代码:
“返回”按钮代码:
open(w_main)
close(w_magazine_query)
数据窗口字段
以下图:
(2)按用户查询, 按钮代码以下:
返回代码以下:
open(w_main)
close(w_consumer_ruery)
数据窗口字段以下:
(3)用户主菜单查询订单窗口w_consumer_query,将订单查找d_consumer_ruery_c放到窗口里,在窗口中过过滤器筛选中用户自己订单信息,一打开就能够看到自己订单信息,窗口代码:
用户统计d_consumer_query_c数据窗口以下:
3.2.5统计信息模块实现
(1)制作管理员主菜单中统计用户订单窗口w_stat_consumer,统计部门订单窗口w_stat_department,统计报刊订单窗口w_statconsumer:制作统计数据窗口d_consumer_stat,d_query_dept,w_stat_magazine,将d_consumer_stat,d_query_dept,w_stat_magazine分别放入w_stat_consumer,w_stat_department,w_statconsumer中;以下仅列出按出按部门统计代码和界面 (按用户、报刊统计类似,略);
按部门统计代码:
窗口代码:
按部门统计数据窗口:
dw_1.settransobject(sqlca)
dw_1.retrieve()
预览键代码:(和上页预览代码相同)
退出:close(parent)
3.2.6 订阅报刊模块实现
(1)用户主菜单订阅报刊窗口w_userorder
该系统中定义了一个全局变量gs_userid,其它窗口界面全部能够使用该变量,并显示用户名,用户登录后,它会显示“~~~~,欢迎使用本系统!”欢迎界面。
窗口代码:
dw_1.settransobject(sqlca)
dw_1.retrieve()
sle_1.setfocus()
sle_2.text=gs_userid
“清空”按钮代码:
sle_1.text=""
sle_3.text=""
sle_5.text=""
“退出”按钮代码:
close(w_userorder)
“提交”按钮代码:
3.2.7 更改信息实现
(1)用户主菜单中修改用户信息窗口w_modify_consumer,打开会先显示出你信息,而用户名这一栏是输入不了,也就是不能修改用户名,窗口代码以下:
“确定”按钮代码以下:
3.3 系统测试
打开本系统,首先弹出欢迎界面,选择用户入口,点击“新用户注册”
按确定后,弹出“恭喜,您已注册成功!”对话框。假如这时刷新服务管理器,打开SQL Server企业管理器,打开该数据库用户表,就可看到刚才注册用户已经在表中了。
然后返回到登陆页面,输入刚才注册到用户名和密码chen,1。
登录后,弹出一个窗口,有供用户使用菜单,然后进入系统。
选择“订阅报刊”菜单,在这个订阅界面,用户能够浏览到全部报刊信息,看到信息下去,订阅报刊时,输入用户名,密码,报刊号,报刊名称,订阅数量(五年以下,一次只能增加0.5),订阅年限,然后点击“提交”按钮
点击“清空”按钮就能够将输入框中内容。点击上页,下一页能够浏览报刊信息。
订阅成功后,系统弹出“恭喜!你已成功订阅该报刊,总金额是~~~~”确定后会显示出您所订阅总额是多少元,按“清空”按钮后能够订阅其它报刊(一样报刊不可反复订阅)。再订阅其它报刊,然后按“下页”按
因为权限限制,“统计”菜单中也是只能统计自己订单信息数据。
在“修改”信息菜单中,用户名也是不可输入文本框,即不可修改用户名,其它信息能够修改,保留后它会自动添加到数据库中。
以管理员身份登录,用户名admin,密码admin,按登录按键,可看到管理员菜单。
选择菜单栏中录入->录入报刊信息,管理员能够大致浏览全部报刊信息,在上面数据窗口能够查看上一页和下一页具体内容,而且能够对其进行添加,删除、修改、保留等操作。
录入用户信息页面,基础相同。
选择菜单栏中“查询”->“订单信息”,管理员拥有权限能够看到全部订单信息。
管理员也能够依据需要分别按部门、按用户、按报刊查询,结果以下:
菜单栏中“统计”菜单有三个子菜单,管理员能够分别统计用户订单信息、部门订单信息和报刊订单信息, 直接选择就可看到统计结果,比如选择“统计用户订单信息”。
结论
相关这个课程设计,我感慨很深,这是我极难得很认真独立做一个课程设计。这个学期学习了PowerBuilder,所以选择了使用Powerbuilder制作前台,然后我也到图书馆借了几本用Powerbuilder制作课程设计书,用了整整四天时间,而且按着那本书上例子动手实现多个简单程序。当然,这中间也有一些书本说不是很清楚地方,只能靠着自己慢慢探索,找犯错误地方,实现程序运行。用PB做课程设计有了一定认识以后,我开始着手这个课程设计,用了大约五天时间。构思整个系统整体框架,权限方面分开了管理员和用户登录,管理员和用户菜单分别是哪些,每个菜单下功效怎么实现,全部一一设计代码,然后修改,运行,调试。
最终,整个系统基础上实现了全部要求,用户能够订阅报刊、查看和统计自己订单信息,也可修改自己信息,除了用户名。本系统特色在于,用户订阅报刊很方便,用户登录系统后,用户名作为全局变量保留在系统中,进入订阅菜单后,自动显示用户名,而用户只需要输入所要订阅报刊代号和订阅份数,和选择需要订阅时间,系统会自动计算出这次订阅所需要金额,确定后显示于文本框中。在查看和统计订单信息时,也是自动筛选出该用户订单信息,而无需用户再次输入用户名和密码。
管理员方面,能够输入用户、报刊信息,而且能够对这些信息进行修改。管理订单方面,管理员能够按人员、按部门、按报刊查询和统计全部订单信息,方便对报刊分发进行管理,而且能够预览和打印出这些结果。还有数据库备份和恢复功效使系统数据安全性有了保障。
因为是学习了PowerBuilder做程序仅仅只是入门,难免有些不足之处。我体会到自己用Powerbuilder完成设计乐趣,不过因为一些能力方面限制,我系统还不是那么完美,相比现实中管理系统有段很大距离。比如用户真实姓名没有纠错,应该把全部部门职员全全部输入到表中,当注册时候,输入真实姓名,假如相关部门没有此人,则不许可注册,此功效还未实现;原来想法是用户订阅了某份报刊后,系统会自动生成一个订单号后,不过发觉实现起来比较麻烦,订单表就直接用报刊代号和用户名作为主码了;订阅了报刊后,应该能够和管理员进行信息反馈,管理员确定了该订单,然后,在该报刊还没到发送时间,用户应该能够拥有,修改、取消订单之类操作,这么比较符合实际。
以上是该系统不足之处,我想在以后继续学习过程中,我会找四处理方法,经过这次课程设计,我认为我对数据库有了更深入更深刻认识,比如:对表内部分字段约束,关系等利用已经比较熟练,巩固了我数据库知识。而且我也学会了Powerbuilder这个软件,对于这个软件基础应用我已相当熟悉了,感觉自学挺自豪。我会继续学习这相关方面知识,使我以后开发出来系统愈加完善!
参考文件
[1] 零点工作室.Powerbuilder 9.0.北京.机械出版社..9
[2] 陈刚等编著.Powerbuilder 案例开发程序设计教程.北京.清华大学出版社.
[3] 杨诏主编.Powerbuilder 8.0 编程实用技术和案例.北京.水利水电出版社.
[4] 卫海登. Powerbuilder 9.0 课程设计案例精编.北京.中国水利水电出版社.
[5] 王晟编著.Powerbuilder数据库开发经典案例解析.北京.清华大学出版社.
[6] 苗雪兰等编著.数据库系统原理和应用.北京.机械工业出版社.
展开阅读全文