邮局订阅管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
课程设计名称:嵌入式课程设计
课程设计题目:邮局订阅管理系统
学院名称:信息工程学院
专业:计算机科学与技术班级:
学号:姓名:
评分:教师:时招军、叶水生 2014 年 6 月 25 日
目录
1 问题定义 (3)
1.1课题背景 (3)
1.2 课题的目的及意义 (3)
2 可行性研究 (4)
2.1 经济可行性 (4)
2.2 技术可行性 (4)
2.3 操作可行性 (4)
3 需求分析 (5)
3.1系统功能模块概述和分析 (5)
3.2 数据流程图 (5)
3.3 UML用例图 (5)
3.4系统开发技术简介 (6)
3.4.1 Qt (6)
3.4.2 SQLite (7)
4 系统设计 (9)
4.1 系统功能结构图 (9)
4.2 功能模块分工 (9)
4.2.1 组员分工 (9)
4.2.2 我的模块 (9)
4.3 数据库设计 (10)
4.3.1 邮局订阅管理系统E-R图 (10)
4.3.2 数据表的结构 (12)
5 系统实现 (14)
5.1 系统构成 (14)
5.2 个人核心代码 (14)
6 系统测试........................................................................................................ 错误!未定义书签。
6.1 测试用例 (20)
6.2 测试结果 (20)
7 总结 (20)
8 参考文献 (23)
1 问题定义
1.1课题背景
随着internet的普及和电子商务的兴起,邮局订阅管理系统是Internet 电子商务在报刊销售行业发展的必然结果,这种新型的报刊销售形式,与传统利用书店进行销售的方式相比拥有许多优势:一是降低了销售成本;二是利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制;三是信息的传递更迅速灵活,新报刊信息上传后,客户可以立即看到,交易马上可以从网上进行,从而大大提高了交易的效率。
正是由于这些优势,邮局订阅管理系统才能得以迅速地发展。
邮局订阅管理系统的主要功能是利用网站作为交易平台,将报刊的一些基本信息以网站的形式发布到Internet中,客户可以通过Internet登录邮局订阅管理系统来查看报刊信息并提交订单订购,实现在线交易。
1.2 课题的目的及意义
在客户进行报刊订阅过程中,经常会遇到期刊信息受到限制,客户只能通过上门咨询、电话沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。
而本系统可以帮助人们认识到网络在现代社会生活中的重要作用,以少量的时间和资金建立邮政门户网站来方便客户的订阅,以此来是客户的经济活动变得更灵活、更主动也更便捷。
《邮局订阅管理系统》不仅可以大量减少人力、物力,降低了成本,而且突破了时间和空间的限制,使得报刊交易活动可以在任何时间、任何地点进行,实现24小时营业,不需要营业员,可以被设置成一个自动售货机。
鉴于互联网的优势以及对国内外相关邮局订阅管理系统现状的研究分析,本次课程设计以QT/E,Sqlite为开发平台,通过对邮局的报刊订阅业务进行分析,调查,设计该邮局的报刊订阅管理系统。
2 可行性研究
2.1 经济可行性
本系统使用软件开发工具QT/E。
数据库用的是Sqlite这些都是免费的而且该系统能稳定的运行在WINDOWS操作系统上,这样整个系统的软件成本得到很大程度的节约,只需要投入人力成本,在系统运行环境中,软硬件都无需做巨大投资,只利用现有计算机设备即可。
因此在经济上可行的。
2.2 技术可行性
本系统采用的是QT/E开发,Windows 7操作系统,用C++语言进行前台网页界面设计以及后台控制,完成数据的添加、修改、删除、查询等功能。
由于QT/E 功能强大,而Sqlite灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用QT/E是开发轻平台的极佳选择从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
2.3 操作可行性
目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局,并且系统界面简单,提示信息完整,由相关人员指导便能够方便的操作此软件。
3 需求分析
3.1系统功能模块概述和分析
近年来我国信息产业发展迅速,手工管理方式在报纸订阅管理等需要大量
事务处理的应用中已显得不相适应,采用IT 技术提高服务质量和管理水平势在必行。
面对各种媒体的强势竞争,因此,邮局必须提高其工作效率,改善其工作环境。
这样,管理信息化势在必行。
《邮局订阅管理系统》主要功能如下:
① 数据显示:显示所有报刊的基本信息(报刊代号,报刊名称,报刊分
类,出版社,报刊半年价,报刊全年价等基本信息); ② 用户管理:登录、退出、查询、修改个人信息;
③ 订阅管理:添加、删除、修改、查询订阅订单; ④ 注册管理:注册用户,完善用户信息。
3.2 数据流程图
图 3-1 数据流程图
3.3 UML 用例图
本系统的UML 用例图如图3-2所示:
图3-4 UML 用例图
操作结果信息
操作信息
邮局订阅管理系统
用户
3.4系统开发技术简介
3.4.1 Qt
Qt是一个跨平台的C++应用程序开发框架。
广泛用于开发GUI程序,这种情况下又被称为部件工具箱。
也可用于开发非GUI程序,比如控制台工具和服务器。
Qt使用标准的C++和特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏。
通过语言绑定,其他的编程语言也可以使用Qt。
Qt是自由且开放源代码的软件,在GNU宽通用公共许可证条款下发布。
所有版本都支持广泛的编译器,包括GCC的C++编译器和Visual Studio。
Qt具有多种优势:首先,它优良的跨平台特性,可以支持很多种操作系统;然后,Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的;再次,Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。
甚至还包括正则表达式的处理功能;最后,支持2D/3D 图形渲染,支持 OpenGL,大量的开发文档和XML 支持。
Qt还有很多特点:
无障碍环境应用程序:无障碍环境需要无障碍兼容的应用程序、辅助技术、以及辅助工具之间的合作。
应用程序通常不会直接沟通辅助工具,而是通过一个辅助技术,这是一个应用程序和工具之间信息交流的桥梁。
用户界面元素相关信息,例如按钮和滚动条,使用辅助技术来显示。
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的多国语言支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。
独立的翻译文件使得新增支持语言相当容易,同时翻译文件(.ts)为XML 格式可以直接编辑或使用Qt Liguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。
Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。
多线程:Qt的线程支持是独立于平台的线程类型,采用信号与槽机制,实现类型安全的线程间通讯。
这使得它易于开发具可移植性的多线程Qt应用程序。
并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器内核数自动调整使用的线程数。
多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典范。
语言绑定:除了C++外,Qt还为其它多种计算机语言提供了应用程序接口。
3.4.2 SQLite
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所示。
(2)subscribe表用来存储订阅的信息,该表的结构如表4-2所示。
(3)journal表用来存储报刊信息,该表的结构如表4-3所示。
(4)department表用来存储部门信息,该表的结构如表4-4所示。
(5)classification表用来存储报刊类别信息,该表的结构如表4-5所示。
5 系统实现
5.1系统构成
各个输入界面,显示界面,用于信息的输入输出以及显示如表5-1所示:表5-1
addindent 增加订单
alterindent 修改订单信息
indent 订单信息
journal 报刊信息
mainwindow 登录页面
register 用户注册
subscribe 订阅报刊
userinfo 用户信息管理
usersubscription 用户登入页面
5.2 个人部分核心代码
1 添加订单
用户增添订单信息,如图5-1所示。
如图5-1 用户增添订单信息
核心代码如下所示:
void Subscription::on_subscibe_clicked()
{
if(ui->year->text().isEmpty()||ui->Copies->text().isEmpty()||ui->rent al->text().isEmpty())
{
QMessageBox::about(0,tr("tishi"),tr("NO"));
}
else
{
QSqlQuery query(global::db);
query.exec("select*from subscribe");
int sum=0;
while(query.next())
{
sum++;
}
sum=sum+1;
int mark=ui->mark->currentIndex()+1;
//query.exec("insert into subscribe values("+sum+",'"+global::uid+"','"+mark+"',"+ui->Copies->text()+",'" +ui->year->text()+"','"+ui->rental->text()+"')");
query.prepare("insert into subscribe(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 删除已经生成的订单
核心代码如下所示:
void UserSubscription::on_delete_2_clicked()
{
QSqlQuery query(global::db);
bool f= query.exec("delete from subscribe where sid="+ui->delete_number->text()+"");
if(f)
{
QMessageBox::about(0,qApp->tr("prompt"),qApp->tr("Delete success!"));
//QMessageBox::Abort(0,qApp->tr("prompt"),qApp->tr("删除成功!"));
}
else
{
QMessageBox::about(0,qApp->tr("prompt"),qApp->tr("Delete failure!"));
}
}
3 修改订阅订单
用户可以修改已经生成的订单,如图5-3所示。
图5-3 修改已经生成的订单
核心代码如下所示:
QSqlQuery query(global::db);
query.prepare("update subscribe set jId=?,sNumber=?,sYear=?,sTotal=?where sid="+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 普通用户注册
核心代码如下所示:
void Register::on_register_2_clicked()
{
if(ui->account->text().isEmpty()||ui->address->text().isEmpty()||ui-> name->text().isEmpty()||ui->password->text().isEmpty()||ui->passwordt wo->text().isEmpty()||ui->phone->text().isEmpty())
{
QMessageBox::about(0,qApp->tr("提示"),qApp->tr("信息没填写完整!"));
}
else
{
if(ui->passwordtwo->text().size()==ui->password->text().size()) {
QSqlQuery query(global::db);
bool f=query.exec("insert into users
values('"+ui->account->text()+"','"+ui->name->text()+"','"+ui->passwo rd->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++ 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.。