Socket编程lab
开发环境 python 3.7
第三方库 pyqt5, pymysql
python server.py
启动服务端
python client.py
运行客户端
两个表分别存储文本和图片信息
id | name | sex | age |
---|---|---|---|
100001 | Tom | 1 | 18 |
id | image_path |
---|---|
100001 | /home/misaki/Pictures/100001_Tom.png |
id
为6位int
,且为主码- 第二个表的
id
为外码,参照第一个表的id
- 第二个表的
name
无格式限制sex
为0
或1
age
为2位int
image_path
无格式限制
GUI基于PyQt5开发
目前只支持使用单个信息搜索,同时输入多个信息查询时无法得到结果
只有使用id
查询时才能得到图片信息
侧栏insert
进入数据导入界面,输入格式为id name sex age path(可选)
,一行一个数据,以空格符分隔
Import
导入数据,进入数据编辑界面
导入数据时会检查输入的数据是否符合数据库设计要求,state
显示为Ready
或Error
点击表格修改数据,点击Check
按钮检查数据是否符合要求并更新state
状态
点击表格image
框选择上传图片文件,图片路径也可以在数据导入界面直接输入
insert
向服务器发送数据,state
为Ready
的条目会根据服务器发回的信息更新state
和image
的状态,若成功则更新为SUCCESS
,否则为FAIL
state
为Error
的条目不会发送给服务器
服务器的文本和图片的处理是分开的,传输图片出错不影响文本信息的插入,即可能出现文本成功但图片失败的情况
Old Data
中输入id
后点击Search
查询
Old Data
中其他信息不可编辑
查询后在New Data
中修改信息,其中id
无法修改
Check
按钮检查New Data
数据是否符合数据库设计要求,并在State
中显示状态,State
为Error
的数据不会发送给服务器
Update
向服务器发送数据,并在State
窗口显示状态:SUCCESS
或FAIL
侧栏insert
进入数据导入界面,数据格式和insert
的数据导入界面一样,只需要输入一个id
即可,其余信息虽然会导入但是不会发送给服务器
导入数据后的界面和insert
相同,但此时Check
只会检查id
是否符合要求
Delete
只会发送id
信息给服务器而忽略其他信息
根据服务器发回的信息更新State
和的状态,但此时不会单独更新image
的状态,两者统一到state
中显示