0


网吧管理系统数据库设计

摘 要:网吧管理系统是为解决大型网吧面临的复杂电脑管理业务流程和繁琐的客户服务、信息处理业务而开发的管理系统。它主要包含系统管理、会员管理、日常管理、查询管理、统计报表五个模块。数据库设计过程中主要进行了分析网吧电脑使用业务方面的需求,进行概念结构、逻辑结构和物理结构的设计,并通过建立视图、存储过程和触发器实现了满足不同用户的不同需求,如针对会员的上机和服务,针对管理员的账单查看和收费时间计划管理以及针对不同等级的会员的不同服务。实现了较为自动化、人性化的网吧管理、会员服务、信息管理的管理功能。

1、需求分析

本系统主要任务是实现网吧信息管理系统。系统分为以下五个功能模块:系统管理、会员管理、日常管理、查询管理、统计报表。具体功能可以从以下五个方面介绍:

  1. 系统管理:

  2. 设置管理员的基本信息,对管理员的基本信息进行操作。

  3. 设置电脑的基本信息,对电脑的基本信息进行操作。

  4. 对不同时间短的收费情况进行设置。

  5. 不同计算机,不同用户的收费进行设置。

  6. 会员管理:

  7. 添加新注册的会员,并初始化会员的详细信息。

  8. 注销以往注册的会员,并删除该会员的所有基本信息。

  9. 修改会员的基本信息,用于修改用户的个人信息。

  10. 会员充值,会员对自己的账户进行充值,方便后续使用电脑。

  11. 日常管理:

  12. 开机管理:用户上机后,将用户的信息和电脑的信息存入上机情况表中。

  13. 限时管理:对用户的上机情况进行限制,根据会员的账户余额和网吧要关闭的时间进行限制。

  14. 延时重启设置:用户根据自己的时间安排先占用计算机,但是不会收费,到需要的时间自动打开计算机。

  15. 换机机制:用户根据自己的需求更换电脑。

  16. 消息机制:会员可以使用该功能和管理员进行联系,提出自己想要管理员提供的服务。

  17. 查询管理:

  18. 账号查询:对会员的基本信息进行查询。

  19. 账单查询:对会员的所有消费账单进行查询。

  20. 充值明细:对会员的充值记录和消费记录进行查询。

  21. 上机统计:统计用户的上机情况和所用电脑的使用记录。

  22. 统计报表:

  23. 管理员统计:按照不同条件对管理员的数据进行统计。

  24. 会员统计:按照不同的条件对会员数据进行统计。

  25. 收费报表:查询所有用户的充值情况和消费情况

数据流程图

数据字典

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,管理员微信,管理员职业,管理员性别,管理员地址,管理员权限)

时段表(时段编号,收费时间段,收费金额)

费率表(费率编号,电脑编号,会员账号,管理员账号,电脑收费等级)

上机情况表(上机情况编号,电脑编号,会员账号,管理员账号,用户上机时间,会员下机时间,会员上机时长,电脑收费等级,收费时间段,电脑状态,延长时间,换机机号,重启,网络状态,延时时刻)

使用记录表(使用记录编号,电脑编号,会员账号,管理员账号,用户上机时间,会员下机时间,会员上机时长,电脑收费等级,电脑收费时间段,电脑状态)

管理员工作表(工作编号,管理员账号,管理员姓名,工作表编号,管理员电话,上班时间,下班时间,工作时长)

维修记录表(维修编号,电脑编号,管理员账号,维修费用,维修内容)

账单表(账单编号,会员上机时间,会员下机时间,会员上机时长,会员消费,会员其他消费,用户账号,管理员账号,电脑编号,会员姓名,管理员姓名)

充值表(充值编号,会员账户,管理员账户,充值金额,充值时间,会员姓名,管理员姓名)

消息表(消息编号,会员账户,管理员账户,用户姓名,管理员姓名,会员消息,管理员消息,会员等级)

数据库实施

1. 用户表

  1. create table User0
  2. (
  3. UserAccount varchar2(10) not null,
  4. UserID varchar2(10) not null,
  5. UserAge int,
  6. UserName varchar2(40),
  7. UserPassword varchar2(10),
  8. UserBalance float,
  9. UserPhone varchar2(10),
  10. UserQQ varchar2(10),
  11. UserWechat varchar2(10),
  12. UserProfession varchar2(30),
  13. UserSex varchar2(10),
  14. UserAddress varchar2(40),
  15. UserGrade varchar2(20),
  16. constraint PK_UserAccount primary key (UserAccount),
  17. constraint CK_UserAge check (UserAge>=0 and UserAge <= 100),
  18. constraint CK_UserBalance check (UserBalance>=0),
  19. constraint CK_UserGrade check (UserGrade = '钻石' or UserGrade = '金卡' or UserGrade = '银卡' or UserGrade = '普通'),
  20. constraint CK_UserSex check (UserSex = '男' or UserSex = '女')
  21. );

2. 管理员表

  1. create table Administrator
  2. (
  3. AdministratorAccount varchar2(10) not null,
  4. AdministratorID varchar2(10) not null,
  5. AdministratorAge int,
  6. AdministratorName varchar2(40),
  7. AdministratorPassword varchar2(10),
  8. AdministratorQQ varchar2(10),
  9. AdministratorWechat varchar2(10),
  10. AdministratorProfession varchar2(10),
  11. AdministratorPhone varchar2(10),
  12. AdministratorSex varchar2(10),
  13. AdministratorAddress varchar2(40),
  14. AdministratorRight varchar2(20),
  15. constraint PK_AdministratorAccount primary key (AdministratorAccount),
  16. constraint CK_AdministratorAge check (AdministratorAge>=0 and AdministratorAge <= 100),
  17. constraint CK_AdministratorRight check (AdministratorRight = '普通' or AdministratorRight = '高级'),
  18. constraint CK_AdministratorSex check (AdministratorSex = '男' or AdministratorSex = '女')
  19. );

3. 电脑表

  1. create table Computer
  2. (
  3. PC_ID varchar2(10) not null,
  4. PC_Gpu varchar2(40) ,
  5. PC_CPU varchar2(40),
  6. PC_Display varchar2(40),
  7. PC_Keyboard varchar2(40),
  8. PC_charge_grade int,
  9. constraint PK_PC_ID primary key (PC_ID),
  10. constraint CK_PC_charge_grade check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3)
  11. );

4. 时段表

  1. create table Time_Frame
  2. (
  3. Time_Frame_ID varchar2(10) not null,
  4. T_start date,
  5. T_end date,
  6. Charge_amount float,
  7. constraint PK_Time_Frame_ID primary key (Time_Frame_ID),
  8. constraint CK_Charge_amount check (Charge_amount >0)
  9. );

5. 费率表

  1. create table Charge_List
  2. (
  3. Rate_ID varchar2(10) not null,
  4. PC_ID varchar2(10),
  5. UserAccount varchar2(10),
  6. AdministratorAccount varchar2(10),
  7. PC_charge_grade int ,
  8. constraint PK_Rate_ID primary key (Rate_ID),
  9. constraint FK_PC_ID foreign key (PC_ID) references Computer(PC_ID),
  10. constraint FK_UserAccount foreign key (UserAccount) references User0(UserAccount),
  11. constraint FK_AdministratorAccount foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  12. constraint CK_PC_charge_grade1 check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3)
  13. );

6. 上机情况表

  1. create table Up_Computer_List
  2. (
  3. Up_computer_ID varchar2(10) not null,
  4. PC_ID varchar2(10),
  5. UserAccount varchar2(10),
  6. AdministratorAccount varchar2(10),
  7. UserUP_time date ,
  8. UserDown_time date,
  9. UserDuration float,
  10. PC_charge_grade int,
  11. T_start date,
  12. T_end date,
  13. PC_state varchar2(10),
  14. Extend_time_length float,
  15. Extend_PC_ID varchar2(10),
  16. Restart varchar2(10),
  17. Network_State varchar2(10),
  18. Extend_time date,
  19. Charge_amount float,
  20. primary key (Up_computer_ID),
  21. foreign key (PC_ID) references Computer(PC_ID),
  22. foreign key (UserAccount) references User0(UserAccount),
  23. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  24. foreign key (Extend_PC_ID) references Computer(PC_ID),
  25. check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3),
  26. check(UserDuration>=0),
  27. check(Extend_time_length>=0),
  28. check(Charge_amount>=0),
  29. check(PC_state='正常'or PC_state= '维修'),
  30. check(Restart='是'or Restart= '否'),
  31. check(Network_State='是'or Network_State= '否')
  32. );

7. 使用记录表

  1. create table Use_Computer_List
  2. (
  3. Use_Computer_ID varchar2(10) not null,
  4. PC_ID varchar2(10),
  5. UserAccount varchar2(10),
  6. AdministratorAccount varchar2(10),
  7. UserUP_time date ,
  8. UserDown_time date,
  9. UserDuration float,
  10. PC_charge_grade int,
  11. T_start date,
  12. T_end date,
  13. PC_state varchar2(10),
  14. Charge_amount float,
  15. primary key (Use_Computer_ID),
  16. foreign key (PC_ID) references Computer(PC_ID),
  17. foreign key (UserAccount) references User0(UserAccount),
  18. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  19. check (PC_charge_grade = 1 or PC_charge_grade = 2 or PC_charge_grade = 3),
  20. check(UserDuration>=0),
  21. check(Charge_amount>=0),
  22. check(PC_state='正常'or PC_state= '维修')
  23. );

8. 管理员工作表

  1. create table Administrator_Work_List
  2. (
  3. Administrator_work_ID varchar2(10) not null,
  4. AdministratorAccount varchar2(10),
  5. Administrator_Name varchar2(40),
  6. AdministratorPhone varchar2(10),
  7. AdministratorUp_time date ,
  8. AdministratorDown_time date,
  9. AdministrationDuration float,
  10. primary key (Administrator_work_ID),
  11. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  12. check(AdministrationDuration>=0)
  13. );

9. 维修记录表

  1. create table Maintain_List
  2. (
  3. PC_maintain_ID varchar2(10) not null,
  4. PC_ID varchar2(10),
  5. AdministratorAccount varchar2(10),
  6. Maintain_Content varchar2(80),
  7. PC_maintain_Money float,
  8. primary key (PC_maintain_ID),
  9. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  10. foreign key (PC_ID) references Computer(PC_ID),
  11. check(PC_maintain_Money>=0)
  12. );

10. 账单表

  1. create table Bill_List
  2. (
  3. Bill_ID varchar2(10) not null,
  4. PC_ID varchar2(10),
  5. UserAccount varchar2(10),
  6. AdministratorAccount varchar2(10),
  7. User_name varchar2(40),
  8. Administrator_Name varchar2(40),
  9. UserUP_time date,
  10. UserDown_time date,
  11. UserDuration float,
  12. User_consume float,
  13. User_other_consume float,
  14. primary key (Bill_ID),
  15. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  16. foreign key (UserAccount) references User0(UserAccount),
  17. foreign key (PC_ID) references Computer(PC_ID),
  18. check(UserDuration>=0),
  19. check(User_consume>=0),
  20. check(User_other_consume>=0)
  21. );

11. 充值表

  1. create table User_recharge_List
  2. (
  3. Recharge_ID varchar2(10) not null,
  4. UserAccount varchar2(10),
  5. AdministratorAccount varchar2(10),
  6. User_name varchar2(40),
  7. Administrator_Name varchar2(40),
  8. User_Recharge_time date,
  9. User_recharge_amount float,
  10. primary key (Recharge_ID),
  11. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  12. foreign key (UserAccount) references User0(UserAccount),
  13. check(User_recharge_amount>=0)
  14. );

12. 信息表

  1. create table Maeeage_List
  2. (
  3. Message_ID varchar2(10) not null,
  4. UserAccount varchar2(10),
  5. AdministratorAccount varchar2(10),
  6. User_name varchar2(40),
  7. Administrator_Name varchar2(40),
  8. User_massage varchar2(50),
  9. UserGrade varchar2(20),
  10. Administrator_massage varchar2(50),
  11. primary key (Message_ID),
  12. foreign key (AdministratorAccount) references Administrator(AdministratorAccount),
  13. foreign key (UserAccount) references User0(UserAccount),
  14. check (UserGrade = '钻石' or UserGrade = '金卡' or UserGrade = '银卡' or UserGrade = '普通')
  15. );

存储过程

1. 结算账单

  1. create or replace procedure PRO_BILL(
  2. UserAccount_n in bill_list.useraccount%type,
  3. User_other_consume_n in bill_list.user_other_consume%type
  4. ) is
  5. Bill_ID_n varchar2(10);
  6. PC_ID_n bill_list.pc_id%type;
  7. AdministratorAccount_n bill_list.administratoraccount%type;
  8. User_name_n bill_list.user_name%type;
  9. Administrator_Name_n bill_list.administrator_name%type;
  10. UserUP_time_n bill_list.userup_time%type;
  11. UserDown_time_n bill_list.userdown_time%type;
  12. UserDuration_n bill_list.userduration%type;
  13. User_consume_n bill_list.user_consume%type;
  14. userbalance_n user0.userbalance%type;
  15. begin
  16. --获取会员余额信息
  17. select User0.Userbalance
  18. into userbalance_n
  19. from User0
  20. where User0.Useraccount = UserAccount_n;
  21. --获取账单信息
  22. select PC_ID,AdministratorAccount,User_name,Administrator_Name,UserUP_time,UserDown_time,UserDuration,User_consume
  23. into PC_ID_n,AdministratorAccount_n,User_name_n,Administrator_Name_n,UserUP_time_n,UserDown_time_n,UserDuration_n,User_consume_n
  24. from up_computer_list
  25. where up_computer_list.useraccount = UserAccount_n;
  26. --设置账单编号
  27. Bill_ID_n := to_char(useraccount_n+UserUP_time_n);
  28. --添加账单信息
  29. dbms_output.put_line(
  30. '这是您的账单:'||to_char(User_consume_n+User_other_consume_n));
  31. insert into Bill_list
  32. values(
  33. Bill_ID_n,
  34. PC_ID_n,
  35. UserAccount_n,
  36. AdministratorAccount_n,
  37. User_name_n,
  38. Administrator_Name_n,
  39. UserUP_time_n ,
  40. UserDown_time_n,
  41. UserDuration_n ,
  42. User_consume_n,
  43. User_other_consume_n
  44. );
  45. commit;
  46. --修改会员的余额信息
  47. update user0 set user0.userbalance = userbalance_n - User_consume_n - User_other_consume_n
  48. where User0.Useraccount = UserAccount_n;
  49. dbms_output.put_line('账单已支付,欢迎下次光临!!!');
  50. commit;
  51. end PRO_BILL;

2. 会员上机

  1. create or replace procedure PRO_UP_PC(
  2. PC_ID_n in up_computer_list.pc_id%type,
  3. UserAccount_n in up_computer_list.useraccount%type,
  4. AdministratorAccount_n in up_computer_list.administratoraccount%type,
  5. UserUP_time_n in up_computer_list.userup_time%type ,
  6. Extend_time_length_n in up_computer_list.extend_time_length%type,
  7. Extend_PC_ID_n in up_computer_list.extend_pc_id%type,
  8. Restart_n in up_computer_list.restart%type,
  9. Network_State_n in up_computer_list.network_state%type,
  10. Extend_time_n in up_computer_list.extend_time%type,
  11. ) is
  12. Up_computer_ID_n up_computer_list.pc_id%type;
  13. PC_state_n up_computer_list.pc_id%type;
  14. User_consume_n up_computer_list.pc_id%type;
  15. UserGrade_n user0.usergrade%type;
  16. discount float;
  17. UserDown_time_n date;
  18. UserDuration_n float;
  19. PC_charge_grade_n int;
  20. T_start_n date;
  21. T_end_n date;
  22. Charge_amount_n float;
  23. begin
  24. --获取电脑状态
  25. select computer.pc_state
  26. into PC_state_n
  27. from computer
  28. where computer.pc_id = PC_ID_n;
  29. --修改电脑使用状态
  30. update computer set computer.pc_state_1 = 1
  31. where computer.pc_id = PC_ID_n;
  32. commit;
  33. --设置上机编号
  34. Up_computer_ID_n := to_char(UserUP_time_n + useraccount_n);
  35. --获取上机信息
  36. select PC_ID,AdministratorAccount,User_name,Administrator_Name,UserUP_time,UserDown_time,UserDuration_n,User_consume_n
  37. into PC_ID_n,AdministratorAccount_n,User_name_n,Administrator_Name_n,UserUP_time_n,UserDown_time_n,UserDuration_n,User_consume_n
  38. from up_computer_list
  39. where up_computer_list.useraccount = UserAccount_n;
  40. --设置上机编号
  41. Bill_ID_n := to_char(useraccount+UserUP_time_n);
  42. --添加上机信息
  43. dbms_output.put_line(
  44. '这是您的上机情况');
  45. insert into up_computer_list
  46. values(
  47. Up_computer_ID_n,
  48. PC_ID_n,
  49. UserAccount_n,
  50. AdministratorAccount_n,
  51. UserUP_time_n,
  52. UserDown_time_n,
  53. UserDuration_n,
  54. PC_charge_grade_n,
  55. T_start_n,
  56. T_end_n,
  57. PC_state_n,
  58. Extend_time_length_n,
  59. Extend_PC_ID_n,
  60. Restart_n,
  61. Network_State_n,
  62. Extend_time_n,
  63. Charge_amount_n
  64. User_consume_n,
  65. );
  66. commit;
  67. end PRO_UP_PC;

3. 会员下机

  1. create or replace procedure PRO_DOWN_PC(
  2. PC_ID_n in up_computer_list.pc_id%type,
  3. UserAccount_n in up_computer_list.useraccount%type,
  4. AdministratorAccount_n in up_computer_list.administratoraccount%type,
  5. UserDown_time_n in up_computer_list.userup_time%type ,
  6. UserDuration_n in up_computer_list.userduration%type
  7. ) is
  8. User_consume_n up_computer_list.pc_id%type;
  9. UserGrade_n user0.usergrade%type;
  10. discount float;
  11. PC_charge_grade_n int;
  12. T_start_n date;
  13. T_end_n date;
  14. Charge_amount_n float;
  15. UserUp_time_n date;
  16. begin
  17. --修改电脑使用状态
  18. update computer set computer.pc_state_1 = 0
  19. where computer.pc_id = PC_ID_n;
  20. commit;
  21. --获取用户等级
  22. select UserGrade into UserGrade_n from user0
  23. where user0.useraccount = UserAccount_n;
  24. if cuslevel='钻石' then discount:=0.9;
  25. elsif cuslevel='金卡' then discount:=0.93;
  26. elsif cuslevel='银卡' then discount:=0.96;
  27. else discount:=1;
  28. end if;
  29. --获取上机时间
  30. select UserUp_time
  31. into UserUp_time_n
  32. from up_computer_list
  33. where up_computer_list.useraccount = UserAccount_n and up_computer_list.administratoraccount = AdministratorAccount_n and up_computer_list.pc_id = PC_ID_n;
  34. --获取收费等级
  35. select PC_charge_grade
  36. into PC_charge_grade_n
  37. from computer
  38. where computer.PC_ID = PC_ID_n;
  39. --获取收费时间段
  40. select Charge_amount, t_start ,t_end
  41. into Charge_amount_n, T_start_n, T_end_n
  42. from time_frame
  43. where time_frame.t_start <= UserUp_time_n and time_frame.t_end >= UserDown_time_n;
  44. --计算消费金额
  45. User_consume_n := (Charge_amount_n*PC_charge_grade_n*discount*UserDuration_n);
  46. --修改上机信息
  47. dbms_output.put_line(
  48. '这是您的下机情况');
  49. update up_computer_list set
  50. up_computer_list.userdown_time = UserDown_time_n,
  51. up_computer_list.userduration = UserDuration_n,
  52. up_computer_list.user_consume = User_consume_n,
  53. up_computer_list.pc_charge_grade = PC_charge_grade_n,
  54. up_computer_list.t_start = T_start_n,
  55. up_computer_list.t_end = T_end_n,
  56. up_computer_list.charge_amount = Charge_amount_n;
  57. commit;
  58. end PRO_DOWN_PC;

4. 工作处理

  1. create or replace procedure PRO_WORK(
  2. AdministratorAccount_n in Administrator.AdministratorAccount%type,
  3. AdministratorUp_time_n in administrator_work_list.administratorup_time%type ,
  4. AdministratorDown_time_n in administrator_work_list.administratordown_time%type,
  5. AdministrationDuration_n in administrator_work_list.administrationduration%type,
  6. ) is
  7. Administrator_work_ID_n varchar2(10);
  8. Administrator_Name_n varchar2(40);
  9. AdministratorPhone_n varchar2(10);
  10. begin
  11. --获取管理员信息
  12. select AdministratorName, AdministratorPhone
  13. into Administrator_Name_n, AdministratorPhone_n
  14. from Administrator
  15. where Administrator.AdministratorAccount = AdministratorAccount_n;
  16. --设置工作编号
  17. Administrator_work_ID_n := to_char(AdministratorUp_time_n + AdministratorAccount_n);
  18. --添加上机信息
  19. dbms_output.put_line( '这是您的工作情况');
  20. insert into administrator_work_list
  21. values(
  22. Administrator_work_ID_n,
  23. AdministratorAccount_n,
  24. Administrator_Name_n,
  25. AdministratorPhone_n,
  26. AdministratorUp_time_n,
  27. AdministratorDown_time_n,
  28. AdministrationDuration_n
  29. );
  30. commit;
  31. end PRO_WORK;

5. 会员充值

  1. create or replace procedure PRO_RECHARGE(
  2. AdministratorAccount_n in Administrator.AdministratorAccount%type,
  3. UserAccount_n in user0.useraccount%type,
  4. User_Recharge_time_n in User_Recharge_List.User_Recharge_Time%type,
  5. User_recharge_amount_n in user_recharge_list.user_recharge_amount%type,
  6. ) is
  7. Recharge_ID_n varchar2(10);
  8. User_name_n varchar2(40);
  9. Administrator_Name_n varchar2(40);
  10. begin
  11. --获取管理员信息
  12. select AdministratorName
  13. into Administrator_Name_n
  14. from Administrator
  15. where Administrator.AdministratorAccount = AdministratorAccount_n;
  16. --获取会员信息
  17. select UserName
  18. into User_name_n
  19. from user0
  20. where user0.useraccount = UserAccount_n;
  21. --设置充值编号
  22. Recharge_ID_n := to_char(UserAccount_n+ 'cz' + AdministratorAccount_n);
  23. --添加上机信息
  24. dbms_output.put_line( '这是您的充值情况');
  25. insert into User_Recharge_List
  26. values(
  27. Recharge_ID_n,
  28. UserAccount_n,
  29. AdministratorAccount_n,
  30. User_name_n,
  31. Administrator_Name_n,
  32. User_Recharge_time_n,
  33. User_recharge_amount_n
  34. );
  35. commit;
  36. --修改会员的余额信息
  37. update user0 set user0.userbalance = user0.userbalance_n + User_recharge_amount_n
  38. where User0.Useraccount = UserAccount_n;
  39. dbms_output.put_line('充值成功,欢迎下次充值!!!');
  40. commit;
  41. end PRO_RECHARGE;

6. 维修电脑

  1. create or replace procedure PRO_MAINATION(
  2. AdministratorAccount_n in Administrator.AdministratorAccount%type,
  3. PC_ID_n in computer.pc_id%type ,
  4. Maintain_Content_n in maintain_list.maintain_content%type,
  5. PC_maintain_Money_n in maintain_list.pc_maintain_money%type,
  6. Maintain_time_n in maintain_list.maintain_time%type
  7. ) is
  8. PC_maintain_ID_n varchar2(10);
  9. begin
  10. --设置维修编号
  11. PC_maintain_ID_n := to_char('wx' + AdministratorAccount_n + Maintain_time_n);
  12. --添加维修信息
  13. dbms_output.put_line( '这是您的工作情况');
  14. insert into administrator_work_list
  15. values(
  16. PC_maintain_ID_n,
  17. PC_ID_n,
  18. AdministratorAccount_n,
  19. Maintain_Content_n,
  20. PC_maintain_Money_n,
  21. Maintain_time_n
  22. );
  23. commit;
  24. end PRO_MAINATION;

7. 更新管理员

  1. create or replace procedure PRO_ADMINISTRATER(
  2. AdministratorAccount_n in administrator.administratoraccount%type,
  3. AdministratorID_n in administrator.administratorid%type,
  4. AdministratorAge_n in administrator.administratorage%type,
  5. AdministratorName_n in administrator.administratorname%type,
  6. AdministratorPassword_n in administrator.administratorpassword%type,
  7. AdministratorQQ_n in administrator.administratorqq%type,
  8. AdministratorWechat_n in administrator.administratorwechat%type,
  9. AdministratorProfession_n in administrator.administratorprofession%type,
  10. AdministratorPhone_n in administrator.administratorphone%type,
  11. AdministratorSex_n in administrator.administratorsex%type,
  12. AdministratorAddress_n in administrator.administratoraddress%type,
  13. AdministratorRight_n in administrator.administratorright%type,
  14. is_change in int
  15. ) is
  16. begin
  17. --1 表示为插入,0 表示为修改
  18. if is_change = 1 then
  19. insert into administrator
  20. values(
  21. AdministratorAccount_n,
  22. AdministratorID_n,
  23. AdministratorAge_n,
  24. AdministratorName_n,
  25. AdministratorPassword_n,
  26. AdministratorQQ_n,
  27. AdministratorWechat_n,
  28. AdministratorProfession_n,
  29. AdministratorPhone_n,
  30. AdministratorSex_n,
  31. AdministratorAddress_n,
  32. AdministratorRight_n,
  33. );
  34. else
  35. update administrator set
  36. AdministratorAccount = AdministratorAccount_n,
  37. AdministratorID = AdministratorID_n,
  38. AdministratorAge = AdministratorAge_n,
  39. AdministratorName = AdministratorName_n,
  40. AdministratorPassword = AdministratorPassword_n,
  41. AdministratorQQ = AdministratorQQ_n,
  42. AdministratorWechat = AdministratorWechat_n,
  43. AdministratorProfession = AdministratorProfession_n,
  44. AdministratorPhone = AdministratorPhone_n,
  45. AdministratorSex = AdministratorSex_n,
  46. AdministratorAddress = AdministratorAddress_n,
  47. AdministratorRight = AdministratorRight_n,
  48. where administrator.AdministratorAccount = AdministratorAccount_n;
  49. end if;
  50. commit;
  51. end PRO_ADMINISTRATER;

8. 更新电脑

  1. create or replace procedure PRO_COMPUTER(
  2. PC_ID_n in computer.pc_id%type,
  3. PC_Gpu_n in computer.pc_gpu%type,
  4. PC_CPU_n in computer.pc_cpu%type,
  5. PC_Display_n in computer.pc_display%type,
  6. PC_Keyboard_n in computer.pc_keyboard%type,
  7. PC_charge_grade_n in computer.pc_charge_grade%type,
  8. PC_STATE_n in computer.pc_state%type,
  9. is_change in int
  10. ) is
  11. PC_STATE_1_n int;
  12. begin
  13. PC_STATE_1_n := 0;
  14. --1 表示为插入,0 表示为修改
  15. if is_change = 1 then
  16. insert into computer
  17. values(
  18. PC_ID_n,
  19. PC_Gpu_n,
  20. PC_CPU_n,
  21. PC_Display_n,
  22. PC_Keyboard_n,
  23. PC_charge_grade_n,
  24. PC_STATE_1_n,
  25. PC_STATE_n
  26. );
  27. else
  28. update computer set
  29. PC_ID = PC_ID_n,
  30. PC_Gpu = PC_Gpu_n,
  31. PC_CPU = PC_CPU_n,
  32. PC_Display = PC_Display_n,
  33. PC_Keyboard = PC_Keyboard_n,
  34. PC_charge_grade = PC_charge_grade_n,
  35. PC_STATE_1 = PC_STATE_1_n,
  36. PC_STATE = PC_STATE_n
  37. where computer.pc_id = PC_ID_n;
  38. end if;
  39. commit;
  40. end PRO_COMPUTER;

9. 更新会员

  1. create or replace procedure PRO_USERS(
  2. UserAccount_n in user0.useraccount%type,
  3. UserID_n in user0.userid%type,
  4. UserAge_n in user0.userage%type,
  5. UserName_n in user0.username%type,
  6. UserPassword_n in user0.userpassword%type,
  7. UserBalance_n in user0.userbalance%type,
  8. UserPhone_n in user0.userphone%type,
  9. UserQQ_n in user0.userqq%type,
  10. UserWechat_n in user0.userwechat%type,
  11. UserProfession_n in user0.userprofession%type,
  12. UserSex_n in user0.usersex%type,
  13. UserAddress_n in user0.useraddress%type,
  14. UserGrade_n in user0.usergrade%type,
  15. is_change in int
  16. ) is
  17. begin
  18. --1 表示为插入,0 表示为修改
  19. if is_change = 1 then
  20. insert into user0
  21. values(
  22. UserAccount_n,
  23. UserID_n,
  24. UserAge_n,
  25. UserName_n,
  26. UserPassword_n,
  27. UserBalance_n,
  28. UserPhone_n,
  29. UserQQ_n,
  30. UserWechat_n,
  31. UserProfession_n,
  32. UserSex_n,
  33. UserAddress_n,
  34. UserGrade_n
  35. );
  36. else
  37. update user0 set
  38. UserAccount = UserAccount_n,
  39. UserID = UserID_n,
  40. UserAge = UserAge_n,
  41. UserName = UserName_n,
  42. UserPassword = UserPassword_n,
  43. UserBalance = UserBalance_n,
  44. UserPhone = UserPhone_n,
  45. UserQQ = UserQQ_n,
  46. UserWechat = UserWechat_n,
  47. UserProfession = UserProfession_n,
  48. UserSex = UserSex_n,
  49. UserAddress = UserAddress_n,
  50. UserGrade = UserGrade_n
  51. where user0.UserAccount = UserAccount_n;
  52. end if;
  53. commit;
  54. end PRO_USERS;

触发器

会员等级变换

  1. CREATE OR REPLACE TRIGGER TRI_POINTS
  2. after insert
  3. on Bill_List
  4. for each row
  5. declare
  6. pragma autonomous_transaction;
  7. Grage_n user0.usergrade%type;
  8. comsume_n bill_list.user_consume%type;
  9. begin
  10. --获取会员等级
  11. select user0.usergrade into Grage_n
  12. from user0
  13. where user0.useraccount=:new.useraccount;
  14. --获取会员消费金额
  15. select sum(bill_list.user_consume + bill_list.user_other_consume) into comsume_n
  16. from bill_list
  17. where bill_list.bill_id=:new.bill_id;
  18. --计算等级
  19. if comsume_n>600 and comsume_n<1400 then Grage_n:='银卡';
  20. elsif comsume_n>1400 and comsume_n<2200 then Grage_n:='金卡';
  21. elsif comsume_n>2200 then Grage_n:='钻石';
  22. else Grage_n:='普通';
  23. end if;
  24. --更新会员等级
  25. update user0
  26. set user0.usergrade=Grage_n
  27. where useraccount =:new.useraccount;
  28. commit;
  29. end TRI_POINTS;

余量不足提醒

  1. CREATE OR REPLACE TRIGGER TRI_computer
  2. after update
  3. on computer
  4. for each row
  5. declare
  6. shu int;
  7. begin
  8. select count(computer.pc_id)
  9. into shu
  10. from computer
  11. where computer.pc_state_1 = 0;
  12. if shu <5 then
  13. dbms_output.put_line('当前空闲电脑仅有 '||to_char(shu) || ' 台!!!');
  14. end if;
  15. end TRI_computer;
标签: sql 数据库开发

本文转载自: https://blog.csdn.net/qq_53436105/article/details/125774914
版权归原作者 花逝、浅笑 所有, 如有侵权,请联系我们删除。

“网吧管理系统数据库设计”的评论:

还没有评论