SQLserver网吧管理系统数据库

发布时间:2025-12-09 19:16:42 浏览次数:4

SQLserver网吧管理系统数据库代码
花了不少时间做,拿走的话吱一声吧~
如果这篇博客对你有帮助的话,欢迎来我的B站空间给视频点个赞支持下博主:
https://space.bilibili.com/38571437

create database NetBarDBgouse NetBarDBcreate table PCInfo(PCId int identity primary key,--计算机编号,主键,自动增长。PCUse int default 0 check (PCUse=0 or PCuse=1),--计算机是否使用,0表示正常,1表示正在使用,不能插入其他值。默认为0。非空PCNote varchar(30) default '这台机器不错',--计算机的描述,默认‘这台机器不错’。)create table cardInfo(cardId int identity primary key,--会员卡编号,主键,自动增长。cardNumber varchar(20) not null UNIQUE,--会员号,系统中不能出现重复的会员号。非空cardPassword varchar(20) NOT NULL CHECK(LEN(cardPassword)>=6),--会员密码,密码必须大于或等于6位。非空。cardBalance INT NOT NULL DEFAULT 50,--卡上的余额,在办卡时,需充值50元。非空。transactTime DATETIME NOT NULL default getdate() --办卡的时间,默认为当前时间。非空。)create table recordInfo(recordId int identity primary key,--记录编号,主键,自动增长。。cardId int not null FOREIGN KEY REFERENCES cardInfo(cardID),--会员卡编号,外键引用cardInfo的cardInfo。非空。PCId INT FOREIGN KEY REFERENCES PCInfo(PCID),--计算机编号,外键引用PCInfo的PCId。非空。beginTime DATETIME DEFAULT GETDATE(), --开始(上机)时间。默认为当前时间。endTime DATETIME,--结束(下机)时间。上机时间应该小于下机时间free INT CHECK(FREE>=0)--上机费用,费用必须大于或等于0。)ALTER TABLE recordInfoADD CONSTRAINT CK_recordInfo_endTime CHECK(beginTime<endtime)INSERT INTO cardInfoSELECT '023-001','123456',50,'2009-05-11 10:00:00.000' UNION ALLSELECT '023-002','123456',50,'2009-05-12 10:00:00.000' UNION ALLSELECT '023-003','123456',50,'2009-05-13 10:00:00.000' UNION ALLSELECT '023-004','123456',50,'2009-05-14 10:00:00.000';--1、 插入计算机信息并查询所有计算机信息如图所示。INSERT INTO PCInfoSELECT 0,'左边第一台' UNION ALLSELECT 0,'左边第二台' UNION ALLSELECT 0,'左边第三台' UNION ALLSELECT 0,'左边第四台' UNION ALLSELECT 0,'这台机器不错'; --2、 将4号会员密码修改为‘000001’,使用update语句update cardInfo set cardPassword='000001' WHERE cardId=4--3、 为4号会员冲值20元,并查询余额。 --充值时,需将会员的余额修改为:原有余额+充值金额。update cardInfo set cardBalance=CardBalance+20 where cardId=4 --实现:上机,换机,下机功能。--1、 实现4号会员在1号计算机上机。--(1) 验证会员号或密码是否正确。(根据会员号和密码查询)。SELECT cardPassword FROM cardInfo WHERE cardId=4--(2) 查询4号会员的余额是否大于0。(查询会员余额)。SELECT cardBalance FROM cardInfo WHERE cardId=4--(3) 查询4号会员卡是否在上机(查询记录表中卡号等于4且下机时间为空的记录)。SELECT * FROM recordInfo WHERE cardId=4 and endTime=0--(4) 查询1号机器是否为空闲。(查询计算机状态)。SELECT PCUse FROM PCInfo WHERE PCId=1--(5) 修改1号机器为使用状态。(修改计算机状态为1)。UPDATE PCInfo SET PCUse=1 WHERE PCId=1--(6) 插入上机记录。(SQL语句如下)。insert into recordInfo values(4,1,'2009-05-20 08:00:00.000',null,0)--说明:插入上机记录时,下机时间为空,上机费用为0,效果如图6所示。--2、 实现其他会员的上机--(1) 实现2号会员在2号计算机上机UPDATE PCInfo SET PCUse=1 WHERE PCId=2insert into recordInfo values(2,2,'2009-05-20 09:00:00.000',null,0)--(2) 实现3号会员在3号计算机上机UPDATE PCInfo SET PCUse=1 WHERE PCId=3insert into recordInfo values(3,3,'2009-05-20 10:00:00.000',null,0)--3、 将4号会员从1号计算机换到4号计算机--(1) 判断4号计算机的状态。select PCUse FROM PCInfo WHERE PCId=4--(2) 修改1号计算机状态(将1号计算机改为空闲)。UPDATE PCInfo SET PCUse=0 WHERE PCId=1--(3) 修改4号计算机状态(将4号计算机改为使用)。UPDATE PCInfo SET PCUse=1 WHERE PCId=4--(4) 修改计算机编号为4且下机时间为空的上机记录(SQL语句如下)。update recordInfo set PCId=4 where PCId=1 and endTime is null--4、 4号计算机下机--(1) 得到上机记录select * from recordInfo where PCId= 4 and endTime iS null--(2) 修改机器状态(将4号机器的状态修改为空闲)。UPDATE PCInfo SET PCUse=0 WHERE PCId=4--(3) 修改下机时间(修改第二步得到的记录的下机时间)。update recordInfo set endTime = '2009-05-20 10:00:00' where recordId=1--(4) 计算上机费用,上机费用=上机时间*2 UPDATE recordInfo set free=(datediff(hh,beginTime,endTime))*2 where recordId =1--(5) 修改记录表的上机费用。UPDATE recordInfo set free=(datediff(hh,beginTime,endTime))*2 where recordId =1--(6) 扣除上机费用。UPDATE cardInfo set cardBalance = cardBalance-4 from cardInfo where cardId=4--1、 统计记录信息(要求按记录编号降序排列)--所有上机记录select recordId '记录编号' ,cardNumber '卡号' ,a.PCId '机器编号',a.beginTime '上机时间', a.endTime '下机时间' ,a.free as '上机费用' from recordInfo as a join cardInfo as b on a.cardId =b.cardIdjoin PCInfo as c on c.PCId = a.PCId order by a.recordID desc--Ø 所有正在上机的记录select *from recordInfo where endTime is null order by recordID desc --Ø 所有已下机的记录 select *from recordInfo where endTime is not null order by recordID desc --2、 收入统计--上机总费用 SELECT sum(free) AS '上机总费用' FROM recordInfo--单次上机最大金额select MAX(free) AS '单次上机最大金额' from recordInfo--3、 会员统计--所有会员信息(按余额,升序排列)select* from cardInfo order by cardBalance asc--余额总数select sum(cardBalance) from cardInfo--欠费会员详细信息以及最后一次上机信息select * from cardInfo where cardBalance<0select top 1 *from recordInfo order by recordId desc--4、 计算机信息统计--当前空闲计算机select * from PCInfo where PCUse=0--使用次数最多的计算机 (使用count函数)select TOP 1 PCId from recordInfo GROUP BY PCId ORDER BY COUNT(1) DESCselect COUNT(PCId),PCId from recordInfo GROUP BY PCId--实现:导出脚本,分离数据库,关闭工具。select*from PCInfoselect*from cardInfoselect*from recordInfo
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477