图书管理系统 C语言链表实现 学校大作业功能齐全(书籍信息以及用户信息保存在附带的txt文件中)

 不废话直接附上源代码下载链接(一杯奶茶钱就能换一套图书管理系统哦~):
C语言链表实现图书管理系统功能齐全(书籍信息以及用户信息保存在附带的txt文件中)-C文档类资源-CSDN文库

抱歉本人总是忘记看csdn的消息,导致错过了部分朋友的问题呜呜呜T^T,大家在使用过程中遇到的问题可以先在私信里问我,如果我长时间不回复可以加我微信jsjia123213来问,备注一下自己的csdn的id就好啦~问题我都会尽量解决!

以下是介绍:

1.开发环境:Dev-C++;

    2.基本原理和技术:

       1)程序中大量用到了switch-case结构,用来对操作进行选择;

       2)以链表为容器,文本文档用于记录用户信息以及书籍信息,每次运行程序时要将文本中的信息读取存入链表中,运行结束时将信息存回文本文档,如此便完成了数据的增添删除修改等功能。

       3)在程序中用到了不少system(“cls”),可以让程序看起来有跳转的感觉,从而更加像一个软件。也解决了输入过程中窗口内文本过于冗长而体验不佳的问题。

       4)除了增删查改外的其他功能,其实都源于最基本的增删查改功能,比如借书和还书的过程中,都需要先对书进行查询,找到相应书籍后再进行数据的修改处理。

       5)用到了很多结构体,其中包括用户数据的结构体(存放各种属性数据),用户链表结点的结构体(存放数据结构体和指针);书的数据结构体(存放各种属性数据),书的链表结点的结构体(存放数据结构体和指针)等等。

       6)由于有些书名很长,而且其中的符号不易打出来,故该程序中的查找都是输入书名或者ISBN中的关键字即可的类似模糊搜索的查找,为了实现这个功能,我除了需要把strcmp()换成strstr()外,还设计了一个可以存放20个书的结点结构体指针的结构体,用来返回查找时符合要求的所有书籍的地址。

       7)通过合理运用exit(0)和return,在每次输入有误时会进行程序的直接退出或者直接跳出函数的操作,从而提升了代码的容错性,更加人性化,不易崩溃。

二、程序概要设计:

1.各种功能完成情况:

1)图书管理员

(1)录入:增加一本图书信息;

(2)删除:删除某一本图书的信息;

(3)修改:修改某一本图书的信息;

(4)查询:根据书名或图书ISBN等查询图书信息(可选择:简单条件查询,组合条件查询等);

(5)排序:根据书名或入库时间等信息进行排序,提高查找和维护性能;

(8)统计:统计所有的借出的图书数目,即:所有图书借阅量之和;

(9)输出:输出所有图书的所有信息,要求格式清晰,方便查看;

2)读者身份

(1)读者账号注册;

(2)查询:根据书名或图书ISBN等查询图书信息(可选择:简单条件查询,组合条件查询);

(3)排序:根据书名或入库时间等信息进行排序,提高查找和维护性能;

(4)借书:借出一本书,该书的借阅量增加一本;

(5)还书:还回一本书,该书的借阅量减少一本;

(6)统计:统计所有的借出的图书数目,即:改读者借阅量之和;

扩展功能要求:

(1)导入:把用户信息和图书信息从数据文件或数据库(可以Access数据库)读入程序;

(2)导出:把用户信息和图书信息导出到数据文件或数据库(可以Access数据库)中保存。

三、程序详细设计-关键代码分析

图书管理员身份可以完成以下操作:

(1)录入:

分析:录入的过程其实就是给书的链表添加新结点的过程,及创建新节点,录入数据域中的所需数据,插入新节点。最后保存在文件中即可。

关键代码:

void insertbnode(blink headnode,books data)
{
	blink newnode=creatbnode(data);
	blink pmove=headnode;
	while(pmove->bnext!=NULL)
	{
		pmove=pmove->bnext;
	}
	pmove->bnext=newnode;
}

(2)删除:

分析:删除节点通过链表先找到所有符合要求的书籍,选择后将指定书籍节点进行删除即可,对指定节点的删除如下。

关键代码:

void deletnode(blink headnode,char *bookname)
{
	blink posleftnode=headnode;
	blink posnode=headnode->bnext;
	while(posnode!=NULL&&strcmp(bookname,posnode->data.name))
	{
		posleftnode=posnode;
		posnode=posnode->bnext;
	}
	posleftnode->bnext=posnode->bnext;
	free(posnode);
	return;
}

还有一些在这里不再赘述,详见设计报告

直接展示一些运行效果图:

 

 

 

 

 

 

 

总之,功能完成的很完整

最后再贴一下下载链接:

C语言链表实现图书管理系统功能齐全(书籍信息以及用户信息保存在附带的txt文件中)-C文档类资源-CSDN文库

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS12315

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值