news 2026/4/28 21:18:04

基于C语言+MySQL实现(控制台)图书馆借书系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于C语言+MySQL实现(控制台)图书馆借书系统

图书馆借书系统

第 1 章 概述

图书馆借书系统实现图书管理功能,用户分两类,一类是管理员,一类是普通借阅者,管理员只能有一个,借阅者需要注册,由管理员通过验证后,才能登陆到本系统进行书籍的查询和借阅。

1.1 开发图书馆借书系统的目的和意义

通过程序设计实训,达到以下目的:

(1) 熟练掌握 C 语言的各种数据类型、运算符、表达式,各种程序控制结构,各种数据组织方式,文件的读和写,结构化编程,以及各种程序设计基本思想;

(2) 能够根据具体问题选择使用合适的数据类型、存储结构、控制结构和基本算法;

(3) 初步了解软件开发中需求分析、系统设计、程序测试、项目管理、编码风格等基本流程和规范;

(4) 培养自觉运用程序化思维分析问题、解决问题的习惯。

1.2 管理员的功能设计

管理员的工作有:新书信息的录入,浏览,查询,修改和删除的功能,借阅用户通过验证;借阅者的功能:能够查询相关书籍当前的状态,并借阅,同时要根据借阅的免费时间(30 天)的规定进行超时借阅的费用缴纳。

图书信息保存在文件中,再保存在结构体数组中,做到持久化存储。对图书信息的增删改都是基于文件进行操作。图书信息查询做到字符串模糊匹配。用户账号信息保存在文件中,再保存到结构体数组中,做到持久化存储。

管理员的功能模块:

(1)图书信息录入;

(2)图书信息浏览;

(3)图书信息查询;

(4)图书信息删除;

(5)图书信息修改;

(6)用户账号管理。

1.3 普通用户的功能设计

借阅者需要注册,由管理员通过验证后,才能登陆到本系统进行书籍的查询和借阅。

在图书归还中有缴纳延期费用的设置,需要由借阅者将超期还书费用缴纳。用户登录创建 COOKIE。借阅信息保存文件和结构体数组,做到持久化存储。

普通用户的功能模块:

(1)查询图书;

(2)借阅图书;

(3)当前借阅状态;

(4)图书归还;

1.4 采用的数据结构和算法

程序可分为函数声明板块,全局变量声明板块,主函数板块,系统函数板块,功能函数板块。函数之间相互调用,结构严谨。

采用文件和结构体数组结合,保存数据。每次打开主菜单重新读取数据,确保经过文件修改后文件数据与结构体数组数据一致。使用数据直接从结构体数组中读取,保证了数据的持久化存储。

1.5 创新点和特色

用户体验佳:操作页面可供用户自由切换背景色,人性化处理,用户选择选项后直接跳转,不需要按 enter 键,大部分页面按 ESC 键能返回上级页面。

用户登录创建 COOKIE 信息,便于区别不同用户,加强安全验证。报错信息以 HTTP 状态码形式返回,方便用户了解当前操作由何种原因造成的。

文件以 MySQL 数据便形式存储数据,方便读写和查询,多个文件之间拥有相同字段。借阅图书信息文件包含借阅者用户名和借阅书的书号,再用书号查询图书信息文件,得到完整图书信息反馈给用户。

背景色函数 BackgroundColor()支持设置随机背景色,用户在任何页面按 Tab 键都可以切换背景色。

简易时间戳函数 long Timestamp(char time[])模拟生成时间戳。能返回一个时间字符串相对于 1800-01-01 经过的整型数据天数,用于根据时间段查询图书,图书借阅天数计算。

第 2 章 系统分析

基本的业务流程包括用户打开程序,选择管理员登录或用户登录,进入主菜单,主模块函数如图 2-1。

图 2- 1 主模块函数

管理员主菜单函数,如图 2-2,图书管理系统模块包括图书信息录入函数,图书信息浏览函数,图书信息查询函数,图书信息删除函数,图书信息修改函数。用户账号管理函数。

图 2- 2 图书管理系统模块子函数

普通用户主菜单函数,如图 2-3,图书借书系统模块包括查阅图书,借阅图书,图书借阅状态,图书归还。

图 2- 3 图书借书系统模块子函数

功能模块函数如图 2-4。

图 2- 4 功能模块函数

第 3 章 设计与实现

3.1 系统流程

系统流程如图 3-1。

图 3-1 程序流程图

3.2 数据库表结构

用户信息数据表如表 3-1(userinfo.txt):

#

Name

Type

Collation

Null

Default

Comments

Extra

1

username

varchar(55)

utf8_german2_ci

No

None

用户名

2

password

varchar(55)

utf8_german2_ci

No

None

密码

3

age

varchar(10)

utf8_german2_ci

Yes

NULL

年龄

4

sex

varchar(10)

utf8_german2_ci

Yes

NULL

性别

5

contact

varchar(55)

utf8_german2_ci

Yes

NULL

联系方式

6

status

int(11)

Yes

NULL

状态(0 代表未通过 1 代表已通过)

表 3-1 用户信息数据表

图书数据表如表 3-2(bookinfo.txt):

#

Name

Type

Collation

Null

Default

Comments

Extra

1

bookNum

varchar(55)

utf8_german2_ci

No

None

书号

AUTO_INCREMENT

2

bookName

varchar(55)

utf8_german2_ci

No

None

书名

3

author

varchar(55)

utf8_german2_ci

No

None

作者

4

publishingHouse

varchar(55)

utf8_german2_ci

Yes

NULL

出版社

5

publicshingTime

varchar(55)

utf8_german2_ci

Yes

NULL

出版时间

6

bookPrice

varchar(55)

utf8_german2_ci

Yes

NULL

价格

表 3-2 图书信息数据表

借阅图书数据表如表 3-3(booklend.txt):

#

Name

Type

Collation

Null

Default

Comments

Extra

1

userName

varchar(55)

utf8_german2_ci

No

None

借阅者

2

bookNum

varchar(55)

utf8_german2_ci

No

None

借阅书名

3

startTime

varchar(55)

utf8_german2_ci

No

None

开始时间(YYYY-mm-dd)

表 3-3 借阅图书信息数据表

3.3 关键数据结构

结构体userinfo // 保存所有用户完整信息 { 字符串 username, password,age, sex,contact; 整数 status; };
结构体 bookinfo // 保存所有图书信息 { 字符串 bookNum, bookName, author; // 书号,书名,作者名 字符串publishingHouse, publicshingTime; // 出版社,出版时间 字符串 bookPrice; // 该书的价格 };
结构体 booklend // 保存所有借书信息 { 字符串 userName, bookNum, startTime; };

第 4 章 测试与运行

4.1 主页面测试

进入系统,如图 4-1,

图 4-1 进入系统

Tab 键切换背景色,背景色变成了黄色,如图 4-2,

图 4-2 切换背景色

按 1 进入管理员登录界面,提示输入管理员密码,如图 4-3,

图 4-3 管理员登录界面

按 ESC 键返回首页,测试,如图 4-4,成功返回首页。

按 Tab 键再次切换背景色,这次换成了灰白色,再按 2 进入借阅者登录页面,如图 4-5,

图 4-4 ESC 键返回首页测试结果 图 4-5 借阅者登录界面

4.2 新用户注册和尝试登陆

ESC 键返回首页功能仍然正常,进入借阅者登录界面,按 1 进入新用户注册,如图 4-6,依次输入用户名,密码,确认密码,年龄,性别,联系方式后,提示注册成功,如图 4-7。

图 4-6 新用户注册图 4-7 注册成功

ESC 键返回到借阅者登录页面,按 2 直接登录,依次输入用户名,错误的密码,正确的密码后,提示密码错误,请等待管理员同意用户注册,如图 4-8:

图 4-8 尝试登录

4.3 图书信息管理系统

ESC 键返回首页,按 1 进入管理员登录界面,输入密码 admin 进入图书管理系统主菜单,如图 4-9,

图 4-9 图书信息管理系统

按 1 进入图书信息录入,依次输入书号,书名,作者名,出版社,出版时间,价格后,提示《高等数学》录入成功,如图 4-10,

图 4-10 图书信息录入

按 0 退出,进入主菜单,按 2 进入图书信息浏览,能看到所有的图书信息,如图 4-11,

图 4-11 图书信息浏览 图 4-12 图书信息查询

返回主菜单,按 3 进入图书信息查询,可根据书号,书名,作者,出版社,出版时间查询图书。按 5 选择“根据出版时间查询图书”,输入开始时间和结束时间,可查询到该时间段的所有图书,,如图 4-12。

返回主菜单,按 4 进入图书信息删除,可根据书号,删除该图书,如图 4-13。

返回主菜单,按 5 进入图书信息修改,可根据书号,修改图书信息,这里修改书号为 08 的《高等数学》这本图书的价格为 $40.00,如图 4-14。

图 4-13 图书信息删除 图 4-14 图书信息修改

返回主菜单,按 6 进入用户账号管理,如图 4-15,可以看到刚刚注册的新用户状态显示未通过。按 1 进入账号管理,输入想要操作的“003”,按 1 修改状态为通过。

图 4-15 用户账号管理

返回主菜单再按 ESC,返回首页。

4.4 图书借书系统

按 2 选择借阅者登录,再按 2 选择直接登录,输入账号“newuser”和密码“md5zp0”后,成功登录,进入图书借书系统,如图 4-16。

图 4-16 图书借书系统

查阅图书和管理员图书信息查阅功能类似,可根据书号,书名,作者,出版社,出版时间查询图书。

借阅图书根据书号借阅图书,这里我们借阅书号为 08 的《高等数学》这本书如图 4-17 ,借阅完成后系统提示借阅时间,为当前开始借阅时间。

图 4-17 图书借阅

按 ESC 返回主菜单,按 3 进入图书借阅状态,可看到当前用户所有的图书借阅信息,图书信息下面有该图书借阅时间,如图 4-18,

图 4-18 图书借阅状态

按 ESC 返回主菜单,按 4 进入图书归还,可看到当前用户所有的图书借阅信息,图书信息下面有该图书借阅时间,根据书号归还图书。如果图书借阅天数超过 30 天,会提醒用户请先缴纳逾期费用。如图 4-19,

图 4-19 图书归还

4.5 退出系统

最后按 ESC 键返回主菜单,按 ESC 键返回主页,再次按 ESC 键即可安全退出系统。

第 5 章 总结与心得

5.1 系统改进设想

(1)用户登录信息的改进设想

用户登录系统自动创建 COOKIE 信息,用于区分不同用户。在每个功能执行前,都加上 COOKIE 信息验证,将使系统变得更加安全。让用户登录时选择记住密码,保存 COOKIE 到文件中,可以做到下次免登陆,直接进入系统。退出需要用户安全退出,清除 COOKIE,防止盗用。

(2)输入密码使用暗文

该图书借书系统完成的仓促,如果在用户输入密码时,让密码以暗文形式呈现,防止别人看到用户输入的密码,将变得更加安全。

(3)图书管理系统改进设想

添加功能:图书借阅信息管理。方便管理员查看所有图书借阅信息。

(4)图书借书系统改进设想

用户想要购买书籍,但又怕太贵或者买到的书籍不好看怎么办。添加功能:书籍推荐。可根据图书借阅量和图书价格综合排序,推荐给用户需要的书籍。

5.2 经验和体会

经过本次实训,我获取了很多经验和知识。

首先,一个系统不能用一个函数,一个模块,或者一个文件是实现的,它必定需要很多功能之间相互配合,紧密联系,把重复代码、相同功能部分提取出来,这样使得代码更加简洁明了,便于修改。

其次,代码编写过程中,一定要多加注释,规范的代码更容易让人理解,也便于代码的维护和功能的添加。

还有,对于这个系统而言,一定要站在实用的角度思考问题。先考虑要实现什么样的功能,再思考用什么样的界面去承载这些功能,最后是代码的实现。

最后,在代码编写过程中,我还学会了 c 语言文件的使用,随机数的使用,系统时间的获取等操作,明白了数据要做到持久化存储才让系统变得有意义。

5.3 对程序设计实训如何组织的建议

这种程序实训组织方法就很好,在学期末实训,同学们学习了一学期枯燥乏味的数据结构,有了使用的地方,能让同学们感到程序乐趣所在,真正的喜欢上编程。

但我想,如果有一些新奇的题目让大家做就更好了,这些题目在很多学校的实训题目中大量出现,网上相似代码不尽其数。进尽管要求上允许参考代码,但我观察到很多同学直接复制网上成品,整个实训就变得毫无意义。可以编一些简单点的,新奇的题目,让同学们真正身心投入到这次程序实训中去,我相信这将是一个让每个参与实训的同学有一次大的进步的机会,自己摸索着学习来提升自我。对于新奇的题目,不好解决的话,可以找咱们学院的学长学姐,广泛征集信息,筛选可用的题目,能极大地激发同学们的创新思维。

最后,感谢老师给予的这次机会,让我进步很大。

参考文献

[1] 张先伟等编著. 程序设计基础:C 语言[M]. 清华大学出版社. 2016

[2] 马新娟,张立红等编著. 程序设计基础习题与实验指导:C 语言[M]. 清华大学出版社. 2016

[3] 菜鸟教程. C 文件读写[J/OL]. https://www.runoob.com/cprogramming/c-file-io.html, 2017-08-22 / 2019-07-05

[4] 云端雪. C 语言中获取系统时间[J/OL]. https://www.cnblogs.com/phix/p/7063487.html, 2017-06-22 / 2019-07-05

♻️ 资源

大小:1.20MB

➡️资源下载:https://download.csdn.net/download/s1t16/87404185

注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 21:30:33

低延迟推理关键:精简系统提示词提升VibeThinker响应速度

低延迟推理关键:精简系统提示词提升VibeThinker响应速度 在算法竞赛或数学建模的紧张场景中,每毫秒都至关重要。选手需要的是一个能快速给出清晰解法框架的助手,而不是一个慢吞吞“思考人生”的AI。正是在这样的现实需求下,轻量级…

作者头像 李华
网站建设 2026/4/27 20:57:03

性能压测报告:单节点每秒可处理多少个并发请求

性能压测报告:单节点每秒可处理多少个并发请求 在当前 AI 推理服务日益普及的背景下,如何以最低成本实现高吞吐、低延迟的服务响应,成为开发者最关心的问题之一。尤其是在教育平台、编程辅助工具或轻量级判题系统中,用户对“秒级反…

作者头像 李华
网站建设 2026/4/20 18:09:45

C#调用Python API运行VibeThinker的跨语言集成方案

C#调用Python API运行VibeThinker的跨语言集成方案 在现代AI工程实践中,一个日益突出的矛盾是:最强大的模型往往不在我们主系统的编程语言生态中。比如你正在开发一款面向程序员的桌面解题助手,使用C#构建了流畅的WPF界面和完整的用户管理模块…

作者头像 李华
网站建设 2026/4/27 11:35:29

2.22 关联规则参数调优:最小支持度、最小置信度如何确定?实战经验分享

2.22 关联规则参数调优:最小支持度、最小置信度如何确定?实战经验分享 引言 最小支持度和最小置信度是关联规则挖掘的关键参数,直接影响规则的数量和质量。本文将分享参数调优的实战经验,帮你找到最优参数组合。 一、参数影响分析 1.1 参数对结果的影响 #mermaid-svg-4…

作者头像 李华