商场管理系统实战项目
商场管理系统的设计与实现
- 1. 知识(点)应用以及经验总结
- 2. 系统分析
- 2.1 架构概述
- 2.2 系统开发环境
- 3.系统设计
- 3.1系统的功能结构设计
- 3.1.1 登录管理
- 3.1.2 收银管理
- 3.1.3 用户管理
- 3.1.4 商品管理
- 3.1.5 商品查询管理
- 3.1.6 商铺管理
- 3.1.7 用户信息管理
- 3.2 系统控制流程
- 3.3系统数据库设计
- 4.系统实现
- 4.1 QT连接数据库
- 4.2 用户登录模块
- 4.3 主界面设计
- 5.学习心得
1. 知识(点)应用以及经验总结
你好! 这是你第一次使用 QT+MySql 所编写的一个不完善的项目,由于时间紧促只完成了大概。
知识点:
- F1快捷键查看QT帮助文档,F4切换.h与.cpp文件;
- 配置MySql驱动,操作数据库中的表单实现增删改查;
- 信号与槽,connect(信号发出者,&发送者类型名::信号名,信号接收者,&槽函数(信号处理函数));
- 信号函数的定义与发射,窗口布局,调整;
- 数据库的创建以及连接;
- Tcp协议的实际应用实现cs架构;
- Multimedia模块下的Qcamera实现视频流传输以达到视频传输功能;
- 引入二维码生成与解析库,实现二维码收银功能;
重点: - 数据库的连接操作;
- 信号函数的定义与发射,槽函数的建立;
- 数据库的创建以及操作时加以验证;
- 视频流传输、图片采集二维码解码;
难点: - Multimedia模块下的Qcamera实现视频流传输以达到视频传输功能;
- 二维码生成和解码
2. 系统分析
2.1 架构概述
从整体层面来看,本论文所设计的系统需要满足的需求是:创建一个对企业商场库存、客户、工作人员管理以及收银等集成平台,基于QT平台,使用MySQL数据库作为数据支撑;采用C/S三层架构,构建客户端软件应用产品,用于解决成都市商场、超市等信息管理问题。
详细来说,本文所设计的商场管理系统,能够为成都市各大商场超市信息管理提供很大方便。
1、由于系统采用客户端服务器模式,因此用户只需要安装对应客户端就可以进行相关操作,客户端界面简洁,操作简单;
2、该系统会根据不同公司的需求,设置的表单操作灵活多变,提供灵活的表单调、节设置,争取提供所有数据报表;
3、该系统对商场所有客户以及工作人员进行结构化分类和全面详细记录,所有客户信息(咨询、个人信息、消费记录、对商场反馈)都会在系统中进行己录,在监控日常营业过程的同时,实施客户关怀,提高服务满意度,增加二次销售概率;
4、该系统具有收银功能同时对商场出入库进行统计并生成相应报表,商场高层可通过系统查看每日盈亏状况以便及时调整商场的销售策略;
5、该系统通过线索权限设置,使全公司人员,对公司日常运营信息、新闻和线索等进行记录和归纳到系统内。
2.2 系统开发环境
本系统采用C++语言基于MySQL数据库为支撑利用QT开发环境进行开发,QT图形化界面进行编程实现客户端和服务器端分离,以达到数据保护。QT是一款跨平台开发平台,内置编辑器通过控件拖动槽函数建立连接,使用其自带网络模块和界面模块实现简洁明了的客户端和后台服务器控制。
3.系统设计
3.1系统的功能结构设计
本系统根据用户数据进行分析,该系统共有七大板块:登录模块,收银管理模块,商品入库模块,商品查询模块,用户管理模块,供应商管理模块,用户信息和会员管理模块。如图所示:
3.1.1 登录管理
登录管理:该模块实现了用户的登录功能可以进行收银管理和会员信息管理;系统帐户与登录控制功能的各子功能模块设计如下图所示。
3.1.2 收银管理
收银模块:该模块实现了超市的收银功能,可以分为结账功能和刷新商品信息等功能。 收银管理功能的各子功能模块设计如下图所示。
3.1.3 用户管理
用户管理:该功能实现了用户信息的管理,我们选择不同的权限来限制用户,实现了用户信息的增删改查,具体地用户管理功能组成如下图所示。
3.1.4 商品管理
该模块实现的是商品信息的查看、商品的添加、商品的进货、商品信息的修改以及退货等功能,具体地用户管理功能组成如下图所示。
3.1.5 商品查询管理
该模块实现了按照单号,名成,字段来对商品的库存量、库存信息、利润计算及退货信息进行查询,同时还实现了对查询到的信息自动导出E-R表的功能,具体功能如下图所示。
3.1.6 商铺管理
该模块实现了对供应商信息的增删改查,同时展现商品对应的供应商,如果以后商品进货的话可以通过该模块的联系方式直接联系供应商,具体功能如下图所示。
3.1.7 用户信息管理
该模块实现了对用户信息的管理,其中包括基础信息的增删改查,还有权限的更迭,权限更迭仅管理员可调用。具体功能如下图所示。
3.2 系统控制流程
商场管理系统的控制流程如下图所示。
3.3系统数据库设计
系统E-R图如下图所示。
数据库设计是本项目设计工作中必不可少的一部分,合理的数据库与数据表结构设计可以提高信息管理系统的运行效率。
对本系统数据库所包括的数据表来说,所涉及的用户数据表非常多,同时还需要有数据库管理自身的系统数据表。在此只给出几个重要的用户数据表。
商品类别表见下表。
字段名 | 数据类型 | 主键 | 允许空 | 描述 |
---|---|---|---|---|
Id | Int | 是 | 否 | 序号 |
ShopId | Int | 否 | 否 | 商品类别ID |
ShopName | nvarchar | 否 | 否 | 商品类别名称 |
Price | Int | 否 | 是 | 商品价格 |
Sft | Varchar | 否 | 否 | 商品规格 |
系统用户信息表见下表。
字段名 | 数据类型 | 主键 | 允许空 | 描述 |
---|---|---|---|---|
TKID | Int | 是 | 否 | 序号 |
TKNM | Varchar | 否 | 是 | 用户名 |
TKPD | Varchar | 否 | 是 | 密码 |
TKTN | Varchar | 否 | 是 | 真实姓名 |
TKWC | Varchar | 否 | 是 | 所在部门 |
TKSX | Bit | 否 | 是 | 性别 |
TKPT | Varchar | 否 | 是 | 职务 |
TKMF | Varchar | 否 | 是 | 手机 |
TKWF | Varchar | 否 | 是 | 座机 |
TKML | Varchar | 否 | 是 | 邮箱 |
TKNT | Varchar | 否 | 是 | 备注 |
TKCE | Varchar | 否 | 是 | 管理人 |
TKCT | Datatime | 否 | 是 | 生成时间 |
TKLV | Smallint | 否 | 是 | 用户类别 |
TIIP | Varchar | 否 | 是 | 分配IP |
用户类别表见下表。
字段名 | 数据类型 | 主键 | 允许空 | 描述 |
---|---|---|---|---|
DDID | Bigint | 是 | 否 | 序号 |
DDND | Varchar | 否 | 否 | 类别编号 |
DDCD | Varchar | 否 | 否 | 类别描述 |
DDTD | Int | 否 | 否 | 权限值 |
DDAT | Datatim | 否 | 否 | 有效期限 |
商场基础信息表见下表。
字段名 | 数据类型 | 主键 | 允许空 | 描述 |
---|---|---|---|---|
DTID | Int | 是 | 否 | 序号 |
NTNM | Varchar | 否 | 是 | 商场名 |
DTUD | Varchar | 否 | 是 | 商场编号 |
DTAT | Datatime | 否 | 是 | 添加时间 |
DTFD | Varchar | 否 | 是 | 核心设备编号 |
DTWD | Varchar | 否 | 是 | 备注 |
DTSM | Varchar | 否 | 是 | 添加人 |
DTCG | Varchar | 否 | 是 | 管理单位 |
DTCM | Varchar | 否 | 是 | 负责人 |
DTLM | Varchar | 否 | 是 | 联系人手机 |
DTLP | Varchar | 否 | 是 | 联系座机 |
DTDD | Varchar | 否 | 是 | 工作状态 |
4.系统实现
4.1 QT连接数据库
连接代码如下:
//连接数据库QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //创建mysql数据连接db.setHostName("localhost"); //主机服务器db.setPort(3306); //设置端口号db.setUserName("root"); //用户名db.setPassword("root"); //密码db.setDatabaseName("cashier"); //数据库名if(db.open() ){qDebug()<<"数据库打开成功";}else{qDebug()<<"数据库打开失败";qDebug()<<db.lastError().text(); //错误信息}
4.2 用户登录模块
功能:本模块的主要功能是对用户身份进行验证,只有系统的合法用户才能进入系统。它的流程图如下:
登录界面如下图所示:
登录代码如下:
//用户登录,查询数据if(true == ui->radioButton_user->isChecked()){ //用户登录//接受用户输入:QString account = ui->lineEdit_account->text(); //用户账号QString passwd = ui->lineEdit_passwd->text(); //用户密码//查询数据QSqlQuery query; //操作数据库QString qs = QString("select * from user_info where account = '%1' and passwd = '%2'").arg(account).arg(passwd);if(!query.exec(qs)){//如果查询数据失败qDebug()<<query.lastError().text(); //输出错误信息return;}//获取查询的数据if(query.next()){//获取到数据emit user_login_signal();}else{QMessageBox::information(this,"登录","登录失败!");}}if(true == ui->radioButton_admin->isChecked()){ //管理员登录//接受用户输入:QString account = ui->lineEdit_account->text(); //用户账号QString passwd = ui->lineEdit_passwd->text(); //用户密码//查询数据QSqlQuery query; //操作数据库QString qs = QString("select * from admin_info where account = '%1' and passwd = '%2'").arg(account).arg(passwd);if(!query.exec(qs)){//如果查询数据失败qDebug()<<query.lastError().text(); //输出错误信息return;}//获取查询的数据if(query.next()){//获取到数据emit admin_login_signal(); //发射管理员登录信号}else{QMessageBox::information(this,"登录","登录失败!");}}
在进行系统登录过程中,登录模块将调用数据库里的用户数据表,并对用户名和密码进行验证,只有输入了正确的用户名和密码后,系统登录才会成功。并在输入了错误的或者是不存在的用户名和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或错误操作,以便用户进行正确的登录。其提示错误输入或错误操作如下图所示:
4.3 主界面设计
主界面的设计有一共有五个操作:收银台,商品库存,会员中心,营业统计,视频监控。但是对于不同操作人员是不同的。管理员,可以对数据库全部信息进行增删改查,但是作为用户,他只可以看到自己的所有信息,而且不可以进行更改。虽然在主界面上没有什么区别,但窗体内容不一样的。
部分代码如下:
/*********************更新当前时间*******************************/mytimer = new QTimer(this);connect(mytimer,SIGNAL(timeout()),this,SLOT(settime()));
/*********************设置当前日期和更新时间*******************************/
ui->label_data->setText(QDateTime::currentDateTime().toString("yyyy年M月d号 "));
ui->label_time->setText(QTime::currentTime().toString());
mytimer->start(1000);/*********************会员中心界面*******************************/
//会员界面刷新,获得最新数据:从数据库获取数据 connect(ui->pushButton_refresh,&QPushButton::clicked,this,&User::on_pushButton_refresh_clicked); //会员注册:向数据库添加数据
connect(ui->pushButton_addinfo,&QPushButton::clicked,this,&User::on_pushButton_addinfo_clicked); //会员删除:从数据库删除数据
connect(ui->pushButton_deletinfo,&QPushButton::clicked,this,&User::on_pushButton_deletinfo_clicked);//会员修改:从数据库修改数据 connect(ui->pushButton_modifyinfo,&QPushButton::clicked,this,&User::on_pushButton_modifyinfo_clicked); //会员查询:从数据库查询数据 connect(ui->pushButton_query,&QPushButton::clicked,this,&User::on_pushButton_query_clicked);
/*********************商品管理界面界面*******************************/
//商品界面刷新,获得最新数据:从数据库获取数据 connect(ui->pushButton_shopping_refresh,&QPushButton::clicked,this,&User::on_pushButton_shopping_refresh_clicked);//添加商品:向数据库添加数据 connect(ui->pushButton_shopping_add,&QPushButton::clicked,this,&User::on_pushButton_shopping_add_clicked);//删除商品:从数据库删除数据 connect(ui->pushButton_shopping_delete,&QPushButton::clicked,this,&User::on_pushButton_shopping_delete_clicked);//商品查询:从数据库查询数据
connect(ui->pushButton_shopping_query,&QPushButton::clicked,this,&User::on_pushButton_shopping_query_clicked);
5.学习心得
本次MIS实战的学习历时一个月,虽然最终考核项目未完成全部模块,但对于QT学习的方法进行了掌握,学会了信号槽建立连接,c/s通信,数据库的连接等只是并应用于实际操作中。在此过程中也发现了自己的不足,具体如下:
首先,在大学里学的不扎实,导致好多基本的知识点在具体的项目开发过程中比较生疏,在帮助文档和百度以及外部条件下才能完成一些本应该完成的任务。对QT的了解也不多,只能现学现卖,在实际操作中就显得比较吃力,数据库的简单语句还了解一些,但是一些混合的操作还是不像想象中那么简单,了解SQL语句和设计操作数据库中间的距离还是挺大的,特别是在结合界面中获取输入文字和输出到界面表格中或者文本框中内容以及获取输入信息和数据库原有信息的核对都是第一次操作,虽然感觉在理解方面不是很难,但是实际操作来实现这些功能还是需要扎实的基础和能力的。
其次,在学习能力上,始终觉得自己的学习能力跟不上工作的需求,每次遇到问题都有点慌,害怕解决不了或短时间找不到很好的解决办法 ,而且发现问题的时候,看到的只是问题的表面,对于问题的本质在哪却总是不得其法,导致在问题的解决和网络搜寻解决方法上都没有什么明显的效果。感觉到了自己的无能为力,也确实是懂得太少或者说什么都不懂,而且在项目过程中,有些逻辑上的问题自己还有些想法和了解,但是实现起来却不是很清楚,也有的是逻辑上理解不到位,例如:tcp的实际操作。还有感觉最重要是不清楚哪些函数是干嘛的,想要实现某些功能应该用到哪些函数,是不是有这一类的函数实现等。多数感觉云里雾里抓不住重点,也感觉到心累,并不一定是努力就会有收获,也许是用错了方法。
最后,经过一个月的项目实战也有一定的收获,体会到了知识和实际动手能力相结合学起东西来是挺快的,也许之前自学数据库一个月的时间也没法和这短短一周相比。了解了正规代码的书写要求,根据项目的需求分析来敲代码,写一些有意义让人看见意思就知道这段代码写的是什么,实现的是哪些功能。遇到问题解决不了的,先自己找一下资源查看,从网上读取需要的信息,根据自己项目的需要来增加或者修改一些功能。学习和动手能力相结合,让自己快速成长起来。
商场管理系统实战项目相关推荐
- 超市会员管理系统实战项目
//超市会员类 public class Member {//姓名 卡号 卡密 积分 开卡日期private String name;private int cardId;private String ...
- java基于ssm框架开发的高校实验室预约管理系统实战项目
环境: tomcat 7+jdk7+mysql5.5 技术: ssm(spring+springMVC+myibats)+jsp+css+ajax+jq+js+layui+pagehleper分页插件 ...
- 最新Spring Boot实战项目(权限后台管理系统)详解
Spring Boot实战项目 - 权限后台管理系统 简介 这是一套基于spring boot 2.16.shiro.jwt.redis.swagger2.mybatis .thymeleaf.lay ...
- Java实战项目之人力资源管理系统【源码+课后指导】_Java毕业设计/计算机毕业设计
对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统!Java实战项目之人力资源管理系统[源码+课后指导]_Java毕业设计/计算机毕业设计https://www.bilibili.com/ ...
- Vue项目实战项目记录(电商后台管理系统)
学习视频:本站Vue实战项目:电商管理系统(Element-UI) 项目的实现效果 前言 时间:2021/10/5--2021/10/20 断断续续的完成了这个项目 gitte完整项目地址 后台项目文 ...
- 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战
Java实战项目又双叒叕来咯~小伙伴们请查收~酒店客房管理系统![源码及课件分享]Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战_Java毕业设计https://www.bil ...
- vue实战项目:电商管理系统实现步骤笔记(一)
vue实战项目 视频地址以及项目文件 一.项目概述 1.1电商项目基本业务概述 1.2电商后台管理系统的功能 1.3电商后台管理系统的开发模式(前后端分离) 1.4电商后台管理系统的技术选型 1.4. ...
- Three.js实战项目 商场漫游
Three.js实战项目 商场漫游 概述 创建场景 创建天空 创建水面 创建模型 室内漫游 概述 如有不明白的可以加QQ:2781128388 源码获取: https://mbd.pub/o/brea ...
- 20-Vue实战项目:电商管理系统(Element-UI)总结
20-Vue实战项目:电商管理系统(Element-UI)总结 结果如下: 这算是我自己跟着视频做的第一个比较完整的可以看的项目了,用时18天,但这视频的总时间是20个小时,自己还是比较的低效率.不多 ...
- ssm毕设项目百货商场管理系统lk299(java+VUE+Mybatis+Maven+Mysql+sprnig)
ssm毕设项目百货商场管理系统lk299(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...
最新文章
- 联赛前(伪)数据结构专题总结
- 数据库mysql是什么?win10如何安装使用mysql?
- 重磅发布 | 承载亿级流量的开发框架,闲鱼Flutter技术解析与实战大公开
- forum.php 重定向,解析php 版获取重定向后的地址(代码)
- jzoj4235-序列【斐波那契数列】
- 如果要做小程序创业,哪种方式最赚钱?
- 肖修鹏:十年磨一剑,成就靠谱职业经理人
- centos7安装MySQL 5.7
- 图像的通道(channels)问题
- 【英语学习】【Level 08】U04 What I love L3 A good buy
- 圣诞节美食聚会派对海报设计
- canvas 实现图片局部模糊_Canvas 在高清屏下绘制图片变模糊的解决方法
- java weblogic admin,weblogic admin 不能重起服务(Server may already be running)
- 连续状态空间模型离散化
- 华表Cell应用 - 使用XML自动读入数据 | #报表 #华表Cell
- 形容计算机技术发展的词,形容技术发展的成语是什么_四字词语 - 成梦词典
- Ubuntu日常使用命令记录
- 这是我见过最美的公众号图文排版,不接受反驳。
- 字符函数和字符串函数
- windows搜索文件内容的软件推荐