《邮局订阅管理系统.doc》由会员分享,可在线阅读,更多相关《邮局订阅管理系统.doc(22页珍藏版)》请在课桌文档上搜索。
1、word目 录1 问题定义31.1课题背景31.2 课题的目的及意义32 可行性研究42.1 经济可行性42.2 技术可行性42.3 操作可行性43 需求分析53.1系统功能模块概述和分析53.2 数据流程图53.3 UML用例图53.4系统开发技术简介63.4.1 Qt63.4.2 SQLite74 系统设计94.1 系统功能结构图94.2 功能模块分工94.2.1 组员分工94.2.2 我的模块94.3 数据库设计104.3.1 邮局订阅管理系统E-R图104.3.2 数据表的结构125 系统实现145.1 系统构成145.2 个人核心代码146 系统测试206.1 测试用例206.2 测
2、试结果207 总结228 参考文献2322 / 221 问题定义1.1课题背景随着internet的普及和电子商务的兴起,邮局订阅管理系统是Internet电子商务在报刊销售行业发展的必然结果,这种新型的报刊销售形式,与传统利用书店进行销售的方式相比拥有许多优势:一是降低了销售成本;二是利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制;三是信息的传递更迅速灵活,新报刊信息上传后,客户可以立即看到,交易马上可以从网上进行,从而大大提高了交易的效率。正是由于这些优势,邮局订阅管理系统才能得以迅速地发展。邮局订阅管理系统的主要功能是利用作为交易平台,将报刊的一些基本信息以的
3、形式发布到Internet中,客户可以通过Internet登录邮局订阅管理系统来查看报刊信息并提交订单订购,实现在线交易。1.2 课题的目的及意义在客户进行报刊订阅过程中,经常会遇到期刊信息受到限制,客户只能通过上门咨询、沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。而本系统可以帮助人们认识到网络在现代社会生活中的重要作用,以少量的时间和资金建立邮政门户来方便客户的订阅,以此来是客户的经济活动变得更灵活、更主动也更便捷。邮局订阅管理系统不仅可以大量减少人力、物力,降低了成本,而且突破了时间和空间的限制,使得报刊交易活动可以在任何时间、任何地点进行,实现24小时营业,不
4、需要营业员,可以被设置成一个自动售货机。鉴于互联网的优势以及对国外相关邮局订阅管理系统现状的研究分析,本次课程设计以QT/E,Sqlite为开发平台,通过对邮局的报刊订阅业务进行分析,调查,设计该邮局的报刊订阅管理系统。2 可行性研究2.1 经济可行性本系统使用软件开发工具QT/E。数据库用的是Sqlite这些都是免费的而且该系统能稳定的运行在WINDOWS操作系统上, 这样整个系统的软件成本得到很大程度的节约,只需要投入人力成本,在系统运行环境中,软硬件都无需做巨大投资,只利用现有计算机设备即可。因此在经济上可行的。2.2 技术可行性本系统采用的是QT/E开发,Windows 7操作系统,用
5、C+语言进行前台网页界面设计以及后台控制,完成数据的添加、修改、删除、查询等功能。由于QT/E功能强大,而Sqlite灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用QT/E是开发轻平台的极佳选择从而说明本系统在技术方面可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。2.3 操作可行性目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,由相关人员指导便能够方便的操作此软件。3 需求分析3.1系统功能模
6、块概述和分析近年来我国信息产业发展迅速,手工管理方式在报纸订阅管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。面对各种媒体的强势竞争,因此,邮局必须提高其工作效率,改善其工作环境。这样,管理信息化势在必行。邮局订阅管理系统主要功能如下: 数据显示:显示所有报刊的基本信息(报刊代号,报刊名称,报刊分类,报刊半年价,报刊全年价等基本信息); 用户管理:登录、退出、查询、修改个人信息; 订阅管理:添加、删除、修改、查询订阅订单; 注册管理:注册用户,完善用户信息。3.2 数据流程图操作信息邮局订阅管理系统用户操作结果信息 图 3-1 数据流程图3.3 UML
7、用例图本系统的UML用例图如图3-2所示:图3-4 UML用例图3.4系统开发技术简介3.4.1 QtQt是一个跨平台的C+应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。Qt使用标准的C+和特殊的代码生成扩展(称为元对象编译器(Meta Object piler, moc))以及一些宏。通过语言绑定,其他的编程语言也可以使用Qt。Qt是自由且开放源代码的软件,在GNU宽通用公共许可证条款下发布。所有版本都支持广泛的编译器,包括GCC的C+编译器和Visual Studio。Qt具有多种优势:首先,它优良的跨平台特性,可
8、以支持很多种操作系统;然后,Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的;再次,Qt 包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理功能;最后,支持 2D/3D 图形渲染,支持 OpenGL,大量的开发文档和XML 支持。Qt还有很多特点:无障碍环境应用程序:无障碍环境需要无障碍兼容的应用程序、辅助技术、以及辅助工具之间的合作。应用程序通常不会直接沟通
9、辅助工具,而是通过一个辅助技术,这是一个应用程序和工具之间信息交流的桥梁。用户界面元素相关信息,例如按钮和滚动条,使用辅助技术来显示。Qt支持Windows上的Microsoft Active Accessibility(MSAA)和Mac OS X上Mac OS X Accessibility。无障碍兼容的应用程序称为AT-Servers,而辅助工具被称为AT-Clients。Qt应用程序通常会是一个AT-Server,但特别的程序也可能如同AT-Client方式工作。国际化:Qt的字体引擎能够在同一时间正确的显示各种不同的书写系统。并且Qt部使用Unicode编码来存储文字。Qt的多国语言
10、支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。独立的翻译文件使得新增支持语言相当容易,同时翻译文件(.ts)为XML格式可以直接编辑或使用Qt Liguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。多线程:Qt的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。这使得它易于开发具可移植性的多线程Qt应用程序。并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器核数自动调整
11、使用的线程数。多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典。语言绑定:除了C+外,Qt还为其它多种计算机语言提供了应用程序接口。3.4.2 SQLiteSQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲
12、,它的处理速度比他们都快。能够真正表现 SQLite 优越性能的领域是 Web 站点,可以使用 SQLite 管理应用程序数据、快速应用程序原型制造和培训工具。由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。现在,没有必要使用文本文件来实现持久存储。SQLite 之类的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的 SQL。这一点对于对于小型设备空间的应用程序来说尤其重要。不像常见的客户-服务器例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成
13、为它的一个主要部分。所以主要的通信协议是在编程语言的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你
14、想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。嵌入式数据库对于加快应用程序开发也很重要,尤其是在用于数据库抽象层(例如PEAR:DB或ezSQL)时。最后,SQLite 正在积极开发中,未来一定会有新的功能,会对开源社区更有用。4 系统设计4.1 系统功能结构图邮局订阅管理系统功能结构如图4-1所示。邮局订阅管理系统管理 注册管理管理 用户管理数据显示 订阅管理完善信息注册用户添加订阅信息修改订阅信息删除订阅信息查询订阅订单显示报刊基本信息退出查询修改个人信息登录图 4-1网上购物系统功能结构图4.2 功能模块分工 组员:谢碧玲 母丹红4.2.1 组员分工母丹红:数据显
15、示,用户管理谢碧玲:订阅管理,注册管理4.2.2 我的模块订阅管理:添加、删除、修改、查询订阅订单;注册管理:注册用户,完善用户信息。4.3 数据库设计4.3.1 邮局订阅管理系统E-R图 1.用户信息实体管理员信息实体包括:用户账号、用户密码、住址、部门、订阅数量。用户信息实体的E-R图如图4-2所示。用户部门住址某某用户密码用户账号订阅数量图4-2 用户信息实体E-R图2.报刊信息实体包括:报刊代号、报刊名称、报刊类别、出版时间、半价、全价。报刊信息实体的E-R图如图4-3所示。图4-3 报刊信息实体E-R图 3.部门信息实体部门信息实体包括:部门号、部门名称。部门信息实体的E-R图如图4
16、-4所示。部门号部门名称部门信息图4-4 部门信息实体E-R图 4.报刊类别信息实体报刊类别信息实体包括:类别号、类别名称。课程信息实体的E-R图如图4-5所示。报刊类别类别号类别名称图4-5 报刊类别信息实体的E-R图4.3.2 数据表的结构 数据库在整个管理系统中占据非常重要的地位,数据库结构设计的好坏直接影响着系统的效率和实现。本实例采用SQLite数据库,下面介绍数据库中的数据表结构。 本系统数据库表如下:(1)users表用来存储用户的信息,该表的结构如表4-1所示。表4-1 users表结构字段名数据类型是否为空是否主键默认值描述uIdTEXTNOYES用户账号uNameTEXTN
17、ONONULLuPasswordTEXTNONONULL用户密码uAddressTEXTNONONULL地址uNumberTEXTNONONULLuDepartmentTEXTYESNONULL部门uQuantityTEXTYESNONULL数量(2) subscribe表用来存储订阅的信息,该表的结构如表4-2所示。表4-2 subscribe表结构字段名数据类型是否为空是否主键默认值描述sIdINTEGERNOYES订阅号uIdTEXTNOYES用户账号jIdTEXTNOYES报刊号sNumberINTEGERYESNONULL份数sYearTEXTYESNONULL订阅年数sTotalT
18、EXTYESNONULL总金额(3) journal表用来存储报刊信息,该表的结构如表4-3所示。表4-3 journal表结构字段名数据类型是否为空是否主键默认值描述jIdINTEGERNOYES报刊号ameTEXTNONONULL报刊名称cKindTEXTYESNONULL报刊类别jPressTEXTNONONULLjPretimeTEXTNONONULL出版时间jHarfpriceREALNONONULL半价jwholepriceREALNONONULL全价(4) department表用来存储部门信息,该表的结构如表4-4所示。表4-4 department表结构字段名数据类型是否为空
19、是否主键默认值描述dIdINTEGERNOYES部门号dNameTEXTNONONULL部门名称(5) classification表用来存储报刊类别信息,该表的结构如表4-5所示。表4-5 classification表结构字段名数据类型是否为空是否主键默认值描述cIdINTEGERNOYES报刊类别号ameTEXTNONONULL报刊类别名称5 系统实现5.1系统构成各个输入界面,显示界面,用于信息的输入输出以及显示如表5-1所示:表5-1addindent增加订单alterindent修改订单信息indent订单信息journal报刊信息mainwindow登录页面register用户注
20、册subscribe订阅报刊userinfo用户信息管理usersubscription用户登入页面 5.2 个人部分核心代码1 添加订单 用户增添订单信息,如图5-1所示。如图5-1 用户增添订单信息 核心代码如下所示:voidSubscription:on_subscibe_clicked()if(ui-year-text().isEmpty()|ui-Copies-text().isEmpty()|ui-rental-text().isEmpty()QMessageBox:about(0,tr(tishi),tr(NO);elseQSqlQueryquery(global:db);que
21、ry.exec(select*fromsubscribe);intsum=0;while(query.next()sum+;sum=sum+1;intmark=ui-mark-currentIndex()+1;/query.exec(insertintosubscribevalues(+sum+,+global:uid+,+mark+,+ui-Copies-text()+,+ui-year-text()+,+ui-rental-text()+);query.prepare(insertintosubscribe(sId,uId,jId,sNumber,sYear,sTotal)values(?
22、,?,?,?,?,?);query.bindValue(0,sum);query.bindValue(1,global:uid);query.bindValue(2,mark);query.bindValue(3,ui-Copies-text();query.bindValue(4,ui-year-text();query.bindValue(5,ui-rental-text();query.exec();QMessageBox:about(0,tr(shi),tr(YES);2 删除订阅订单用户可以删除已经生成的订单,如图5-2所示。图5-2 删除已经生成的订单核心代码如下所示:voidUs
23、erSubscription:on_delete_2_clicked()QSqlQueryquery(global:db);boolf=query.exec(deletefromsubscribewheresid=+ui-delete_number-text()+);if(f)QMessageBox:about(0,qApp-tr(prompt),qApp-tr(Deletesuccess!);/QMessageBox:Abort(0,qApp-tr(prompt),qApp-tr(删除成功!);elseQMessageBox:about(0,qApp-tr(prompt),qApp-tr(D
24、eletefailure!);3 修改订阅订单 用户可以修改已经生成的订单,如图5-3所示。图5-3 修改已经生成的订单核心代码如下所示:QSqlQueryquery(global:db);query.prepare(updatesubscribesetjId=?,sNumber=?,sYear=?,sTotal=?wheresid=+global:sid+);query.bindValue(0,ui-mark-currentText();query.bindValue(1,ui-Copies-text();query.bindValue(2,ui-year-text();query.bind
25、Value(3,ui-rental-text();query.exec();QMessageBox:about(0,tr(shi),tr(YES);4 注册用户 用户可以注册成为邮局管理系统的用户,如图5-4所示。图5-4 普通用户注册核心代码如下所示:voidRegister:on_register_2_clicked()if(ui-account-text().isEmpty()|ui-address-text().isEmpty()|ui-name-text().isEmpty()|ui-password-text().isEmpty()|ui-passwordtwo-text().is
26、Empty()|ui-phone-text().isEmpty()QMessageBox:about(0,qApp-tr(提示),qApp-tr(信息没填写完整!);elseif(ui-passwordtwo-text().size()=ui-password-text().size()QSqlQueryquery(global:db);boolf=query.exec(insertintousersvalues(+ui-account-text()+,+ui-name-text()+,+ui-password-text()+,+ui-address-text()+,+ui-phone-tex
27、t()+,+ui-depar-currentText()+,1););if(f)QMessageBox:about(0,qApp-tr(提示),qApp-tr(注册成功!);elseQMessageBox:about(0,qApp-tr(提示),qApp-tr(注册失败!);elseQMessageBox:about(0,qApp-tr(提示),qApp-tr(密码两次输入不一样!);6 系统测试6.1 测试用例 (1)用户账户:0001 密码:16.2 测试结果此部分对邮局订阅管理系统进行功能测试,此处指挑选系统中的一项功能进行展示,对用户的登录功能进行测试。用户账号为0001,密码为2.密
28、码错误,登陆不成功,账号对应的密码与数据库中存储的不符,不能够成功登陆。现在是以下正确的账号和密码。成功登陆,进入到登入页面,接下来可以进行报刊查询等操作。成功查询报刊信息。7 总结本论文介绍了邮局订阅管理系统的设计与实现,实现了显示所有报刊的基本信息(报刊代号,报刊名称,报刊分类,报刊半年价,报刊全年价等基本信息);用户管理部分的登录、退出、查询、修改个人信息;订阅管理管理部分的添加、删除、修改、查询;订阅订单部分的注册以及管理部分的注册用户,完善用户信息等功能。在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统
29、必然会存在一些缺陷和不足。因为对邮局订阅管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。虽然网络在邮局订阅管理系统中的应用不是很多,但这是未来的发展方向。本邮局订阅管理系统存在着很多不足,安全性不高,功能不够完善。但其具有易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性较好等优点。相信本邮局订阅管理系统是一套邮局在日常管理中必不可少的管理软件,通过开发这个系统,我巩固了对QT技术,Sqlite的学习,但在这次课程设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。8 参考文献1 (加)布兰切特,(英)
30、萨默菲尔德著,闫锋欣等译,C+ GUI Qt 4编程(第二版).:电子工业.2013.2 波编著,Qt中的C+技术.:电子工业.2012.3 (美)伊斯特(EEzust,A.),(美)伊斯特(Ezust,P.) 著,仁见,战晓明 译,C+设计模式基于Qt 4开源跨平台开发框架.:清华大学.2007.4霍亚飞编著,Qt Creator快速入门(第2版).:航空航天大学.2014.5霍亚飞编著,Qt及Qt Quick开发实战精解.:航空航天大学.2012.6殷立峰 主编,Qt C+跨平台图形界面程序设计基础.:清华大学.2014.7(Jasmin Blanchette, Mark Summerfield,精通C+ GUI 程式設計使用Qt 4 (第二版).:碁峰資訊股份.2012.8(美)艾伦,(美)欧文斯著,谦,义宣,谢志强译,SQLite权威指南(第二版).:电子工业.2012.9丁林松,黄丽琴 编著,Qt4图形设计与嵌入式开发.:人民邮电.2009.10 韩少云,奚海蛟,谌利编著,基于嵌入式Linux的Qt图形程序实战开发.:航空航天大学.2012.