摘 要:网吧管理系统是为解决大型网吧面临的复杂电脑管理业务流程和繁琐的客户服务、信息处理业务而开发的管理系统。它主要包含系统管理、会员管理、日常管理、查询管理、统计报表五个模块。数据库设计过程中主要进行了分析网吧电脑使用业务方面的需求,进行概念结构、逻辑结构和物理结构的设计,并通过建立视图、存储过程和触发器实现了满足不同用户的不同需求,如针对会员的上机和服务,针对管理员的账单查看和收费时间计划管理以及针对不同等级的会员的不同服务。实现了较为自动化、人性化的网吧管理、会员服务、信息管理的管理功能。
1、需求分析
本系统主要任务是实现网吧信息管理系统。系统分为以下五个功能模块:系统管理、会员管理、日常管理、查询管理、统计报表。具体功能可以从以下五个方面介绍:
- 系统管理:
- 设置管理员的基本信息,对管理员的基本信息进行操作。
- 设置电脑的基本信息,对电脑的基本信息进行操作。
- 对不同时间短的收费情况进行设置。
- 不同计算机,不同用户的收费进行设置。
- 会员管理:
- 添加新注册的会员,并初始化会员的详细信息。
- 注销以往注册的会员,并删除该会员的所有基本信息。
- 修改会员的基本信息,用于修改用户的个人信息。
- 会员充值,会员对自己的账户进行充值,方便后续使用电脑。
- 日常管理:
- 开机管理:用户上机后,将用户的信息和电脑的信息存入上机情况表中。
- 限时管理:对用户的上机情况进行限制,根据会员的账户余额和网吧要关闭的时间进行限制。
- 延时重启设置:用户根据自己的时间安排先占用计算机,但是不会收费,到需要的时间自动打开计算机。
- 换机机制:用户根据自己的需求更换电脑。
- 消息机制:会员可以使用该功能和管理员进行联系,提出自己想要管理员提供的服务。
- 查询管理:
- 账号查询:对会员的基本信息进行查询。
- 账单查询:对会员的所有消费账单进行查询。
- 充值明细:对会员的充值记录和消费记录进行查询。
- 上机统计:统计用户的上机情况和所用电脑的使用记录。
- 统计报表:
- 管理员统计:按照不同条件对管理员的数据进行统计。
- 会员统计:按照不同的条件对会员数据进行统计。
- 收费报表:查询所有用户的充值情况和消费情况
数据流程图
数据字典
1.数据项
表6-1 数据项
编号 |
属性名 |
含义 |
数据类型 |
长度 |
约束条件 |
|
DI-01 |
UserAccount |
会员账号 |
Varchar2 |
40 |
无 |
|
DI-02 |
UserID |
会员身份证号 |
Varchar2 |
40 |
无 |
|
DI-03 |
UserAge |
会员年龄 |
Number |
40 |
1-100 |
|
DI-04 |
UserPassword |
会员密码 |
Varchar2 |
40 |
无 |
|
DI-05 |
UserBalance |
会员余额 |
Number |
40 |
无 |
|
DI-06 |
UserPhone |
会员电话号 |
Varchar2 |
40 |
无 |
|
DI-07 |
UserQQ |
会员QQ |
Varchar2 |
40 |
无 |
|
DI-08 |
UserWechat |
会员微信 |
Varchar2 |
40 |
无 |
|
DI-09 |
UserProfession |
会员职业 |
Varchar2 |
40 |
无 |
|
DI-10 |
UserSex |
会员性别 |
Number |
40 |
0 or 1 |
|
DI-11 |
UserAddress |
会员地址 |
Varchar2 |
40 |
无 |
|
DI-12 |
UserGrade |
会员等级 |
Number |
40 |
无 |
|
DI-13 |
AdministratorAccount |
管理员账号 |
Varchar2 |
40 |
无 |
|
DI-14 |
AdministratorID |
管理员身份证号 |
Varchar2 |
40 |
无 |
|
DI-15 |
AdministratorAge |
管理员年龄 |
Number |
40 |
1-100 |
|
DI-16 |
AdministratorPassword |
管理员密码 |
Varchar2 |
40 |
无 |
|
DI-17 |
AdministratorPhone |
管理员电话号 |
Varchar2 |
40 |
无 |
|
DI-18 |
AdministratorQQ |
管理员QQ |
Varchar2 |
40 |
无 |
|
DI-19 |
AdministratorWechat |
管理员微信 |
Varchar2 |
40 |
无 |
|
DI-20 |
AdministratorProfession |
管理员职业 |
Varchar2 |
40 |
无 |
|
DI-21 |
AdministratorSex |
管理员性别 |
Number |
40 |
0 or 1 |
|
DI-22 |
AdministratorAddress |
管理员地址 |
Varchar2 |
40 |
无 |
|
DI-23 |
AdministratorRight |
管理员权限 |
Number |
40 |
0 or 1 |
|
DI-24 |
UserUP_time |
会员上机时间 |
Date |
40 |
无 |
|
DI-25 |
UserDown_time |
会员下机时间 |
Date |
40 |
无 |
|
DI-26 |
AdministratorUp_time |
管理员上班时间 |
Date |
40 |
无 |
|
DI-27 |
AdministratorDown_time |
管理员下班时间 |
Date |
40 |
无 |
|
DI-28 |
UserDuration |
会员上机时长 |
Number |
40 |
1-100 |
|
DI-29 |
AdministrationDuration |
管理员工作时长 |
Number |
40 |
0-24 |
|
DI-30 |
User_recharge_amount |
会员充值金额 |
Number |
40 |
无 |
|
DI-31 |
User_other_consume |
会员其他消费金额 |
Number |
40 |
无 |
|
DI-32 |
Bill_ID |
账单编号 |
Number |
40 |
无 |
|
DI-33 |
User_consume |
会员消费金额 |
Varchar2 |
40 |
无 |
|
DI-34 |
PC_ID |
电脑编号 |
Varchar2 |
40 |
无 |
|
DI-35 |
PC_Gpu |
电脑显卡 |
Varchar2 |
40 |
无 |
|
DI-36 |
PC_CPU |
电脑CPU |
Varchar2 |
40 |
无 |
|
DI-37 |
PC_Display |
电脑显示器 |
Varchar2 |
40 |
无 |
|
DI-38 |
PC_Keyboard |
电脑键鼠 |
Varchar2 |
40 |
无 |
|
DI-39 |
PC_maintain_Money |
电脑维修金额 |
Number |
40 |
无 |
|
DI-40 |
PC_charge_grade |
电脑收费等级 |
Date |
40 |
无 |
|
DI-41 |
PC_charge_time |
收费时间段 |
Date |
40 |
无 |
|
DI-42 |
Charge_money |
收费金额 |
Varchar2 |
40 |
无 |
|
DI-43 |
User_massage |
会员消息 |
Varchar2 |
40 |
无 |
|
DI-44 |
PC_state |
电脑使用状态 |
Number |
40 |
0 or 1 |
|
DI-45 |
Rest_time |
会员可用时间 |
Number |
40 |
无 |
|
DI-46 |
Extend_time_length |
延时启动时长 |
Number |
40 |
无 |
|
DI-47 |
Extend_PC_ID |
延时启动机号 |
Varchar2 |
40 |
无 |
|
DI-48 |
Restart |
是否重新启动 |
Varchar2 |
40 |
无 |
|
DI-49 |
Network_State |
电脑网络状态 |
Number |
40 |
0 or 1 |
|
DI-50 |
Extend_time |
延时启动时间点 |
Date |
40 |
当前时间 |
|
DI-51 |
Administrator_work_ID |
工作单编号 |
Varchar2 |
40 |
无 |
|
DI-52 |
PC_maintain_ID |
维修单编号 |
Varchar2 |
40 |
无 |
|
DI-53 |
User_Recharge_time |
会员充值时间 |
number |
40 |
大于0 |
|
DI-54 |
User_name |
会员姓名 |
Varchar2 |
40 |
无 |
|
DI-55 |
Administrator_Name |
管理员姓名 |
Varchar2 |
40 |
无 |
|
DI-56 |
Maintain_Content |
维修内容 |
Varchar2 |
40 |
无 |
|
2.数据结构
表6-2 数据结构
含义 |
组成 |
会员表 |
UserAccount,UserID,UserAge,UserName,UserPassword,UserBalance,UserPhone,UserQQ,UserWechat,UserProfession,UserSex,UserAddress,UserGrade |
管理员表 |
AdministratorAccount,AdministratorID,AdministratorAge,AdministratorName,AdministratorPassword,AdministratorPhone,AdministratorQQ,AdministratorWechat,AdministratorProfession,AdministratorSex,AdministratorAddress,AdministratorRight |
电脑表 |
PC_ID,PC_Gpu,PC_CPU,PC_Display,PC_Keyboard,PC_charge_grade |
账单(下机) |
UserUP_time,UserDown_time,UserDuration,User_consume,Bill_ID,User_other_consume,UserAccount,AdministratorAccount,PC_ID,User_name,Administrator_name |
电脑使用记录 |
PC_ID,UserAccount,AdministratorAccount,UserUP_time,UserDown_time,UserDuration,PC_charge_grade,PC_charge_time,PC_state |
电脑维修记录 |
AdministratorAccount,PC_maintain_ID,PC_maintain_Money,Maintain_Content |
上机情况表 |
PC_ID,UserAccount,AdministratorAccount,UserUP_time,UserDown_time,UserDuration,PC_charge_grade,PC_charge_time,PC_state,Extend_time_length,Extend_PC_ID,Restart,Network_State,Extend_time |
会员充值表 |
UserAccount,AdministratorAccount,User_recharge_amount,User_Recharge_time ,User_name,Administrator_Name |
会员消息表 |
UserAccount,AdministratorAccount,User_name,Administrator_Name,User_massage,UserGrade |
费率表 |
PC_ID,UserAccount,AdministratorAccount,PC_charge_grade,PC_charge_time,Charge_money |
管理员工作表 |
AdministratorAccount,Administrator_Name,Administrator_work_ID,AdministratorPhone,AdministratorUp_time,AdministratorDown_time,AdministrationDuration |
3.数据流
表6-3 数据流
编号 |
数据流名称 |
简述 |
数据流来源 |
数据流去向 |
数据流组成 |
数据流量 |
高峰流量 |
F1 |
机号信息 |
将电脑信息上传至电脑设置 |
管理员 |
客户端设置 |
DS-3 |
300次/月 |
500次/月 |
F2 |
机号信息 |
电脑的基本信息存入电脑表 |
客户端设置 |
电脑表 |
DS-20 |
300次/月 |
500次/月 |
F3 |
机号信息 |
电脑的基本信息传入费率设置 |
客户端设置 |
费率设置 |
DS-10 |
3次/月 |
6次/月 |
F4 |
时段信息 |
传输收费的时间段 |
管理员 |
时段设置 |
DS-17 |
30次/月 |
60次/月 |
F5 |
费率信息 |
传输收费的金额等信息 |
管理员 |
费率设置 |
DS-18 |
30次/月 |
60次/月 |
F6 |
管理员信息 |
传输管理员信息用于设置 |
管理员 |
管理员设置 |
DS-11 |
5次/月 |
10次/月 |
F7 |
管理员信息 |
存储管理员信息 |
管理员设置 |
管理员表 |
DS-15 |
5次/月 |
10次/月 |
F8 |
时段信息 |
存储收费时段信息 |
时段设置 |
时段表 |
DS-12 |
300次/月 |
500次/月 |
F9 |
时段信息 |
将时段信息传到费率设置 |
时段设置 |
费率设置 |
DS-10 |
3次/月 |
6次/月 |
F10 |
费率信息 |
存储费率信息 |
费率设置 |
费率表 |
DS-3 |
300次/月 |
500次/月 |
F11 |
会员ID |
会员信息存储到会员表 |
会员添加 |
会员表 |
DS-13 |
300次/月 |
500次/月 |
F12 |
会员ID |
传输会员信息用于添加 |
管理员 |
会员添加 |
DS-3 |
300次/月 |
500次/月 |
F13 |
会员详情信息 |
从会员表中提取信息 |
会员表 |
会员删除 |
DS-8 |
5次/月 |
10次/月 |
F14 |
会员ID |
选择会员删除信息 |
管理员 |
会员删除 |
DS-7 |
5次/月 |
10次/月 |
F15 |
会员个人信息 |
将会员信息保存到会员表 |
会员修改 |
会员表 |
DS-8 |
5次/月 |
10次/月 |
F16 |
会员个人信息 |
会员修改个人信息 |
会员 |
会员修改 |
DS-7 |
5次/月 |
10次/月 |
F17 |
余额信息 |
用于会员查看余额 |
会员表 |
会员 |
DS-12 |
30次/月 |
30次/月 |
F18 |
余额信息 |
用于会员充值 |
会员表 |
账号充值 |
DS-13, DS-14 |
30次/月 |
50次/月 |
F19 |
充值金额 |
用于会员充值 |
会员 |
账号充值 |
DS-10 |
30次/月 |
50次/月 |
F20 |
充值信息 |
将充值信息保存 |
账号充值 |
充值表 |
DS-3 |
300次/月 |
500次/月 |
F21 |
检测信号 |
用于电脑的开机管理 |
管理员 |
开机管理 |
DS-2 |
300次/月 |
500次/月 |
F22 |
限时信息 |
限制电脑的使用时间 |
管理员 |
限时机制 |
DS-2 |
300次/月 |
500次/月 |
F23 |
机号信息 |
用于会员换机 |
管理员 |
换机机制 |
DS-9 |
3次/月 |
6次/月 |
F24 |
短信息 |
管理员接受消息 |
消息机制 |
管理员 |
DS-13 |
3次/月 |
6次/月 |
F25 |
连接信息 |
电脑的网络连接状态 |
开机管理 |
上机情况表 |
DS-14 |
3次/月 |
6次/月 |
F26 |
机号信息 |
将机号传到消息机制 |
电脑表 |
消息机制 |
DS-13 |
300次/月 |
500次/月 |
F27 |
机号信息 |
限时信息传到电脑表 |
限时机制 |
电脑表 |
DS-14 |
20次/月 |
10次/月 |
F28 |
延时信息 |
延长时间使用电脑 |
延时重启设置 |
上机情况表 |
DS-18 |
30次/月 |
60次/月 |
F29 |
重启信息 |
用于重新启动电脑 |
延时重启设置 |
上机情况表 |
DS-5 |
30次/月 |
60次/月 |
F30 |
费率信息 |
根据余额限制时间 |
费率表 |
限时机制 |
DS-18 |
25次/月 |
50次/月 |
F31 |
机号信息 |
设置延时重启的电脑 |
电脑表 |
延时重启设置 |
DS-5 |
25次/月 |
50次/月 |
F32 |
换机信息 |
换机信息存入上机情况表 |
换机机制 |
上机情况表 |
DS-18 |
20次/月 |
40次/月 |
F33 |
短消息 |
保存短消息 |
消息机制 |
短消息表 |
DS-6 |
20次/月 |
40次/月 |
F34 |
会员请求 |
会员对系统管理员的请求 |
会员 |
消息机制 |
DS-13, DS-14 |
300次/月 |
30次/月 |
F35 |
短消息 |
查看存储的短消息 |
段消息表 |
消息机制 |
DS-10 |
300次/月 |
50次/月 |
F36 |
会员消息 |
会员详细消息 |
会员表 |
账号查询 |
DS-3 |
300次/月 |
50次/月 |
F37 |
账号信息 |
管理员查看会员消息 |
账号查询 |
管理员 |
DS-2 |
3次/月 |
500次/月 |
F38 |
账单列表信息 |
账单发送给管理员 |
账单查询 |
管理员 |
DS-2 |
3次/月 |
500次/月 |
F39 |
上机情况 |
管理员查看上机情况 |
上机统计 |
管理员 |
DS-9 |
3次/月 |
500次/月 |
F40 |
充值账单信息 |
查看充值明细 |
充值明细 |
管理员 |
DS-13 |
300次/月 |
6次/月 |
F41 |
充值信息 |
充值表中查看明细 |
充值表 |
充值明细 |
DS-14 |
20次/月 |
6次/月 |
F42 |
个人充值信息 |
充值信息放入账单 |
充值表 |
账单查询 |
DS-13 |
30次/月 |
30次/月 |
F43 |
账单信息 |
账单表中提取账单信息 |
账单表 |
账单查询 |
DS-13, DS-14 |
30次/月 |
50次/月 |
F44 |
账单信息 |
会员查看账单信息 |
账单查询 |
会员 |
DS-10 |
300次/月 |
50次/月 |
F45 |
会员ID |
查看特定会员账单 |
会员 |
账单查询 |
DS-3 |
300次/月 |
500次/月 |
F46 |
人数信息 |
查看上机人数 |
上机情况表 |
上机统计 |
DS-2 |
300次/月 |
500次/月 |
F47 |
管理员信息 |
查看管理员信息 |
管理员表 |
管理员统计 |
DS-2 |
3次/月 |
500次/月 |
F48 |
管理员值班信息 |
查看管理员值班信息 |
管理员统计 |
管理员 |
DS-9 |
3次/月 |
6次/月 |
F49 |
收费明细 |
查看会员的收费明细 |
收费报表 |
管理员 |
DS-13, DS-14 |
300次/月 |
30次/月 |
F50 |
管理员信息 |
哪个管理员收费 |
管理员表 |
收费报表 |
DS-10 |
300次/月 |
50次/月 |
F51 |
账单明细 |
具体的上机消费情况 |
上机情况表 |
收费报表 |
DS-3 |
300次/月 |
50次/月 |
F52 |
会员信息 |
用于会员统计 |
会员表 |
会员统计 |
DS-2 |
3次/月 |
500次/月 |
F53 |
会员信息 |
提供会员信息 |
会员统计 |
收费报表 |
DS-2 |
3次/月 |
500次/月 |
4.处理逻辑
表6-4 处理逻辑
编号 |
处理逻辑名称 |
简述 |
输入数据流 |
输出数据流 |
解释 |
处理频率 |
P1.1 |
管理员设置 |
对管理员的基本信息进行设计 |
F6 管理员信息 |
F7管理员信息 |
对管理员的基本信息进行设计 |
300次/月 |
P1.2 |
客户端设置 |
对电脑的基本信息进行设计 |
F2 机号信息 |
F1 机号信息 F3机号信息 |
对电脑的基本信息进行设计 |
300次/月 |
P1.3 |
时段设置 |
设置收费的时间段 |
F4 时段信息 |
F8 时段信息 F9 时段信息 |
设置收费的时间段 |
500次/月 |
P1.4 |
费率设置 |
设置电脑的收费情况 |
F3 机号信息 F5 费率信息 F9 时段信息 |
F10 费率信息 |
设置电脑的收费情况 |
5次/月 |
P2.1 |
会员添加 |
添加新的会员 |
F12 会员ID |
F11 会员ID |
添加新的会员 |
3次/月 |
P2.2 |
会员删除 |
会员删除自己信息 |
F14 会员ID F13 会员详情信息 |
无 |
会员删除自己信息 |
30次/月 |
P2.3 |
会员修改 |
会员修改信息 |
F16 会员个人信息 |
F15 会员个人信息 |
会员修改信息 |
25次/月 |
P2.4 |
账号充值 |
用户在账号充值 |
F18 余额信息 F19 充值余额 |
F20 充值信息 |
用户在账号充值 |
20次/月 |
P3.1 |
开机管理 |
处理电脑的开机 |
F21 检测信号 |
F25 连接信息 |
处理电脑的开机 |
300次/月 |
P3.2 |
限时机制 |
对会员的使用限时 |
F22 限时信息 F30 费率信息 |
F27 机号信息 |
对会员的使用限时 |
300次/月 |
P3.3 |
延时重启设置 |
在规定的时间重启电脑 |
F31 机号信息 |
F28 延时信息 F29 重启信息 |
在规定的时间重启电脑 |
500次/月 |
P3.4 |
换机机制 |
处理换机信息 |
F23 机号信息 |
F32 换机信息 |
处理换机信息 |
5次/月 |
P3.5 |
消息机制 |
处理会员的请求 |
F26 机号信息 F3 短消息 F34 会员请求 |
F24 短消息 F33 短消息 |
处理会员的请求 |
3次/月 |
P4.1 |
账号查询 |
对会员的账号查询 |
F36 会员信息 |
F37 账号信息 |
对会员的账号查询 |
30次/月 |
P4.2 |
账单查询 |
对会员的账单查询 |
F43 账单信息 F42 个人充值信息 F45 会员ID |
F38 账单列表信息 F44 账单信息 |
对会员的账单查询 |
25次/月 |
P4.3 |
充值明细 |
处理会员的充值记录 |
F41 充值信息 |
F40 充值账单信息 |
处理会员的充值记录 |
300次/月 |
P4.4 |
上机统计 |
统计电脑使用情况 |
F46 人数信息 |
F39 上机情况 |
统计电脑使用情况 |
300次/月 |
P5.1 |
管理员统计 |
统计管理员信息 |
F47 管理员信息 |
F48 管理员值班信息 |
统计管理员信息 |
500次/月 |
P5.2 |
会员统计 |
统计会员信息 |
F52 会员信息 |
F53 会员信息 |
统计会员信息 |
5次/月 |
P5.3 |
收费报表 |
处理所有收费信息并统计 |
F50 管理员信息 F53 会员信息 F51 账单明细 |
F49 收费明细 |
处理所有收费信息并统计 |
3次/月 |
5.数据存储
表6-5 数据存储
编号 |
数据存储名称 |
简述 |
数据存储组成 |
相关联的处理 |
S1 |
管理员表 |
用于存放管理员的基本信息 |
DS-3 |
P1.1,P5.1,P5.3 |
S2 |
电脑表 |
用于存放电脑的基本信息 |
DS-8 |
P1.2,P3.2,P3.3,P3.5 |
S3 |
费率表 |
对不同电脑不同时间段的收费标准 |
DS-7 |
P1.4,P3.2 |
S4 |
会员表 |
用于存放会员的基本信息 |
DS-10 |
P2.1,P2.2,P2.3,P2.4,P4.1 |
S5 |
充值表 |
会员的充值记录 |
DS-12 |
P2.4,P4.2,P4.3 |
S6 |
上机情况表 |
会员的上机情况 |
DS-2 |
P3.1,P3.3,P3.4,P4.4,5.3 |
S7 |
短消息表 |
会员向管理员提出的请求 |
DS-9 |
P3.5 |
S8 |
时段表 |
不同时间的不同收费标准 |
DS-14 |
P1.3 |
S9 |
账单表 |
会员下机后的消费单 |
DS-15 |
P4.2 |
E-R图
关系模式
会员(会员账号,会员身份证号,会员年龄,会员密码,会员余额,会员电话号,会员QQ,会员微信,会员职业,会员性别,会员地址,会员等级)
电脑(电脑编号,电脑显卡,电脑CPU,电脑显示器,电脑键鼠,电脑收费等级)
管理员(管理员账号,管理员身份证号,管理员年龄,管理员密码,管理员电话号,管理员QQ,管理员微信,管理员职业,管理员性别,管理员地址,管理员权限)
时段表(时段编号,收费时间段,收费金额)
费率表(费率编号,电脑编号,会员账号,管理员账号,电脑收费等级)
上机情况表(上机情况编号,电脑编号,会员账号,管理员账号,用户上机时间,会员下机时间,会员上机时长,电脑收费等级,收费时间段,电脑状态,延长时间,换机机号,重启,网络状态,延时时刻)
使用记录表(使用记录编号,电脑编号,会员账号,管理员账号,用户上机时间,会员下机时间,会员上机时长,电脑收费等级,电脑收费时间段,电脑状态)
管理员工作表(工作编号,管理员账号,管理员姓名,工作表编号,管理员电话,上班时间,下班时间,工作时长)
维修记录表(维修编号,电脑编号,管理员账号,维修费用,维修内容)
账单表(账单编号,会员上机时间,会员下机时间,会员上机时长,会员消费,会员其他消费,用户账号,管理员账号,电脑编号,会员姓名,管理员姓名)
充值表(充值编号,会员账户,管理员账户,充值金额,充值时间,会员姓名,管理员姓名)文章来源:https://www.toymoban.com/news/detail-480977.html
消息表(消息编号,会员账户,管理员账户,用户姓名,管理员姓名,会员消息,管理员消息,会员等级)文章来源地址https://www.toymoban.com/news/detail-480977.html
数据库实施
1. 用户表
create table User0
(
UserAccount varchar2(10) not null,
UserID varchar2(10) not null,
UserAge int,
UserName varchar2(40),
UserPassword varchar2(10),
UserBalance float,
UserPhone varchar2(10),
UserQQ varchar2(10),
UserWechat varchar2(10),
UserProfession varchar2(30),
UserSex varchar2(10),
UserAddress varchar2(40),
UserGrade varchar2(20),
constraint PK_UserAccount primary key (UserAccount),
constraint CK_UserAge check (UserAge>=0 and UserAge <= 100),
constraint CK_UserBalance check (UserBalance>=0),
constraint CK_UserGrade check (UserGrade = '钻石' or UserGrade = '金卡' or UserGrade = '银卡' or UserGrade = '普通'),
constraint CK_UserSex check (UserSex = '男' or UserSex = '女')
);
2. 管理员表
create table Administrator
(
AdministratorAccount varchar2(10) not null,
AdministratorID varchar2(10) not null,
AdministratorAge int,
AdministratorName varchar2(40),
AdministratorPassword varchar2(10),
AdministratorQQ varchar2(10),
AdministratorWechat varchar2(10),
AdministratorProfession varchar2(10),
AdministratorPhone varchar2(10),
AdministratorSex varchar2(10),
AdministratorAddress varchar2(40),
AdministratorRight varchar2(20),
constraint PK_AdministratorAccount primary key (AdministratorAccount),
constraint CK_AdministratorAge check (AdministratorAge>=0 and AdministratorAge <= 100),
constraint CK_AdministratorRight check (AdministratorRight = '普通' or AdministratorRight = '高级'),
constraint CK_AdministratorSex check (AdministratorSex = '男' or AdministratorSex = '女')
);
3. 电脑表
create table Computer
(
PC_ID varchar2(10) not null,
PC_Gpu varchar2(40) ,
PC_CPU varchar2(40),
PC_Display varchar2(40),
PC_Keyboard varchar2(40),
PC_charge_grade int,
constraint PK_PC_ID primary key (PC_ID),
constraint CK_PC_charge_grade check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3)
);
4. 时段表
create table Time_Frame
(
Time_Frame_ID varchar2(10) not null,
T_start date,
T_end date,
Charge_amount float,
constraint PK_Time_Frame_ID primary key (Time_Frame_ID),
constraint CK_Charge_amount check (Charge_amount >0)
);
5. 费率表
create table Charge_List
(
Rate_ID varchar2(10) not null,
PC_ID varchar2(10),
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
PC_charge_grade int ,
constraint PK_Rate_ID primary key (Rate_ID),
constraint FK_PC_ID foreign key (PC_ID) references Computer(PC_ID),
constraint FK_UserAccount foreign key (UserAccount) references User0(UserAccount),
constraint FK_AdministratorAccount foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
constraint CK_PC_charge_grade1 check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3)
);
6. 上机情况表
create table Up_Computer_List
(
Up_computer_ID varchar2(10) not null,
PC_ID varchar2(10),
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
UserUP_time date ,
UserDown_time date,
UserDuration float,
PC_charge_grade int,
T_start date,
T_end date,
PC_state varchar2(10),
Extend_time_length float,
Extend_PC_ID varchar2(10),
Restart varchar2(10),
Network_State varchar2(10),
Extend_time date,
Charge_amount float,
primary key (Up_computer_ID),
foreign key (PC_ID) references Computer(PC_ID),
foreign key (UserAccount) references User0(UserAccount),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
foreign key (Extend_PC_ID) references Computer(PC_ID),
check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3),
check(UserDuration>=0),
check(Extend_time_length>=0),
check(Charge_amount>=0),
check(PC_state='正常'or PC_state= '维修'),
check(Restart='是'or Restart= '否'),
check(Network_State='是'or Network_State= '否')
);
7. 使用记录表
create table Use_Computer_List
(
Use_Computer_ID varchar2(10) not null,
PC_ID varchar2(10),
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
UserUP_time date ,
UserDown_time date,
UserDuration float,
PC_charge_grade int,
T_start date,
T_end date,
PC_state varchar2(10),
Charge_amount float,
primary key (Use_Computer_ID),
foreign key (PC_ID) references Computer(PC_ID),
foreign key (UserAccount) references User0(UserAccount),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3),
check(UserDuration>=0),
check(Charge_amount>=0),
check(PC_state='正常'or PC_state= '维修')
);
8. 管理员工作表
create table Administrator_Work_List
(
Administrator_work_ID varchar2(10) not null,
AdministratorAccount varchar2(10),
Administrator_Name varchar2(40),
AdministratorPhone varchar2(10),
AdministratorUp_time date ,
AdministratorDown_time date,
AdministrationDuration float,
primary key (Administrator_work_ID),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
check(AdministrationDuration>=0)
);
9. 维修记录表
create table Maintain_List
(
PC_maintain_ID varchar2(10) not null,
PC_ID varchar2(10),
AdministratorAccount varchar2(10),
Maintain_Content varchar2(80),
PC_maintain_Money float,
primary key (PC_maintain_ID),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
foreign key (PC_ID) references Computer(PC_ID),
check(PC_maintain_Money>=0)
);
10. 账单表
create table Bill_List
(
Bill_ID varchar2(10) not null,
PC_ID varchar2(10),
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
User_name varchar2(40),
Administrator_Name varchar2(40),
UserUP_time date,
UserDown_time date,
UserDuration float,
User_consume float,
User_other_consume float,
primary key (Bill_ID),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
foreign key (UserAccount) references User0(UserAccount),
foreign key (PC_ID) references Computer(PC_ID),
check(UserDuration>=0),
check(User_consume>=0),
check(User_other_consume>=0)
);
11. 充值表
create table User_recharge_List
(
Recharge_ID varchar2(10) not null,
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
User_name varchar2(40),
Administrator_Name varchar2(40),
User_Recharge_time date,
User_recharge_amount float,
primary key (Recharge_ID),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
foreign key (UserAccount) references User0(UserAccount),
check(User_recharge_amount>=0)
);
12. 信息表
create table Maeeage_List
(
Message_ID varchar2(10) not null,
UserAccount varchar2(10),
AdministratorAccount varchar2(10),
User_name varchar2(40),
Administrator_Name varchar2(40),
User_massage varchar2(50),
UserGrade varchar2(20),
Administrator_massage varchar2(50),
primary key (Message_ID),
foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
foreign key (UserAccount) references User0(UserAccount),
check (UserGrade = '钻石' or UserGrade = '金卡' or UserGrade = '银卡' or UserGrade = '普通')
);
存储过程
1. 结算账单
create or replace procedure PRO_BILL(
UserAccount_n in bill_list.useraccount%type,
User_other_consume_n in bill_list.user_other_consume%type
) is
Bill_ID_n varchar2(10);
PC_ID_n bill_list.pc_id%type;
AdministratorAccount_n bill_list.administratoraccount%type;
User_name_n bill_list.user_name%type;
Administrator_Name_n bill_list.administrator_name%type;
UserUP_time_n bill_list.userup_time%type;
UserDown_time_n bill_list.userdown_time%type;
UserDuration_n bill_list.userduration%type;
User_consume_n bill_list.user_consume%type;
userbalance_n user0.userbalance%type;
begin
--获取会员余额信息
select User0.Userbalance
into userbalance_n
from User0
where User0.Useraccount = UserAccount_n;
--获取账单信息
select PC_ID,AdministratorAccount,User_name,Administrator_Name,UserUP_time,UserDown_time,UserDuration,User_consume
into PC_ID_n,AdministratorAccount_n,User_name_n,Administrator_Name_n,UserUP_time_n,UserDown_time_n,UserDuration_n,User_consume_n
from up_computer_list
where up_computer_list.useraccount = UserAccount_n;
--设置账单编号
Bill_ID_n := to_char(useraccount_n+UserUP_time_n);
--添加账单信息
dbms_output.put_line(
'这是您的账单:'||to_char(User_consume_n+User_other_consume_n));
insert into Bill_list
values(
Bill_ID_n,
PC_ID_n,
UserAccount_n,
AdministratorAccount_n,
User_name_n,
Administrator_Name_n,
UserUP_time_n ,
UserDown_time_n,
UserDuration_n ,
User_consume_n,
User_other_consume_n
);
commit;
--修改会员的余额信息
update user0 set user0.userbalance = userbalance_n - User_consume_n - User_other_consume_n
where User0.Useraccount = UserAccount_n;
dbms_output.put_line('账单已支付,欢迎下次光临!!!');
commit;
end PRO_BILL;
2. 会员上机
create or replace procedure PRO_UP_PC(
PC_ID_n in up_computer_list.pc_id%type,
UserAccount_n in up_computer_list.useraccount%type,
AdministratorAccount_n in up_computer_list.administratoraccount%type,
UserUP_time_n in up_computer_list.userup_time%type ,
Extend_time_length_n in up_computer_list.extend_time_length%type,
Extend_PC_ID_n in up_computer_list.extend_pc_id%type,
Restart_n in up_computer_list.restart%type,
Network_State_n in up_computer_list.network_state%type,
Extend_time_n in up_computer_list.extend_time%type,
) is
Up_computer_ID_n up_computer_list.pc_id%type;
PC_state_n up_computer_list.pc_id%type;
User_consume_n up_computer_list.pc_id%type;
UserGrade_n user0.usergrade%type;
discount float;
UserDown_time_n date;
UserDuration_n float;
PC_charge_grade_n int;
T_start_n date;
T_end_n date;
Charge_amount_n float;
begin
--获取电脑状态
select computer.pc_state
into PC_state_n
from computer
where computer.pc_id = PC_ID_n;
--修改电脑使用状态
update computer set computer.pc_state_1 = 1
where computer.pc_id = PC_ID_n;
commit;
--设置上机编号
Up_computer_ID_n := to_char(UserUP_time_n + useraccount_n);
--获取上机信息
select PC_ID,AdministratorAccount,User_name,Administrator_Name,UserUP_time,UserDown_time,UserDuration_n,User_consume_n
into PC_ID_n,AdministratorAccount_n,User_name_n,Administrator_Name_n,UserUP_time_n,UserDown_time_n,UserDuration_n,User_consume_n
from up_computer_list
where up_computer_list.useraccount = UserAccount_n;
--设置上机编号
Bill_ID_n := to_char(useraccount+UserUP_time_n);
--添加上机信息
dbms_output.put_line(
'这是您的上机情况');
insert into up_computer_list
values(
Up_computer_ID_n,
PC_ID_n,
UserAccount_n,
AdministratorAccount_n,
UserUP_time_n,
UserDown_time_n,
UserDuration_n,
PC_charge_grade_n,
T_start_n,
T_end_n,
PC_state_n,
Extend_time_length_n,
Extend_PC_ID_n,
Restart_n,
Network_State_n,
Extend_time_n,
Charge_amount_n
User_consume_n,
);
commit;
end PRO_UP_PC;
3. 会员下机
create or replace procedure PRO_DOWN_PC(
PC_ID_n in up_computer_list.pc_id%type,
UserAccount_n in up_computer_list.useraccount%type,
AdministratorAccount_n in up_computer_list.administratoraccount%type,
UserDown_time_n in up_computer_list.userup_time%type ,
UserDuration_n in up_computer_list.userduration%type
) is
User_consume_n up_computer_list.pc_id%type;
UserGrade_n user0.usergrade%type;
discount float;
PC_charge_grade_n int;
T_start_n date;
T_end_n date;
Charge_amount_n float;
UserUp_time_n date;
begin
--修改电脑使用状态
update computer set computer.pc_state_1 = 0
where computer.pc_id = PC_ID_n;
commit;
--获取用户等级
select UserGrade into UserGrade_n from user0
where user0.useraccount = UserAccount_n;
if cuslevel='钻石' then discount:=0.9;
elsif cuslevel='金卡' then discount:=0.93;
elsif cuslevel='银卡' then discount:=0.96;
else discount:=1;
end if;
--获取上机时间
select UserUp_time
into UserUp_time_n
from up_computer_list
where up_computer_list.useraccount = UserAccount_n and up_computer_list.administratoraccount = AdministratorAccount_n and up_computer_list.pc_id = PC_ID_n;
--获取收费等级
select PC_charge_grade
into PC_charge_grade_n
from computer
where computer.PC_ID = PC_ID_n;
--获取收费时间段
select Charge_amount, t_start ,t_end
into Charge_amount_n, T_start_n, T_end_n
from time_frame
where time_frame.t_start <= UserUp_time_n and time_frame.t_end >= UserDown_time_n;
--计算消费金额
User_consume_n := (Charge_amount_n*PC_charge_grade_n*discount*UserDuration_n);
--修改上机信息
dbms_output.put_line(
'这是您的下机情况');
update up_computer_list set
up_computer_list.userdown_time = UserDown_time_n,
up_computer_list.userduration = UserDuration_n,
up_computer_list.user_consume = User_consume_n,
up_computer_list.pc_charge_grade = PC_charge_grade_n,
up_computer_list.t_start = T_start_n,
up_computer_list.t_end = T_end_n,
up_computer_list.charge_amount = Charge_amount_n;
commit;
end PRO_DOWN_PC;
4. 工作处理
create or replace procedure PRO_WORK(
AdministratorAccount_n in Administrator.AdministratorAccount%type,
AdministratorUp_time_n in administrator_work_list.administratorup_time%type ,
AdministratorDown_time_n in administrator_work_list.administratordown_time%type,
AdministrationDuration_n in administrator_work_list.administrationduration%type,
) is
Administrator_work_ID_n varchar2(10);
Administrator_Name_n varchar2(40);
AdministratorPhone_n varchar2(10);
begin
--获取管理员信息
select AdministratorName, AdministratorPhone
into Administrator_Name_n, AdministratorPhone_n
from Administrator
where Administrator.AdministratorAccount = AdministratorAccount_n;
--设置工作编号
Administrator_work_ID_n := to_char(AdministratorUp_time_n + AdministratorAccount_n);
--添加上机信息
dbms_output.put_line( '这是您的工作情况');
insert into administrator_work_list
values(
Administrator_work_ID_n,
AdministratorAccount_n,
Administrator_Name_n,
AdministratorPhone_n,
AdministratorUp_time_n,
AdministratorDown_time_n,
AdministrationDuration_n
);
commit;
end PRO_WORK;
5. 会员充值
create or replace procedure PRO_RECHARGE(
AdministratorAccount_n in Administrator.AdministratorAccount%type,
UserAccount_n in user0.useraccount%type,
User_Recharge_time_n in User_Recharge_List.User_Recharge_Time%type,
User_recharge_amount_n in user_recharge_list.user_recharge_amount%type,
) is
Recharge_ID_n varchar2(10);
User_name_n varchar2(40);
Administrator_Name_n varchar2(40);
begin
--获取管理员信息
select AdministratorName
into Administrator_Name_n
from Administrator
where Administrator.AdministratorAccount = AdministratorAccount_n;
--获取会员信息
select UserName
into User_name_n
from user0
where user0.useraccount = UserAccount_n;
--设置充值编号
Recharge_ID_n := to_char(UserAccount_n+ 'cz' + AdministratorAccount_n);
--添加上机信息
dbms_output.put_line( '这是您的充值情况');
insert into User_Recharge_List
values(
Recharge_ID_n,
UserAccount_n,
AdministratorAccount_n,
User_name_n,
Administrator_Name_n,
User_Recharge_time_n,
User_recharge_amount_n
);
commit;
--修改会员的余额信息
update user0 set user0.userbalance = user0.userbalance_n + User_recharge_amount_n
where User0.Useraccount = UserAccount_n;
dbms_output.put_line('充值成功,欢迎下次充值!!!');
commit;
end PRO_RECHARGE;
6. 维修电脑
create or replace procedure PRO_MAINATION(
AdministratorAccount_n in Administrator.AdministratorAccount%type,
PC_ID_n in computer.pc_id%type ,
Maintain_Content_n in maintain_list.maintain_content%type,
PC_maintain_Money_n in maintain_list.pc_maintain_money%type,
Maintain_time_n in maintain_list.maintain_time%type
) is
PC_maintain_ID_n varchar2(10);
begin
--设置维修编号
PC_maintain_ID_n := to_char('wx' + AdministratorAccount_n + Maintain_time_n);
--添加维修信息
dbms_output.put_line( '这是您的工作情况');
insert into administrator_work_list
values(
PC_maintain_ID_n,
PC_ID_n,
AdministratorAccount_n,
Maintain_Content_n,
PC_maintain_Money_n,
Maintain_time_n
);
commit;
end PRO_MAINATION;
7. 更新管理员
create or replace procedure PRO_ADMINISTRATER(
AdministratorAccount_n in administrator.administratoraccount%type,
AdministratorID_n in administrator.administratorid%type,
AdministratorAge_n in administrator.administratorage%type,
AdministratorName_n in administrator.administratorname%type,
AdministratorPassword_n in administrator.administratorpassword%type,
AdministratorQQ_n in administrator.administratorqq%type,
AdministratorWechat_n in administrator.administratorwechat%type,
AdministratorProfession_n in administrator.administratorprofession%type,
AdministratorPhone_n in administrator.administratorphone%type,
AdministratorSex_n in administrator.administratorsex%type,
AdministratorAddress_n in administrator.administratoraddress%type,
AdministratorRight_n in administrator.administratorright%type,
is_change in int
) is
begin
--1 表示为插入,0 表示为修改
if is_change = 1 then
insert into administrator
values(
AdministratorAccount_n,
AdministratorID_n,
AdministratorAge_n,
AdministratorName_n,
AdministratorPassword_n,
AdministratorQQ_n,
AdministratorWechat_n,
AdministratorProfession_n,
AdministratorPhone_n,
AdministratorSex_n,
AdministratorAddress_n,
AdministratorRight_n,
);
else
update administrator set
AdministratorAccount = AdministratorAccount_n,
AdministratorID = AdministratorID_n,
AdministratorAge = AdministratorAge_n,
AdministratorName = AdministratorName_n,
AdministratorPassword = AdministratorPassword_n,
AdministratorQQ = AdministratorQQ_n,
AdministratorWechat = AdministratorWechat_n,
AdministratorProfession = AdministratorProfession_n,
AdministratorPhone = AdministratorPhone_n,
AdministratorSex = AdministratorSex_n,
AdministratorAddress = AdministratorAddress_n,
AdministratorRight = AdministratorRight_n,
where administrator.AdministratorAccount = AdministratorAccount_n;
end if;
commit;
end PRO_ADMINISTRATER;
8. 更新电脑
create or replace procedure PRO_COMPUTER(
PC_ID_n in computer.pc_id%type,
PC_Gpu_n in computer.pc_gpu%type,
PC_CPU_n in computer.pc_cpu%type,
PC_Display_n in computer.pc_display%type,
PC_Keyboard_n in computer.pc_keyboard%type,
PC_charge_grade_n in computer.pc_charge_grade%type,
PC_STATE_n in computer.pc_state%type,
is_change in int
) is
PC_STATE_1_n int;
begin
PC_STATE_1_n := 0;
--1 表示为插入,0 表示为修改
if is_change = 1 then
insert into computer
values(
PC_ID_n,
PC_Gpu_n,
PC_CPU_n,
PC_Display_n,
PC_Keyboard_n,
PC_charge_grade_n,
PC_STATE_1_n,
PC_STATE_n
);
else
update computer set
PC_ID = PC_ID_n,
PC_Gpu = PC_Gpu_n,
PC_CPU = PC_CPU_n,
PC_Display = PC_Display_n,
PC_Keyboard = PC_Keyboard_n,
PC_charge_grade = PC_charge_grade_n,
PC_STATE_1 = PC_STATE_1_n,
PC_STATE = PC_STATE_n
where computer.pc_id = PC_ID_n;
end if;
commit;
end PRO_COMPUTER;
9. 更新会员
create or replace procedure PRO_USERS(
UserAccount_n in user0.useraccount%type,
UserID_n in user0.userid%type,
UserAge_n in user0.userage%type,
UserName_n in user0.username%type,
UserPassword_n in user0.userpassword%type,
UserBalance_n in user0.userbalance%type,
UserPhone_n in user0.userphone%type,
UserQQ_n in user0.userqq%type,
UserWechat_n in user0.userwechat%type,
UserProfession_n in user0.userprofession%type,
UserSex_n in user0.usersex%type,
UserAddress_n in user0.useraddress%type,
UserGrade_n in user0.usergrade%type,
is_change in int
) is
begin
--1 表示为插入,0 表示为修改
if is_change = 1 then
insert into user0
values(
UserAccount_n,
UserID_n,
UserAge_n,
UserName_n,
UserPassword_n,
UserBalance_n,
UserPhone_n,
UserQQ_n,
UserWechat_n,
UserProfession_n,
UserSex_n,
UserAddress_n,
UserGrade_n
);
else
update user0 set
UserAccount = UserAccount_n,
UserID = UserID_n,
UserAge = UserAge_n,
UserName = UserName_n,
UserPassword = UserPassword_n,
UserBalance = UserBalance_n,
UserPhone = UserPhone_n,
UserQQ = UserQQ_n,
UserWechat = UserWechat_n,
UserProfession = UserProfession_n,
UserSex = UserSex_n,
UserAddress = UserAddress_n,
UserGrade = UserGrade_n
where user0.UserAccount = UserAccount_n;
end if;
commit;
end PRO_USERS;
触发器
会员等级变换
CREATE OR REPLACE TRIGGER TRI_POINTS
after insert
on Bill_List
for each row
declare
pragma autonomous_transaction;
Grage_n user0.usergrade%type;
comsume_n bill_list.user_consume%type;
begin
--获取会员等级
select user0.usergrade into Grage_n
from user0
where user0.useraccount=:new.useraccount;
--获取会员消费金额
select sum(bill_list.user_consume + bill_list.user_other_consume) into comsume_n
from bill_list
where bill_list.bill_id=:new.bill_id;
--计算等级
if comsume_n>600 and comsume_n<1400 then Grage_n:='银卡';
elsif comsume_n>1400 and comsume_n<2200 then Grage_n:='金卡';
elsif comsume_n>2200 then Grage_n:='钻石';
else Grage_n:='普通';
end if;
--更新会员等级
update user0
set user0.usergrade=Grage_n
where useraccount =:new.useraccount;
commit;
end TRI_POINTS;
余量不足提醒
CREATE OR REPLACE TRIGGER TRI_computer
after update
on computer
for each row
declare
shu int;
begin
select count(computer.pc_id)
into shu
from computer
where computer.pc_state_1 = 0;
if shu <5 then
dbms_output.put_line('当前空闲电脑仅有 '||to_char(shu) || ' 台!!!');
end if;
end TRI_computer;
到了这里,关于网吧管理系统数据库设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!