完成时间:大四下
开源地址:
https://github.com/CherylForever/auction
系统概述:
本项目旨在开发一个拍卖软件,为拍卖会场以及买卖人员提供便捷高效的拍卖环境。其主要功能是对于拍品的发起、竞价、拍卖的实现。
系统设计:
采用C/S架构,客户端发送请求,服务器接收请求并根据请求做出相应的处理。
工作流程:
1、客户端触发信号,对应槽向服务器发送数据包,并等待服务器的应答包。
2、服务器接收到客户端请求后,通过一些sqlite3操作,对数据进行处理,并把处理结果以应答包发送给客户端。
3、客户端根据服务器发送来的应答包,弹出相应对话框,呈现给用户。
系统结构

设计约束
- 系统框架:Linux C(服务器)、Qt(客户端)
- 开发语言:C、C++(Qt)
- 开发工具:VSCode、VMware 16(ubuntu 18.04)、Qt creator(Qt5.4.0 MINGW)、sqlite3
系统安全性设计
数据库用户密码使用SHA-256加密算法进行加密
开发、运行环境设计
| 类别 | 配置名称 |
|---|---|
| 硬件配置 | 品牌型号:华硕ROG幻16 |
| CPU:intel i7 内存:16GB | |
| 操作系统及版本 | Windows11 |
| 开发工具及版本 | VMware 16(ubuntu 18.04)、 |
| Qt creator(Qt5.4.0 MINGW)、 | |
| sqlite3(version 3.22.0) |
涵盖技术
本系统主要涉及的技术如下:
1、TCP并发服务器
2、sqlite3操作
3、模块化处理
4、信号与槽机制(手写,非ui)
5、QSS美化操作
GUI设计
选择身份

用户登录

用户注册

用户界面

添加拍品

删除拍品

修改拍品

查询拍品

竞拍

拍出

管理员界面

管理员显示拍品

管理员查询利润

类设计(面向对象)
本项目设计了十余个窗口类,如下图:
除struct类中封装了TCP传输所需的结构体外,其余均是设计师界面类,通过信号与槽机制实现了界面之间的跳转
,下图展现了部分连接跳转。
这些跳转语句全部写在主函数中。
数据存储策略(数据库表结构设计)
用户表
| 字段 | 类型 | 长度 |
|---|---|---|
| name | text(primary key) | 20 |
| passwd | text | 20 |
| state | int | 10 |
拍品表
| 字段 | 类型 | 长度 |
|---|---|---|
| name | text(primary key) | 20 |
| startprice | real | 10 |
| currentprice | real | 10 |
| transactionprice | real | 10 |
| sellname | text | 20 |
| buyername | text | 20 |
| state | int | 10 |
利润表
| 字段 | 类型 | 长度 |
|---|---|---|
| name | text(primary key) | 20 |
| profit | real | 10 |