基于C+++Mysql实现(WinForm)图书管理系统【100010034】

news2024/11/30 20:34:40

图书管理系统

实验内容、步骤以及结果

做出数据流图和数据字典。

在数据流图和字典的基础上做出 E-R 图(概念结构设计)。

学生:

图书:

管理员:

汇总:

在 E-R 图基础上进行关系模式设计(至少满足 3NF)(逻辑结构设计)。

(图书一共有 4 种状态:

  • 状态 0:在馆内无预订,
  • 状态 1:在馆内有预订,
  • 状态 2:已借出无预订,
  • 状态 3:已借出有预订。)
Book(BookID, Title, Author, Publisher, Pyear, Category, State)

图书(书号,书名,作者,出版社,出版年,分类,状态)

Student(StuID, StuName, Gender, Dept, Class)

学生(学号,姓名,性别,学院,班级)

Librarian(LibID, LibName)

管理员(工号,姓名)

RBorrow(BookID, StuID, BrDate)

预借阅(书号,学号,借阅日期)

RRenew(BookID, StuID, RnDate)

预续借(书号,学号,续借日期)

RReturn(BookID, StuID, RtDate)

预归还(书号,学号,归还日期)

Borrow(BookID, StuID, BrDate)

借阅(书号,学号,借阅日期)

Renew(BookID, StuID, RnDate)

续借(书号,学号,续借日期)

Return(BookID, StuID, RtDate)

归还(书号,学号,归还日期)

根据需求分析中的各种数据请求得出各种视图以及各种约束、规则、触发器脚本描述。

视图:

学生的除密码外的所有信息,供管理员修改。

约束:

  • 所有预订与确认的表中的所有列、书名与作者、学生与管理员姓名为非空;
  • State 只能为 0、1、2、3,默认值为 0.
  • 性别为“男”或“女”。
  • 初始密码为“123456”.

规则:

同一个人不能在一秒之内对同一本书借了还还了借。

触发器:

  • 学生预借阅:判断书此时未被预订,写入预订时间,更新图书状态为已预订;
  • 学生预续借:判断此书已借给相同学生且未被预订,写入续借时间;
  • 学生预归还:判断此书已借给相同学生,写入归还时间;
  • 管理员确认借阅:若在馆内更新相关图书状态为已借出,若已借出则更新为已预订;
  • 管理员确认续借:不更新图书状态;
  • 管理员确认归还:更新图书状态为在馆内。

实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)

开始不会写界面程序,学习了一些 Qt 的操作与语法后逐渐写成,参考:

qmake 编译失败问题:文件路径必须为英文,不能含有中文字符。

Qt 连接 MySQL 驱动出错问题 QMYSQL driver not loaded;

**解决:**更改了 Qt 自带驱动中 libqsqlmysql.dylib 保存路径,install_name_tool -change /usr/local/mysql/lib/libmysqlclient.20.dylib /usr/local/Cellar/mysql/8.0.22_1/lib/libmysqlclient.21.dylib libqsqlmysql.dylib,Windows 中直接将 SQL 的驱动 libmysql.lib 复制粘贴到 C:\Qt\5.12.0\src\plugins\sqldrivers\mysql 即可。

尚未解决的问题:可能是全局静态变量 db 未赋初值的问题,从登录界面退出程序系统会报 L1brary quit unexpectedly。

程序从 Mac 移植到 Windows 上后界面大小不一致,加入判断屏幕分辨率改善。

开发环境(包括语言、平台、所使用数据库的名称以及版本号)

语言:C++

平台:MacOS 11.0, Qt 5.12.0, clang_64bit

Windows 10, Qt 5.12.0, MinGW_64_bit

数据库:华为云 GaussDB

ip: 139.9.119.34;

帐号:s2018303116;

密码:GaussDB@123;

数据库名:library_2018303116。

MySQL 版本号:8.0.18

♻️ 资源

在这里插入图片描述

大小: 37.4MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87248373

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

b站黑马的Vue快速入门案例代码——计数器

目录 目标效果: 重点原理: 1.创建Vue实例的时候: 2.v-on——为元素绑定事件 3.v-text——【解析文本用】设置标签的文本值 v-text【简写】为{{}} 实现步骤: 代码部分: 1.计数器模板.html(全是重点&#xf…

【Redis缓存】主从、哨兵、 Cluster集群一锅端,一文带你全了解

Redis主从Redis哨兵Redis Cluster集群公众号:捡田螺的小男孩 \1. Redis 主从 面试官经常会问到Redis的高可用。Redis高可用回答包括两个层面,一个就是数据不能丢失,或者说尽量减少丢失;另外一个就是保证Redis服务不中断。 对于尽量减少数据…

KKALRRQETVDAL,129198-88-5,钙调蛋白激酶底物

Autocamtide 2是钙/钙调蛋白依赖的蛋白激酶II (CaMKII)的高选择性肽底物。 它可以用于测定CaMKII的活力。Autocamtide 2 is a highly selective peptide substrate of calcium/calmodulin-dependent protein kinase II (CaMKII). It can be used in the CaMKII activity assay.…

被天空盒裁剪

一般来说天空盒都是在最后一层,最近发现一个天空盒裁剪的问题 距离放的太远了被裁剪了。 经研究发现是因为平时因为怕摄像机近截面裁剪到近距离的物品,习惯改成0.然后系统会自动改成0.01 只要改成大于0.01的值就可以了,比如默认的0.3.就会…

web网页设计期末课程大作业:旅游网页主题网站设计——中国风的温泉酒店预订网(13页)HTML+CSS+JavaScript

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

中高频多因子库存储最佳实践

1. 概述 因子挖掘是量化交易的基础。随着量化交易竞争的加剧,量化投资团队需要处理大量因子。在许多情况下,因子数据量甚至会远远超过高频的行情数据量。以 5,000 只股票 10,000 个因子为例,一年的 10 分钟线数据量为 2.3TB,1分钟…

卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。

1.史上最快比赛用球 本届世界杯的官方比赛用球名为“旅程(Al Rihla)”,由于重量很轻,因此在空中的飞行速度比以往任何一届世界杯的比赛用球都快。 “旅程”的球体表面由20个名为SPEEDSHELL的纹理聚氨酯球面材料模块组成&#xf…

一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别

目录 互相关运算定义 互相关运算图示 互相关运算完整计算示例 卷积数学定义 卷积运算图示 卷积与互相关运算区别 深度学习中的卷积为何能用互相关运算代替 互相关运算定义 在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上…

粤嵌实训(笔记)

目录 1. LCD换自己喜欢的颜色 2. LCD换个图案 3. LCD换张图片 4.网线登录 ifconfig eth0 192.168.5.9 5.触屏电子相册 6.网络编程(TCP通信) 7.网络编程(UDP通信) 说实话,对于这个粤嵌的实训,真的有很多想吐槽的地方,以下就是粤嵌给的一块…

python 修改 网页 navigator 的属性的值

def init_js(page: Page, phone: str) -> Page:#修改 网页 navigator 的属性的值function fakeNav(key, value) {Object.defineProperty(navigator, key, {value: value,writable: false});}js_device_memory ffakeNav("deviceMemory", {gen_android_memory(phon…

Python测试题

目录 题目一:猜数字游戏 题目二:实现一个函数可判断一个数字是否为质数。 题目三:实现一个函数可判断一个数字是否为回文数。 题目四:编写程序实现中美汇率转换。 题目五:球体100米落地弹起运算 题目六:使用python建一个简易…

通达信交易接口API获取数据源码分享

在通达信交易接口下单之前,如何去了解快速获取交易数据呢?要是即使下单了,也不知道如何去查询,然后不管不问,等到需要你去止损了,你才回想起来去操作,这是很容易吃亏的做法的。在股票量化交易过…

符号三角形问题(Java)

符号三角形问题(Java) 文章目录符号三角形问题(Java)1、 前置介绍2、算法设计3、程序代码4、算法效率5、参考资料1、 前置介绍 符号三角形定义 如下图所示,符号三角形是由14个“” 号和14个"-"号组成的符号三…

k8s镜像下载不下来?利用 github Action 自己动手一次性解决难题,丰衣足食

docker-image-syncer 无论是在学习k8s还是正式环境部署k8s中,第一步安装k8难倒了各大英雄好汉。原因是k8s 各种组件镜像在谷歌服务器上(k8s.gcr.io),而我们有墙的存在,所以会经常性的下载失败。解决办法是搭梯子,或者是使用其他镜像源。 本…

有符号变量与无符号变量之间的值的转换

1、有符号变量与无符号变量之间的值的转换 程序例子 涉及到的内容是&#xff1a; 有符号变量和无符号变量之间的转换 溢出&#xff08;如何判断&#xff09; #include<stdio.h> char getchar(int x, int y){char c;unsigned int a x;(x y > 10 ) ? (c 1): (c 2…

Linux——I/O复用(select的用法)

一、I/O复用 定义&#xff1a;I/O 复用使得程序能同时监听多个文件描述符&#xff0c;这对于提高程序的性能至关重要。 网络程序在下列情况下需要使用 I/O 复用技术&#xff1a; ◼ TCP 服务器同时要处理监听套接字和连接套接字。◼ 服务器要同时处理 TCP 请求和 UDP 请求。◼ …

RT-Thread的设备模型

RTT内核对象——设备 RT-Thread有多种内核对象&#xff0c;其中设备device就是其中一种。 内核继承关系图如下&#xff1a; 设备继承关系图如下&#xff1a; I/O 设备模型框架 应用程序通过 I/O 设备管理接口获得正确的设备驱动&#xff0c;然后通过这个设备驱动与底层 I/O 硬…

ARM通用中断控制器GIC之中断处理状态机 Interrupt handling state machine

中断有四种状态&#xff1a;inactive&#xff0c;pending&#xff0c;active 和active and pending。而产生中断的方式有两种&#xff0c;一种是通过写pending寄存器&#xff0c;让中断进入pending状态&#xff0c;可以忽略是否真的有物理中断信号&#xff0c;让Distributor将该…

如何构建myquant量化策略?

对于如何构建myquant量化策略这个问题而言&#xff0c;就是获取量化股票接口的基础数据&#xff0c;然后有了基础数据&#xff0c;才能对数据进行加工处理&#xff0c;构建量化策略&#xff0c;进行量化分析&#xff0c;回测和回溯。myquant量化策略主要是基于python进行量化投…

案例实操 | 利用Lambda函数来进行特征工程,超方便的!!

特征工程对于我们在机器学习的建模当中扮演着至关重要的角色&#xff0c;要是这一环节做得好&#xff0c;模型的准确率以及性能就被大大地被提升&#xff0c;今天小编就通过Python当中的lambda函数来对数据集进行一次特征工程的操作&#xff0c;生成一些有用的有价值的特征出来…