邮局订阅管理系统.docx
- 文档编号:13078516
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:26
- 大小:363.64KB
邮局订阅管理系统.docx
《邮局订阅管理系统.docx》由会员分享,可在线阅读,更多相关《邮局订阅管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
邮局订阅管理系统
课程设计说明书
课程设计名称:
嵌入式课程设计
课程设计题目:
邮局订阅管理系统
学院名称:
信息工程学院
专业:
计算机科学与技术班级:
学号:
:
评分:
教师:
时招军、叶水生
2014年6月25日
1问题定义
1.1课题背景
随着internet的普及和电子商务的兴起,邮局订阅管理系统是Internet电子商务在报刊销售行业发展的必然结果,这种新型的报刊销售形式,与传统利用书店进行销售的方式相比拥有许多优势:
一是降低了销售成本;二是利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制;三是信息的传递更迅速灵活,新报刊信息上传后,客户可以立即看到,交易马上可以从网上进行,从而大大提高了交易的效率。
正是由于这些优势,邮局订阅管理系统才能得以迅速地发展。
邮局订阅管理系统的主要功能是利用作为交易平台,将报刊的一些基本信息以的形式发布到Internet中,客户可以通过Internet登录邮局订阅管理系统来查看报刊信息并提交订单订购,实现在线交易。
1.2课题的目的及意义
在客户进行报刊订阅过程中,经常会遇到期刊信息受到限制,客户只能通过上门咨询、沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。
而本系统可以帮助人们认识到网络在现代社会生活中的重要作用,以少量的时间和资金建立邮政门户来方便客户的订阅,以此来是客户的经济活动变得更灵活、更主动也更便捷。
《邮局订阅管理系统》不仅可以大量减少人力、物力,降低了成本,而且突破了时间和空间的限制,使得报刊交易活动可以在任何时间、任何地点进行,实现24小时营业,不需要营业员,可以被设置成一个自动售货机。
鉴于互联网的优势以及对国外相关邮局订阅管理系统现状的研究分析,本次课程设计以QT/E,Sqlite为开发平台,通过对邮局的报刊订阅业务进行分析,调查,设计该邮局的报刊订阅管理系统。
2可行性研究
2.1经济可行性
本系统使用软件开发工具QT/E。
数据库用的是Sqlite这些都是免费的而且该系统能稳定的运行在WINDOWS操作系统上,这样整个系统的软件成本得到很大程度的节约,只需要投入人力成本,在系统运行环境中,软硬件都无需做巨大投资,只利用现有计算机设备即可。
因此在经济上可行的。
2.2技术可行性
本系统采用的是QT/E开发,Windows7操作系统,用C++语言进行前台网页界面设计以及后台控制,完成数据的添加、修改、删除、查询等功能。
由于QT/E功能强大,而Sqlite灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用QT/E是开发轻平台的极佳选择从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
2.3操作可行性
目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,由相关人员指导便能够方便的操作此软件。
3需求分析
3.1系统功能模块概述和分析
近年来我国信息产业发展迅速,手工管理方式在报纸订阅管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。
面对各种媒体的强势竞争,因此,邮局必须提高其工作效率,改善其工作环境。
这样,管理信息化势在必行。
《邮局订阅管理系统》主要功能如下:
1数据显示:
显示所有报刊的基本信息(报刊代号,报刊名称,报刊分类,,报刊半年价,报刊全年价等基本信息);
2用户管理:
登录、退出、查询、修改个人信息;
3订阅管理:
添加、删除、修改、查询订阅订单;
4注册管理:
注册用户,完善用户信息。
3.2数据流程图
图3-1数据流程图
3.3UML用例图
本系统的UML用例图如图3-2所示:
图3-4UML用例图
3.4系统开发技术简介
3.4.1Qt
Qt是一个跨平台的C++应用程序开发框架。
广泛用于开发GUI程序,这种情况下又被称为部件工具箱。
也可用于开发非GUI程序,比如控制台工具和服务器。
Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器(MetaObjectCompiler,moc))以及一些宏。
通过语言绑定,其他的编程语言也可以使用Qt。
Qt是自由且开放源代码的软件,在GNU宽通用公共许可证条款下发布。
所有版本都支持广泛的编译器,包括GCC的C++编译器和VisualStudio。
Qt具有多种优势:
首先,它优良的跨平台特性,可以支持很多种操作系统;然后,Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的;再次,Qt包括多达250个以上的C++类,还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。
甚至还包括正则表达式的处理功能;最后,支持2D/3D图形渲染,支持OpenGL,大量的开发文档和XML支持。
Qt还有很多特点:
无障碍环境应用程序:
无障碍环境需要无障碍兼容的应用程序、辅助技术、以及辅助工具之间的合作。
应用程序通常不会直接沟通辅助工具,而是通过一个辅助技术,这是一个应用程序和工具之间信息交流的桥梁。
用户界面元素相关信息,例如按钮和滚动条,使用辅助技术来显示。
Qt支持Windows上的MicrosoftActiveAccessibility(MSAA)和MacOSX上MacOSXAccessibility。
无障碍兼容的应用程序称为AT-Servers,而辅助工具被称为AT-Clients。
Qt应用程序通常会是一个AT-Server,但特别的程序也可能如同AT-Client方式工作。
国际化:
Qt的字体引擎能够在同一时间正确的显示各种不同的书写系统。
并且Qt部使用Unicode编码来存储文字。
Qt的多国语言支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。
独立的翻译文件使得新增支持语言相当容易,同时翻译文件(.ts)为XML格式可以直接编辑或使用QtLiguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。
Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。
多线程:
Qt的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。
这使得它易于开发具可移植性的多线程Qt应用程序。
并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器核数自动调整使用的线程数。
多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典。
语言绑定:
除了C++外,Qt还为其它多种计算机语言提供了应用程序接口。
3.4.2SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
能够真正表现SQLite优越性能的领域是Web站点,可以使用SQLite管理应用程序数据、快速应用程序原型制造和培训工具。
由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。
现在,没有必要使用文本文件来实现持久存储。
SQLite之类的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的SQL。
这一点对于对于小型设备空间的应用程序来说尤其重要。
不像常见的客户-服务器例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。
所以主要的通信协议是在编程语言的直接API调用。
这在消耗总量、延迟时间和整体简单性上有积极的作用。
整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。
它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,同时它还支持事务处理功能等等。
也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。
比如SQLite支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。
如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。
嵌入式数据库对于加快应用程序开发也很重要,尤其是在用于数据库抽象层(例如PEAR:
:
DB或ezSQL)时。
最后,SQLite正在积极开发中,未来一定会有新的功能,会对开源社区更有用。
4系统设计
4.1系统功能结构图
邮局订阅管理系统功能结构如图4-1所示。
图4-1网上购物系统功能结构图
4.2功能模块分工
组员:
谢碧玲母丹红
4.2.1组员分工
母丹红:
数据显示,用户管理
谢碧玲:
订阅管理,注册管理
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-4所示。
图4-4部门信息实体E-R图
4.报刊类别信息实体
报刊类别信息实体包括:
类别号、类别名称。
课程信息实体的E-R图如图4-5所示。
图4-5报刊类别信息实体的E-R图
4.3.2数据表的结构
数据库在整个管理系统中占据非常重要的地位,数据库结构设计的好坏直接影响着系统的效率和实现。
本实例采用SQLite数据库,下面介绍数据库中的数据表结构。
本系统数据库表如下:
(1)users表用来存储用户的信息,该表的结构如表4-1所示。
表4-1users表结构
字段名
数据类型
是否为空
是否主键
默认值
描述
uId
TEXT
NO
YES
用户账号
uName
TEXT
NO
NO
NULL
uPassword
TEXT
NO
NO
NULL
用户密码
uAddress
TEXT
NO
NO
NULL
地址
uNumber
TEXT
NO
NO
NULL
uDepartment
TEXT
YES
NO
NULL
部门
uQuantity
TEXT
YES
NO
NULL
数量
(2)subscribe表用来存储订阅的信息,该表的结构如表4-2所示。
表4-2subscribe表结构
字段名
数据类型
是否为空
是否主键
默认值
描述
sId
INTEGER
NO
YES
订阅号
uId
TEXT
NO
YES
用户账号
jId
TEXT
NO
YES
报刊号
sNumber
INTEGER
YES
NO
NULL
份数
sYear
TEXT
YES
NO
NULL
订阅年数
sTotal
TEXT
YES
NO
NULL
总金额
(3)journal表用来存储报刊信息,该表的结构如表4-3所示。
表4-3journal表结构
字段名
数据类型
是否为空
是否主键
默认值
描述
jId
INTEGER
NO
YES
报刊号
cName
TEXT
NO
NO
NULL
报刊名称
cKind
TEXT
YES
NO
NULL
报刊类别
jPress
TEXT
NO
NO
NULL
jPretime
TEXT
NO
NO
NULL
出版时间
jHarfprice
REAL
NO
NO
NULL
半价
jwholeprice
REAL
NO
NO
NULL
全价
(4)department表用来存储部门信息,该表的结构如表4-4所示。
表4-4department表结构
字段名
数据类型
是否为空
是否主键
默认值
描述
dId
INTEGER
NO
YES
部门号
dName
TEXT
NO
NO
NULL
部门名称
(5)classification表用来存储报刊类别信息,该表的结构如表4-5所示。
表4-5classification表结构
字段名
数据类型
是否为空
是否主键
默认值
描述
cId
INTEGER
NO
YES
报刊类别号
cName
TEXT
NO
NO
NULL
报刊类别名称
5系统实现
5.1系统构成
各个输入界面,显示界面,用于信息的输入输出以及显示如表5-1所示:
表5-1
addindent
增加订单
alterindent
修改订单信息
indent
订单信息
journal
报刊信息
mainwindow
登录页面
register
用户注册
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"));
}
else
{
QSqlQueryquery(global:
:
db);
query.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(?
?
?
?
?
?
)");
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删除已经生成的订单
核心代码如下所示:
voidUserSubscription:
:
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("删除成功!
"));
}
else
{
QMessageBox:
:
about(0,qApp->tr("prompt"),qApp->tr("Deletefailure!
"));
}
}
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.bindValue(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().isEmpty()||ui->phone->text().isEmpty())
{
QMessageBox:
:
about(0,qApp->tr("提示"),qApp->tr("信息没填写完整!
"));
}
else
{
if(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->text()+"','"+ui->depar->currentText()+"','1');");
if(f)
{
QMessageBox:
:
about(0,qApp->tr("提示"),qApp->tr("注册成功!
"));
}
else
{
QMessageBox:
:
about(0,qApp->tr("提示"),qApp->tr("注册失败!
"));
}
}
else
{
QMessageBox:
:
about(0,qApp->tr("提示"),qApp->tr("密码两次输入不一样!
"));
}
}
}
6系统测试
6.1测试用例
(1)用户账户:
0001密码:
1
6.2测试结果
此部分对邮局订阅管理系统进行功能测试,此处指挑选系统中的一项功能进行展示,对用户的登录功能进行测试。
用户账号为0001,密码为2.
密码错误,登陆不成功,账号对应的密码与数据库中存储的不符,不能够成功登陆。
现在是以下正确的账号和密码。
成功登陆,进入到登入页面,接下来可以进行报刊查询等操作。
成功查询报刊信息。
7总结
本论文介绍了邮局订阅管理系统的设计与实现,实现了显示所有报刊的基本信息(报刊代号,报刊名称,报刊分类,,报刊半年价,报刊全年价等基本信息);用户管理部分的登录、退出、查询、修改个人信息;订阅管理管理部分的添加、删除、修改、查询;订阅订单部分的注册以及管理部分的注册用户,完善用户信息等功能。
在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促。
因此,该系统必然会存在一些缺陷和不足。
因为对邮局订阅管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
虽然网络在邮局订阅管理系统中的应用不是很多,但这是未来的发展方向。
本邮局订阅管理系统存在着很多不足,安全性不高,功能不够完善。
但其具有易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性较好等优点。
相信本邮局订阅管理系统是一套邮局在日常管理中必不可少的管理软件,通过开发这个系统,我巩固了对QT技术,Sqlite的学习,但在这次课程设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
8参考文献
[1](加)布兰切特,(英)萨默菲尔德 著,闫锋欣 等译,C++GUIQt4编程(第二版).:
电子工业.2013.
[2]波 编著,Qt中的C++技术.:
电子工业.2012.
[3](美)伊斯特(EEzust,A.),(美)伊斯特(Ezust,P.)著,仁见,战晓明译,C++设计模式——基于Qt4开源跨平台开发框架.:
清华大学.2007.
[4]霍亚飞 编著,QtCreator快速入门(第2版).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 邮局 订阅 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)