图书管理系统——C语言课程设计

这篇具有很好参考价值的文章主要介绍了图书管理系统——C语言课程设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、功能描述

  1. 新进图书基本信息的输入
  2. 图书借本信息的查询
  3. 对撤销图书的删除
  4. 办理借书手续
  5. 办理还书手续
  6. 提供使用文件方式存储数据

2、设计思想

  1. 新进图书的输入,首先要输入要添加的书的基本信息,如:书名、书号、价格、作者,再通过fprintf()函数将输入的信息写入文件中
  2. 图书信息的查询可分为两种方式,第一是查询文件中的全部数据,采用的方法是利用fscanf()函数读出文件中的数据到指定的变量,再将数据全部打印出来。第二是查询用户输入的书名的指定的数据,采用的方法是先输入要查询的书的名字,再用fscanf()函数将文件中的内容读取到指定的变量,再对其与输入的书名一一比较,相同则打印出该书的全部信息(本系统默认所有的书名不能相同)
  3. 图书信息的删除采用的方法是输入要删除的书的信息,然后通过fscanf()函数读取出文件中的所有信息,并将其存放再预先定义好的数组中,再利用循环对存储的数据的书名和输入的书名比对,直到找到对应的图书信息,并删除。删除后数组中存储该数据的位置就空出了一位,所以需要将后面的数据依次向前移动一位。(方法是将数组中要删除的信息的下一个元素的值赋给要删除的那个元素,依次类推,直到最后一个元素完成前移)删除完成之后,将剩下的数据采用fprintf()函数再次存入文件中
  4. 办理借书手续采用的方式fscnf()函数将文件内容读取出来,再与输入的要借的书名一一比对,找到对应的书之后,需要输入借书人的姓名、学号、和性别,并将这些信息写在图书信息的后面,并将图书状态改为“已借出”
  5. 办理还书手续与借书手续基本相同,只是清除了借书人的信息,并把图书的状态改为“在馆”。

3、界面和执行结果展示

1、主菜单界面:

图书管理系统——C语言课程设计

 2、执行增加新图书界面

图书管理系统——C语言课程设计

 执行的结果展示:代码执行后会自动在D盘的根目录下生成一个book文件夹(这里文件夹的生成位置和名称都可以更改),如果文件夹存在,就不用生成

图书管理系统——C语言课程设计

 3、执行删除操作的界面展示:

图书管理系统——C语言课程设计

执行结果展示 

图书管理系统——C语言课程设计

 4、执行查询图书操作展示:(为了展示效果,这里又增加了两本书)

图书管理系统——C语言课程设计

 图书管理系统——C语言课程设计

5、办理借书手续操作展示:

图书管理系统——C语言课程设计

 执行结果展示:

图书管理系统——C语言课程设计

6、办理还书手续操作展示:

图书管理系统——C语言课程设计

执行结果展示:

图书管理系统——C语言课程设计文章来源地址https://www.toymoban.com/news/detail-490363.html

4、代码展示 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
typedef struct Book{
	char book_name[20];//书名  默认情况下书名不能重复
	char number[20];//书号
	char price[10];//价格
	char auther[20];//作者
	char status[10];//1为在图书馆,0表示已经借出
	char borrow_name[20];//借书人的姓名
	char sex[10];//借书人的性别
	char id[20];//借书人的学号
}Information;

//读取文件行数的函数
int count_lines() {
    int count = 0;
    char c;
    FILE *fp;

    if((fp=fopen("d:\\book.txt","r"))==NULL){
		printf("cannot open file strike any key  exit!");
		exit(1);
	}

    while ((c = fgetc(fp)) != EOF) {
        if (c == '\n') {
            count++;
        }
    }

    fclose(fp);

    return count;
}
//增加新图书
int add(){
	Information book_data;
	FILE *fp;
	int a=1,line;
	if((fp=fopen("d:\\book.txt","a"))==NULL){
		printf("cannot open file strike any key  exit!");
		exit(1);
	}
	line=count_lines();
	while(a){
		printf("请分别输入要添加的书的书名、书号、价格和作者,之间用空格隔开:");
		scanf("%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther);
		memcpy(book_data.status,"在馆",10);//book_data.status=1;
		memcpy(book_data.borrow_name,"无",20);
		memcpy(book_data.sex,"空",10);
		memcpy(book_data.id,"空",20);//book_data.id="空";
		fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);
		fputs("\n",fp);

		printf("是否继续增加新的图书:\n");
		printf("--------------------------\n");
		printf("     1、是     2、否      \n");
		printf("--------------------------\n");
		scanf("%d",&a);
		if(a==2){
			a=0;
			fclose(fp);
		}
	}
	return OK;
}

//删除图书
int deletebook(){
	Information book_data[20];
	char a[20];
	FILE *fp;
	int line;
	line=count_lines();
	fp=fopen("d:\\book.txt","r");
	for(int i=0;i<line;i++){
		fscanf(fp,"%s%s%s%s%s%s%s%s",book_data[i].book_name,book_data[i].number,book_data[i].price,book_data[i].auther,book_data[i].status,book_data[i].borrow_name,book_data[i].sex,book_data[i].id);
	}
	printf("请输入要删除的书籍名称:");
	scanf("%s",a);
	for(int j=0;j<line;j++){
		if(strcmp(a,book_data[j].book_name)==0){
			while(j<line-1){					//此处可能存在错误
				book_data[j]=book_data[j+1];
				j++;
			}
			break;
		}
	}
	fp=fopen("d:\\book.txt","w");
	for(int k=0;k<line-1;k++){
		fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",book_data[k].book_name,book_data[k].number,book_data[k].price,book_data[k].auther,&book_data[k].status,book_data[k].borrow_name,book_data[k].sex,book_data[k].id);
		fputs("\n",fp);
	}
	fclose(fp);
	printf("删除成功!\n");
	return OK;
}

//查询书籍
int search(){
	FILE *fp;
	Information book_data;
	char b[20];
	int a,line;
	line=count_lines();
	printf("-------------------------------------------------\n");
	printf("   1、查询全部图书信息     2、查询指定图书信息   \n");
	printf("-------------------------------------------------\n");
	printf("请输入查询方式:");
	scanf("%d",&a);
	if(a==1){
		fp=fopen("d:\\book.txt","r");
		for(int i=0;i<line;i++){
			fscanf(fp,"%s%s%s%s%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);
			printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);
		}
	} else {
		fp=fopen("d:\\book.txt","r");
		printf("请输入要查询的书的书名:");
		scanf("%s",b);
		for(int j=0;j<line;j++){
			fscanf(fp,"%s%s%s%s%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);
			if(strcmp(book_data.book_name,b)==0){
				printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);
				break;
			}
		}
		if(j>=line){
			printf("不存在该书!");
		}
	}
	fclose(fp);
	return OK;
}

//办理借书手续
int borrow(){
	FILE *fp;
	Information data[20];
	char a[20],name1[20],sex1[10],id1[20];
	int line;
	line=count_lines();
	printf("请分别输入借书人的姓名,性别,学号:");
	scanf("%s%s%s",name1,sex1,id1);
	printf("请输入要借的书的书名:");
	scanf("%s",a);
	fp=fopen("d:\\book.txt","r");
	for(int i=0;i<line;i++){
		fscanf(fp,"%s%s%s%s%s%s%s%s",data[i].book_name,data[i].number,data[i].price,data[i].auther,data[i].status,data[i].borrow_name,data[i].sex,data[i].id);
	}
	for(int j=0;j<line;j++){
		if(strcmp(data[j].book_name,a)==0){
			memcpy(data[j].status,"已借出",10);//data[j].status=0;
			memcpy(data[j].borrow_name,name1,20);//data[j].borrow_name=name1;
			memcpy(data[j].sex,sex1,10);//data[j].sex=sex1;
			memcpy(data[j].id,id1,20);//data[j].id=id1;
			break;
		}
	}
	fp=fopen("d:\\book.txt","w");
	for(int k=0;k<line;k++){
		fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",data[k].book_name,data[k].number,data[k].price,data[k].auther,data[k].status,data[k].borrow_name,data[k].sex,data[k].id);
		fputs("\n",fp);
	}
	fclose(fp);
	printf("借书成功!\n");
	return OK;
}

//办理还书手续
int returnbook(){
	FILE *fp;
	Information data[20];
	char a[20];
	int line;
	line=count_lines();
	printf("请输入要还的书的书名:");
	scanf("%s",a);
	fp=fopen("d:\\book.txt","r");
	for(int i=0;i<line;i++){
		fscanf(fp,"%s%s%s%s%s%s%s%s",data[i].book_name,data[i].number,data[i].price,data[i].auther,data[i].status,data[i].borrow_name,data[i].sex,data[i].id);
	}
	for(int j=0;j<line;j++){
		if(strcmp(data[j].book_name,a)==0){
			memcpy(data[j].status,"在馆",10);//data[j].status=1;
			memcpy(data[j].borrow_name,"无",20);//data[j].borrow_name="无";
			memcpy(data[j].sex,"空",10);//data[j].sex="空";
			memcpy(data[j].id,"空",20);//data[j].id="空";
			break;
		}
	}
	fp=fopen("d:\\book.txt","w");
	for(int k=0;k<line;k++){
		fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",data[k].book_name,data[k].number,data[k].price,data[k].auther,data[k].status,data[k].borrow_name,data[k].sex,data[k].id);
		fputs("\n",fp);
	}
	fclose(fp);
	printf("还书成功!\n");
	return OK;
}

//主函数
void main(){
	int a=0,line=0,selection;
	while(a==0){
		printf("---------------------------------\n");
		printf("|          图书管理系统         |\n");
		printf("---------------------------------\n");
		printf("|                               |\n");
		printf("|         1、增加新图书         |\n");
		printf("|                               |\n");
		printf("|         2、删除图书           |\n");
		printf("|                               |\n");
		printf("|         3、查询图书           |\n");
		printf("|                               |\n");
		printf("|         4、办理借书手续       |\n");
		printf("|                               |\n");
		printf("|         5、办理还书手续       |\n");
		printf("|                               |\n");
		printf("|         6、退出系统           |\n");
		printf("|                               |\n");
		printf("---------------------------------\n");
		printf("请输入操作:");
		scanf("%d",&selection);
		switch(selection){
			case 1:
				{
					add();
				}
				break;
			case 2:
				{
					deletebook();
				}
				break;
			case 3:
				{
					search();
				}
				break;
			case 4:
				{
					borrow();
				}
				break;
			case 5:
				{
					returnbook();
				}
				break;
			case 6:
				{
					a=1;
				}
				break;
		}
	}
}

到了这里,关于图书管理系统——C语言课程设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++课程设计:图书管理系统【附源码】

    课程设计目的   作为软件工程和计算机科学与技术专业的基本课程,课程设计不仅涵盖了C++语言的知识体系,又与工程的实际需要切实相关。通过课程设计的综合性训练,对开发者解决实际问题能力,编程能力,动手能力有很大的提升,更有助于样成良好的编程习惯。 图

    2024年02月07日
    浏览(39)
  • RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计 课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 Android 清单中请求 NFC 访问权限过滤 NFC IntentACTION_NDEF_DISCOVEREDACTION_TAG_DISCOVERED从 Intent 中获取信息

    2024年02月08日
    浏览(54)
  • 【Java课程设计】基于Java Swing 的图书管理系统

    🎁 作者简介 :在校大学生一枚,Java领域新星创作者,Java、Python正在学习中。 💗 个人主页: 我是一棵卷心菜的个人主页 🍂 日常学习网站: 牛客网,可以用来刷算法题、工作内推、面经复习、练习SQL等等,很不错的多功能网站。点击注册学习刷题吧! 📕 自我提醒: 多

    2024年02月07日
    浏览(72)
  • C语言版数据结构-课程设计-航空客运订票系统 V2.0 附源码(增加管理员功能)

    相信很多粉丝看过看过我的主页,有一个航空订票系统: 数据结构航空订票系统(附源码) 但是最近后台收到很多粉丝的要求,在上一个航空订票系统中要加上管理员的功能块,于是对上面那个课设进行了改进,新的功能流程如下: (航班信息由管理员添加和删除、顾客可

    2024年02月03日
    浏览(53)
  • 基于Java的图书借阅网站, java+springboot+vue开发的图书借阅管理系统 - 毕业设计 - 课程设计

    本程序实现图书的智能化、信息化和简单化;实现图书信息的增加、删除、修改、查找、借阅、还书、收藏的显示操作及实时数据库的提交和更改和对普通用户的增、删、改、查;提高图书管理员工作信息报送及反馈的工作效率,减轻管理员的劳动负担;提高信息的及时性和

    2024年04月28日
    浏览(69)
  • 数据库课程设计-图书馆管理系统(3. 用户软件,基于QT)

    如果对你有帮助,可以给卑微的博主留个赞、关注、收藏   (不是)  (骗一下数据,说不定以后面试就过了,拜谢) 用户软件的实现根据自己所用语言选择对应开发工具,c++ 较常用的是QT或者MFC。这里使用QT做个示例,但博主前端属实现学现卖,也就是能用级别,可以参考一下

    2024年02月09日
    浏览(47)
  • 【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业&课程设计

    作者主页:paper jie 的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将javaSE基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详

    2024年02月09日
    浏览(45)
  • 学校图书借阅管理系统,Mysql数据库课程设计期末作品或练手项目

    使用Navicat操作,未包含Java代码。 目录 一、课程设计的目的1 二、课程设计内容1 2.1课程设计功能分析说明1 2.2数据库需求分析1 2.2.1系统功能分析说明1 (1)信息需求分析1 (2)功能需求2 2.3数据字典2 2.3.1数据项2 2.3.2数据结构3 2.3.3系统功能图6 2.3.4数据流图6 2.4数据库概念结构

    2024年02月09日
    浏览(45)
  • 数据库原理课程设计/图书借阅管理系统代码与word(sql server)

    图 书 借 阅 管 理 系 统 ——数据库实践课程设计实验 注:图为word插入自带的,表格为excel表格先制作后复制粘贴到word的,代码为高亮处理后的代码块 目录 第一章  设计背景与需求分析 1.1  设计需求 1.2  设计背景 1.2.1  图书管理的现状   1.2.2  选题的目的、意义    1.3

    2024年02月06日
    浏览(59)
  • 数据库课程设计-图书馆管理系统(2.数据库实现-基于mysql)

    如果对你有帮助,可以给卑微的博主留个赞、关注、收藏   (不是)  (骗一下数据,说不定以后面试就过了,拜谢) 好像有读者说现在不要积分的资源也要vip才能下,如果下不了可以留邮箱到评论区或者私聊,我也把资源放到github了,地址如下: https://github.com/goLSX/library_mana

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包