机房管理系统(数据库课设)

 1.课设要求描述  

●实现机房、上机类型等基本信息的管理;

●实现机器信息、管理人员信息的管理;

●实现上机管理;

●实现收费管理;

●创建触发器,实现下机时自动计算此次上机的时间和费用;

●创建存储过程统计各机房的上机时间和上机费用;

●创建存储过程统计指定时间段内各管理人 员的收费合计;

●建立数据库相关表之间的参照完整性约束。

2.制作思路及基础讲解

此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之前只学过Java,MySQL/SQLServer。所以此项目没有前端界面,只通过命令行的形式来操作该系统,制作思路:首先是数据库作为存储数据的地方,编写根据课设要求编写好对应的建表语句和存储过程,视图,触发器等。然后编写好对应系统的Java代码,最后通过JDBC将Java代码与数据库连接起来。

  部分学生可能学的比较浅,不理解mysql,sqlserver,java,c等一堆名词之间的含义。之前有同学找我做过这类似的课设。问的问题都比较抽象,例如用mysql做一个系统之类的。在此简单说一下我对于这些的理解,mysql,sqlserver都是数据库的一种,只不过是外国的所以都是用英文表示,大部分上课不听的同学看到这一堆英文都会比较懵,其实只需简单把数据库(mysql,SQLServer)理解成存储数据的地方,而java,c等语言是用来编写系统逻辑功能的代码。当然在数据库中的存储过程或者触发器什么的,这些功能也能在代码编程语言中通过特定的逻辑实现类似的功能,只不过我们在数据库中写好的话,免去了Java中代码的编写量,并且查询时速度会更快。

3.使用工具及语言详解

不同的学校要求不同,有的是sqlserver,有的是mysql,但其实这两者的区别在我看来区别不大,大部分的语句格式都是一样的,所以我选择了我熟悉的一种,mysql来进行编写。在语言方面,我大一的时候学过c,但是当时没有认真听,后来也慢慢都忘了,大二时学了Java,并且之后又系统性的学了一遍,所以选择来用Java语言编写。对于编译器我使用的是IDEA,版本随意,这个不影响,但需要注意IDEA不是免费的,可以去试用30天,也可以自行网上找方法安装破解版。数据库可视化工具使用的是Navicat,这个工具同样也不是免费的,但提供14天试用期,有长期需求也需要各位自行找破解版。

PS:这里又提到两个新名词,IDEA和Navicat,这不是编程语言,而是工具的名字,大家需要慢慢熟悉这些名词,简单来说就是他能让你的编程之路变得更顺畅,提供了可视化的界面,不需要一直在黑窗口中输入代码

4.数据库建表代码(完整数据库文件请到主页资源处下载)

-- 机器信息表
CREATE TABLE IF NOT EXISTS `Machines` (
  `MachineID` INT AUTO_INCREMENT PRIMARY KEY,
  `RoomID` INT NOT NULL,
  `MachineName` VARCHAR(50) NOT NULL,
  FOREIGN KEY (`RoomID`) REFERENCES `Rooms`(`RoomID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 管理人员信息表
CREATE TABLE IF NOT EXISTS `Managers` (
  `ManagerID` INT AUTO_INCREMENT PRIMARY KEY,
  `ManagerName` VARCHAR(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 上机管理表
CREATE TABLE IF NOT EXISTS `Sessions` (
  `SessionID` INT AUTO_INCREMENT PRIMARY KEY,
  `MachineID` INT NOT NULL,
  `TypeID` INT NOT NULL,
  `ManagerID` INT NOT NULL,
  `StartTime` DATETIME NOT NULL,
  `EndTime` DATETIME,
  `Duration` INT,
  `Cost` DECIMAL(10, 2),
  FOREIGN KEY (`MachineID`) REFERENCES `Machines`(`MachineID`),
  FOREIGN KEY (`TypeID`) REFERENCES `SessionTypes`(`TypeID`),
  FOREIGN KEY (`ManagerID`) REFERENCES `Managers`(`ManagerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


-- 统计各机房的上机时间和上机费用
CREATE PROCEDURE `StatRoomUsage`()
BEGIN
  SELECT `RoomID`, SUM(`Duration`) AS TotalDuration, SUM(`Cost`) AS TotalCost
  FROM `Sessions`
  JOIN `Machines` USING (`MachineID`)
  GROUP BY `RoomID`;
END

5.Java代码思路及结构

此处只放部分代码截图

 6.效果运行实例 

 

 附带sql文件及源码,需要后台私信    

  • 28
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值