数据库原理课程设计报刊订阅管理系统_第1页
数据库原理课程设计报刊订阅管理系统_第2页
数据库原理课程设计报刊订阅管理系统_第3页
数据库原理课程设计报刊订阅管理系统_第4页
数据库原理课程设计报刊订阅管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、报刊订阅管理系统目 录1、开发背景22、需求分析23. 数据分析33.1 数据流图33.2 数据字典3(1) 数据流的描述3(2)处理逻辑的描述5(3)处理逻辑的描述6(4)外部实体的描述74.概念模型设计74.1 部门e-r图74.2 管理员e-r图84.3 用户e-r图84.4 报刊信息e-r图84.5订单e-r图94.6 报刊类别e-r图94.7所有实体之间的的关系e-r图95. 逻辑模型设计及优化106.应用程序设计(前台)136.1 登陆136.2 新用户注册136.3 报刊订阅146.4 报刊订阅订单填写146.5 订单历史记录146.6 个人订阅统计156.7 修改个人信息156

2、.8 修改密码167. 课程设计心得体会168. 参考文献179.附录181、开发背景随着社会不断的发展,人们的生活水平越来越高,对知识的和对时事的渴求也越来越高,人们希望能够方便快捷地订阅各种报刊杂志。但是各种各样的报刊名目和详细信息以及订阅,为相关企业的管理造成很大的麻烦。因此网上订阅成为不可或缺的一部分。本系统就是面向一个企业的报刊订阅管理系统。此系统是一种比较智能化的管理系统,它面向所有企业部门的职工用户,但具有比较高的安全性能。它能够实现报刊订阅的基本功能,包括新报刊信息的录入、订阅、查询等操作以及后台数据库的备份和恢复。用户合法注册后必须输入有效密码才能成功进入此系统,可以进行订阅

3、报刊,查询信息,统计信息等操作。对于非法操作,系统有识别和防护措施。 2、需求分析本系统主要有以下功能模块:(1)登陆功能:登陆系统为身份验证登录。分为管理员登录和一般用户登录。分别通过不同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。(2)录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦提交就存入到后台数据库中;普通用户自行注册进行可以修改个人信息。(3)订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必须以用户身份订阅报刊。(4)查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门分类查询。查询出

4、的信息显示在界面上,并且可以预览和打印出结果。(5)统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订阅信息进行统计;普通用户可以统计出自己的订阅情况,并且可以预览和打印出结果。(6)系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和数据的安全性,有利于系统的维护3. 数据分析(只描述了用户部分)3.1 数据流图如图3-1d002用户名或密码错误s001用户p001用户信息判断d001用户登录 f001 用户信息d003报刊信息目录d00 4订购历史记录p004查看订

5、购历史记录p002报刊目录查询 f002 报刊信息 d003报刊信息目录 f003 p003报刊订购 订购信息(.)图3-13.2 数据字典(1) 数据流的描述数据流编号: d001数据流名称: 用户登录 简述:用户要登录系统才能进行报刊订阅操作数据流来源:用户数据流去向:用户信息判断数据流组成:报刊代号、报刊名称、报刊年价、出版社等数据流量:1000/天高峰流量:3000/天数据流编号: d002数据流名称:用户名或密码错误 简述:用户名或密码错误,需要重新登录数据流来源:用户信息判断数据流去向:用户数据流组成:用户名、密码等数据流量:1000/天高峰流量:3000/天数据流编号: d003

6、数据流名称:报刊信息目录 简述:所有报刊信息数据流来源:用户信息判断数据流去向:报刊订购数据流组成:订单号、报刊代号、用户名、金额等数据流量:1000/天高峰流量:3000/天数据流编号: d004数据流名称:订购历史记录 简述:用户订购了报刊后即可查询自己的订购记录数据流来源:报刊目录查询数据流去向:报刊订购数据流组成:订单号、报刊代号、用户名、金额等数据流量:1000/天高峰流量:3000/天(2)处理逻辑的描述处理逻辑编号:p001处理逻辑名称:用户信息判断 简述:判断用户信息的合法性输入的数据流:报刊目录查询处理描述: 根据用户输入的登录信息,验证用户信息,验证通过后继续下移处理查看报

7、刊目录信息,验证不通过则返回给用户指明为非注册用户。输出的数据流: d001报刊目录信息、d002无效提示信息处理频率: 10次/天处理逻辑编号:p002处理逻辑名称:报刊目录查询 简述:列出各种报刊信息供用户选择订购输入的数据流:报刊订购处理描述:用户可以选择报刊类别进行查询,也可以不分条件查询全部信息,由用户自己选择所需进行订购。输出的数据流: d003 报刊订购处理频率: 10次/天处理逻辑编号:p003处理逻辑名称:报刊订购 简述:填写订购详细信息输入的数据流:报刊目录查询处理描述:用户选择好某一报刊,点击订购,弹出一个填写订购单页面,用户填写订购详细信息。输出的数据流: 数据流向管理

8、员处理频率: 10次/天处理逻辑编号:p004处理逻辑名称:查看订购历史记录 简述:查看自己的报刊订购历史记录输入的数据流:报刊订购处理描述:用户订购了报刊之后,即可查看订购历史记录(订购流程完)。输出的数据流: 用户处理频率: 10次/天(3)处理逻辑的描述数据存储编号:f001数据存储名称:用户信息 简述:用户的基本信息数据存储组成:用户编号、用户账号、密码、真实姓名、性别、年龄、电话、地址、部门编号。关键字:用户编号相关联的处理:p001数据存储编号:f002数据存储名称:报刊信息 简述:报刊的基本信息数据存储组成:报刊代号、报刊名称、报刊年价格、出版社、出版周期、报刊类别。关键字:报刊

9、代号相关联的处理:p002数据存储编号:f003数据存储名称:订购信息 简述:订购的基本信息数据存储组成:订单号、用户账号、报刊代号、订阅份数、订阅年限、金额、订单处理状态。关键字:订单号相关联的处理:p004(4)外部实体的描述外部实体编号:s001外部实体名称:用户简 述:需要订阅报刊的用户输入的数据流:d002输出的数据流:d0014.概念模型设计4.1 部门e-r图部门实体的e-r图如下图 4-1所示: 图 4-1 部门4.2 管理员e-r图管理员实体的e-r图 4-2如下图所示:图 4-2 部门4.3 用户e-r图用户实体的e-r图 4-3 如下图所示: 图 4-3 用户4.4 报刊

10、信息e-r图 报刊信息实体的e-r图如下图 4-4所示:图 4-4 报刊信息4.5订单e-r图订单实体的e-r图如下图 4-5 所示: 图 4-5 报刊订单4.6 报刊类别e-r图报刊类别实体的e-r图如下图 4-6 所示:图 4-6 报刊类别4.7所有实体之间的的关系e-r图所有实体之间的的关系e-r图如下图 4-7所示:图 4-7 实体之间关系图5. 逻辑模型设计及优化表一 department表序号列名数据类型长度小数位标识主键允许空默认值说明1depidint40是是否部门id2depnamenvarchar500是部门名称表二 loginusers表序号列名数据类型长度小数位标识主键

11、允许空默认值说明1loginidint40是是否用户登录编号2userlevelnvarchar500是用户等级权限3usernonvarchar500是用户账号4passwordvarchar500是密码表三 newsinfo表序号列名数据类型长度小数位标识主键允许空默认值说明1newsidvarchar500是否报刊代号2newsnamenvarchar500是报刊名称4newswholepricefloat80是一年定价5newspressnvarchar500是出版社6newsmaketimevarchar500是出版周期7kindidvarchar500是报刊分类编号表四 newsk

12、ind表序号列名数据类型长度小数位标识主键允许空默认值说明1kindidvarchar500是否报刊分类编号2kindnamenvarchar500是报刊分类名称表五 subscribe表序号列名数据类型长度小数位标识主键允许空默认值说明1sidvarchar500是否订单编号2usernovarchar500是用户账号3newsidvarchar500是报刊代号4syearint40是订阅年限5snumberint40是订阅数量6smoneyfloat80是订阅金额7stateint40是订单处理状态:0:未处理,1:已处理表六 userinfo表序号列名数据类型长度小数位标识主键允许空默认

13、值说明1idint40是是否用户编号2usernovarchar500是用户账号(工号)3passwordvarchar500是用户密码4realnamenvarchar500是真实姓名5sexnvarchar500是性别6ageint40是年龄7telnvarchar500是电话8addressnvarchar500是地址9depidint40是部门id10newidvarchar500是报刊代号6.应用程序设计(前台)6.1 登陆如图 6-1:图 6-1 登录6.2 新用户注册如图 6-2:图 6-2 新用户注册6.3 报刊订阅如图 6-3:图 6-3 报刊订阅6.4 报刊订阅订单填写如图

14、 6-4:图 6-4 报刊订阅订单6.5 订单历史记录如图 6-5:图 6-5 订单历史记录6.6 个人订阅统计如图 6-6:图 6-6 个人订阅统计6.7 修改个人信息如图 6-7图 6-7 修改个人信息6.8 修改密码如图 6-8:图 6-8 修改密码7. 课程设计心得体会从选题开始,需求分析、数据库设计、编码、测试等等,再到我们的课题:报刊订阅管理系统,基本完善,经过整整两个星期。在这两个星期里,我利用所学的知识,自己动手实践写代码,做设计,并逐步地实现这个小小的管理系统。整个过程中遇到了不少问题,也解决了不少问题,当然也收获了不少。首先在怎么设计数据库时,就花了一两天时间,虽然涉及到的

15、数据表只有六个,但每个表都相对独立有相互关联。在设计的时候必须要考虑到表与表之间的关系,字段与字段之间的关联。尽量做到数据冗余低,达到第三范式。根据需求分析,经过翻来覆去的思考之后,才建好一个初步的数据库。一旦数据库建好之后,后面的进程就快了。主要是编码过程。因为没什么流程可言,所有在写代码的时候也没有考虑什么流程问题,只是实现简单的增删查改功能。当然由于之前没怎么用过c/s的winform来实现功能,所以在编码的过程中还一边写一边查资料,慢慢地摸索着。记得遇到一个窗体之间传值的问题,这个b/s的web页面传值的操作方式很大不同。于是在网上找到几种方法,也试了两种方法,可能技术不到家,还是没见

16、效果,最后用了一种最笨的方法,就是在父窗体定义一个全局变量,然后子窗体需要那个变量的话就可以通过引用父窗体的那个全局变量。不过这个方法还是有一定的不足,尽管发现了但是现在还不知怎么去解决这个问题。还有之前没怎么做过报表,通过这个小系统的练习,我也了解的rdlc报表的制作以及实现,这也是一个小收获。当然由于时间有限,还没来得及做大量的测试,这其中肯定还有不少的bug以及错误可能还没发现,还需下一阶段继续完善。总的来说,能够在短短的两星期内做出一个东西出来,尽管不是很复杂,尽管很垃圾,但通过自己的大脑及双手把他实现,也算不错了。8. 参考文献 1 钱雪忠.数据库原理及应用.北京邮电大学出版社.20

17、102 3 其他网络资源9.附录 /登录关键代码(login.cs)/private void btnlogin_click(object sender, eventargs e) messageshow.text = ; name = txtusername.text.tostring().trim(); password = txtpassword.text.tostring().trim(); pass = md5.md5(password); string str = select * from loginusers where userno= + name + ; dataset d

18、s = db.getdataset(str); datatable dt = ds.tables0; if (dt.rows.count 0) string level = ; string loginname = ; for (int i = 0; i 0) messageshow.text = ; messageshow.visible = true; messageshow.text = 登录成功!正在连接.; /system.threading.thread.sleep(2000);/登录延时2秒 var mainuser = new usermain(); this.visible

19、= false; mainuser.show(); /部门绑定关键代码/ public void binddept() string str = select distinct depname from department; dataset ds = db.getdataset(str); combregdept.datasource = ds.tables0.defaultview; combregdept.displaymember = depname; /级联绑定/ private void combkind_selectedindexchanged(object sender, ev

20、entargs e) if (combkind.selectedindex -1) string kindid = combkind.selectedvalue.tostring(); /string kindid = db.getkindid(kind); string str = select distinct newsname from newsinfo where kindid= + kindid + ; dataset ds = db.getdataset(str); combnewsname.datasource = ds.tables0.defaultview; combnews

21、name.displaymember = newsname; /序号自动增长/ private void datagridview1_rowpostpaint(object sender, datagridviewrowpostpainteventargs e) using (solidbrush b = new solidbrush(datagridview1.rowheadersdefaultcellstyle.forecolor) e.graphics.drawstring(convert.tostring(e.rowindex + 1, system.globalization.cul

22、tureinfo.currentuiculture), e.inheritedrowstyle.font, b, e.rowbounds.location.x + 20, e.rowbounds.location.y + 4); /窗体之间传值/ public static string newsid = subscribe.newsid.tostring();/接收从subscribe窗体中传newsid这个值过来 public static string userno = l.tostring();/接收从login窗体中传name这个值过来/自动生成订单号/ publi

23、c static string getno(string str) string m = system.datetime.now.tostring(yyyy-mm-dd); string new_no = ; using (sqldatareader reader = db.getdatareader(str) if (reader.read() if (reader0.tostring() = string.empty) new_no = bk- + lsy- + m + - + 1.tostring(0000); return new_no; else string k = bk-lsy-

24、 + m + -; int newno = 0; string no = reader0.tostring(); if (k = no.substring(0, no.length - 4) newno = convert.toint32(no.substring(no.length - 4, 4) + 1; return k + newno.tostring(0000); else new_no = bk- + lsy- + m + - + 1.tostring(0000); return new_no; /md5密码加密类/ public static string md5(string tomd5) byte result = encoding.default.getbytes(tomd5); md5cryptoserviceprovider md5 = new md5cryptoserviceprovider(); byte output = md5

温馨提示

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

评论

0/150

提交评论