当前位置: 首页 > news >正文

C#图书管理系统笔记(残缺版)

1.技术选型和项目说明

说明:本文字教程配套的是B站UP主:面朝星海我心澎湃,针对于作者的视频教程,才有了自己的文字教程,在此致谢,视频教程和文字教程搭配使用,效果更佳;

还是和之前做的那个学生管理系统是一样的,主要使用的就是SQL server数据库2012和我们的这个VS2022,其中很多的代码都是可以复用的;

主要实现的这个功能就是图书管理系统,和之前的类似,之前的是三个权限,分为这个老师,学生和我们的管理员的权限,但是在这个图书管理系统里面,只有我们的这个管理员和普通用户的权限哈;

2.数据库的创建

2.1数据库文件

名字可以自定义,数据库的文件的存放的位置也是可以自定义的:

我的数据库文件和相关的日志文件全部都是存放在了下面的这个文件夹里面去:

image-20250623113842843

2.2管理员表设计

下面的这个就是对于我们的管理员表的创建,包含的是两个字段,一个是我们的ID,还是有个psw是密码的简写,也就是全称password,对于这个数据类型,我更加倾向于使用这个nvarchar类型的;

因为之前做那个学生管理系统的时候,这个设置为varchar之后只会支持这个ASCII编码,但是我们的这个nvarchar是支持这个unicode编码的,这个区别就是我们的这个nvarchar类型的字段里面是允许存在汉字的,但是这个varchar类型的只能使用这个英文字符,如果你使用汉字就会出现问号,这个需要额外的注意一下;

image-20250623114023264

2.3用户表设计

下面的这个就是我们的用户的表的相关的字段的设计:

image-20250623114614140

2.4图书表的设计

image-20250623115046617

2.5借书记录表的设计

image-20250623115032446

数据库的表设计完成

image-20250623115107693

2.6插入一些数据

下面的这个查询的结果就是我们在这个管理员表格和用户表里面插入的这个相关的数据;

image-20250623115434511

3.登录功能

3.1细节处理

这个就是主要对于我们的button的重新的命名处理,方便我们的后期的相关的操作:

下面的这两个选框本来分别的这个默认的名字是button1和button2,但是我们这个地方为了更加方便后面的操作,分别修改成为admin和user,更加容易控制相关的逻辑;

image-20250623143422857

3.2踩了个大坑

我下午创建这个新的textbox的时候,发现这个东西是无法进行缩放的,就是这个默认的特别大,只能左右缩放,无法上下缩放,反正就是非常的bug,我也非常的无语;

之前我的一项的风格就是百度,大概率去到这个csdn里面去找答案,但是灭有结果,我想着要不要新建一个项目,但是感觉完全没有必要啊,将就着用吧;

结果我运行起来的时候,这个东西直接不让我输入,我真的是无语,无奈之下问了豆包,问了两下,就帮我解决了,真的有用诶;

后面我可能需要改变一下自己的这个风格,先使用大模型,然后再去这个百度上面去寻找这个对应的解决的方案,可能这样才是比较正确的,我上午最后一节课,找了很多,但是没有看到我想要的,确实挺失望的,我觉得能不能找到完全取决于自己的方法,还是注意一下吧;

下面的这个就是豆包的解决方案,非常有效,我觉得很不错,遇到类似的问题的同学可以参考一下;

image-20250623151519418

3.3关于字体和文本框大小

这个我之前因为修改了这个字体的属性,“欢迎登录图书管理系统”,我把这个字体设计的很大,结果我搞其他的这个label的时候这个字体也是非常的大,但是这个显然不是我想要的;

我就发现这个需要我不断的进行微调,因为文本框大,文本小,这个也不好看,文本太大,文本框显示不完全,也不是很好,这个上面花了不少的时间,确实挺烦人的;

我是先测试了一下这个登录的功能,看看这个SQL语句的显示有没有问题;这个方法我做了两个项目都是这样搞得,觉得很不错,推荐下;

image-20250623152233314

3.4SQL语句的三个写法的讨论

在这个UP的视频里面一共是提供了三个不同的写法,我对于这个也是非常的好奇,因为我只知道第一种,剩下的两个我自己都是未曾见过的;

所以我按照UP的方法进行尝试,结果发现在我的环境里面这个并不是等效的,因为我输出这个结果的时候发现是sql和sql2一样,但是sql2和sql3不一样,为了稳妥起见,我是用了第一个方法;

但是对于他们的这个SQL语句,我分别使用这个messagebox对于这个输出的结果进行显示,放在了右上角,我觉得他们是没问任何区别的,但是输出的结果就是说他们不一样;

我是用第一类的写法,也就是sql的写法,这个更加的常用;大家可以在自己的这个环境下面进行测试,看看是不是我自己才有这个情况(我觉得这个可能性不大哈哈);

image-20250623153516459

3.5关于dc对象读取的内容

下面的这个代码我也是写了不止一遍了,但是对于这个里面的每一个对象存储的具体的信息,我始终不是很理解,但是这次的这个直接把这个信息显示出来,才让我理解了一点点眉目;

image-20250623155548621

下面的这个就是我们的读取的结果:

image-20250623155652798

下面的这个是我们的数据库里面的具体的记录:

image-20250623155836915

结合这个读取的结果和我们的数据库里面的具体的记录,大家一定可以发现,实际上这个dr里面存储的更像是我们的集合里面的信息。每一个代表的都是一行数据,因为我们使用的是这个select语句,并且在输入这个信息的时候对于这个名字和密码进行了指定,因此从这个数据库里面进行读取的时候一定是一条数据,也就是一行数据,我们使用这个下标的方式获取的就是每一列的这个具体的属性的信息;

3.6登录的弹窗

实际上我们的这个普通的用户和我们的管理员的代码没有太大的区别,都是从我们的这个文本框里面进行这个数据的获取,然后就是去对于我们的输入信息到数据库里面去查找;

image-20250623160537671

3.7show和showdialog的区别

这个环节介绍一下这个两个空间的区别:

就是当我们的用户成功输入这个用户名和密码的时候,我们肯定是需要跳转到这个新的弹窗里面的对吧,这个时候我们使用的是showdialog的方法;

show就是普通的展示;

showdialog就是我们只能操控这个当前的页面,其他的是不可以的,如果使用这个show方法,在弹出的这个新的页面上面,我们还是可以操作这个原来的登录页面的,这个显然是不现实的,因此我们需要使用这个showdialog的方法;

image-20250623170641027

3.8关于this的说明

因为我们这个就是登录页面,我们进行跳转的时候,登录页面隐藏,这个用户的界面出现,用户操作完成之后再去显示这个登录的页面,这个是他们彼此的联系;

image-20250623171204990

3.9全局变量的处理

在这个项目里面,作者写了一个类里面定义静态变量,这个很不错,因为我是两个项目都做了,我是真切的指导学生管理系统里面的这个参数来回传递的时候是多么的麻烦;

定义的事静态的,如下所示

image-20250623171632053

然后我们在这个登录逻辑里面把这个结果赋值给我们的这个静态变量:dc具体的含义可以看这个教程的3.5小结,里面有详细的解释;

image-20250623171714972

4.管理员界面

4.1管理员欢迎界面

下面的这个控件是menustrip,非常的实用,专门针对于我们的这个用途进行设计的;

image-20250623172116838

4.2管理员页面

image-20250623183729340

下面的这个是进行table方法的定义之后的查询的效果,显示我们的数据库表里面的所有的数据信息:

image-20250623184758005

然后就是基本的添加修改,删除,刷新的这个都实现了,但是针对于这个用户的借书,还书的这个逻辑真的好复杂,不想搞了,直接摆烂了;

我觉得这个图书管理更难,加上这两天一直在搞这个东西,现在真的搞不动了,明天是这个学期的最后一节课,明天能抽到什么题目看造化吧,真的搞不动了;

因为这个借书涉及到你们的这个库存的变动,借出书籍这个数量需要减少,归还之后呢这个数量需要增加,而且这个sql语句更加复杂,有点难为我这个小菜鸡了;

http://www.lryc.cn/news/574440.html

相关文章:

  • 【数据标注师】词性标注2
  • 【AI News | 20250623】每日AI进展
  • 基于 SpringBoot+JSP 的医疗预约与诊断系统设计与实现
  • 华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)
  • leetcode82.删除排序链表中的重复元素II
  • EEG 分类攻略1- theta, alpha, beta和gamma频谱
  • C++语言发展历程-2025
  • python中学物理实验模拟:平抛运动和抛物运动
  • Python csv 模块
  • 数组题解——​轮转数组【LeetCode】
  • 华为云 Flexus+DeepSeek 征文|文案魔盒・Emoji 菌:基于华为云 CCE 集群 Dify 大模型,创意文案智能生成助手
  • 数组题解——​最大子数组和​【LeetCode】(更新版)
  • 黑马程序员苍穹外卖DAY1
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • C指针总结复习(结合deepseek)
  • 深入浅出Node.js后端开发
  • 【TCL 脚本学习 4 -- tcl 脚本 数组定义和使用】
  • 触摸屏(典型 I2C + Input 子系统设备)从设备树解析到触摸事件上报
  • Redis哨兵模式深度解析与实战部署
  • 用 GitHub Issues 做任务管理和任务 List,简单好用!
  • 【图像】ubuntu中图像处理
  • Redis精简总结|一主二从哨兵模式(工作机制)|集群模式|缓存的穿透雪崩击穿
  • NFS服务配置超详细版
  • 第一节 布局与盒模型-Flex与Grid布局对比
  • 考研408《计算机组成原理》复习笔记,第三章(2)——存储器的ROM、RAM(DRAM和SRAM)、磁盘硬盘
  • 鸿蒙容器组件 Row 全解析:水平布局技术与多端适配指南
  • 实现 “WebView2 获取word选中内容
  • Python-1-环境
  • SQLite3 在嵌入式系统中的应用指南
  • 华为云 Flexus+DeepSeek 征文|CCE 集群部署 Dify 平台:【工作流协同高质量知识库】搭建企业级教培行业 Agent 顾问