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

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

  • 需求分析:

  为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括序号、书名、作者、出版社、数量等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。整个程序实现链表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。

  • 概要设计:
  • c语言图书管理系统,课程设计,c语言
  • 详细设计:
  1. 设计思想

  整个系统制造的过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。

  1. 实现注释

  这个实用的小型图书管理程序以链表操作完成,并实现文件信息的录入和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。实现了图书管理的基本功能,包括了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。查询时可按书名查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了链表排序操作,并输出整个链表,方便用户检查信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态改变,并有提示信息让用户保存信息。系统中主要的数据结构就是图书的信息,包含序号、书名、作者、出版社、数量等,在处理过程中各项可以作为一本图书的不同属性来进行处理。

  1. 设计思想

①注册新书,填入图书信息,如序号,书名,作者,出版社,数量

②显示图书信息

③输入书名查询它的信息

④输入序号修改图书信息

⑤输入序号删除图书

⑥输入书名借阅图书

⑦输入借书证号进行还书

⑧退出系统

  • 测试结果:

系统主界面(选择数字进入,退出系统)

c语言图书管理系统,课程设计,c语言

程序代码文章来源地址https://www.toymoban.com/news/detail-765512.html

#include<stdio.h>  //预处理 
#include<string.h>
#include<stdlib.h>
#include<conio.h>

//定义结构体 
struct book
{
	int id;
	char name[31];
	char author[27];
	char publish[31];
	int store;
	int total;
	int user[10];
	int days[10];
}books[100];

//显示整体标题标题函数 
void page_title(char *menu_item)
{
	printf("\t\t********欢迎大家使用长春工业大学图书管理系统********\n\n-%s-\n\n",menu_item);
 } 
//等待返回函数 
void return_confirm()
{
	printf("\n请按任意键返回……\n");
	getch();
} 


 
book_add()
{
	int i;
	system("cls");   //清屏 
	page_title("注册新书"); 
	for(i=0;i<2;i++)
	{
		
		printf("序号:");
		scanf("%d",&books[i].id);
		printf("书名:");
		scanf("%s",&books[i].name); 
		printf("作者:");
		scanf("%s",&books[i].author); 
		printf("出版社:");
		scanf("%s",&books[i].publish); 
		printf("数量:");
		scanf("%d",&books[i].total);
		books[i].store=books[i].total;
		printf("\n"); 
		
		
			
	} 
}


book_show()
{
	int i,flag=0;
	system("cls");
	for(i=0;i<100;i++)
	{     
		if(strlen(books[i].publish)!=0)
		{
			printf("序号:%d\t  ",books[i].id);
			printf("书名:%s\t  ",books[i].name);
			printf("作者:%s\t  ",books[i].author);
			printf("出版社:%s\t  ",books[i].publish);
			printf("存数:%d\t",books[i].store);
			printf("总数:%d\n\n",books[i].total);
			flag=1;
			
		}	
	} 
	
	if(flag==0)
	{
		printf("没有找到相关书籍\n");
		
	}
	
	getch();
	return i;	
}


int book_search()
{
	int n,i,flag=0;
	char nam[30];
	system("cls");
	printf("请输入书名:");
	scanf("%s",&nam);
	for(i=0;i<100;i++)
	{
		if(strcmp(books[i].name,nam)==0)
		{
			printf("序号:%d\t  ",books[i].id);
			printf("书名:%s\t  ",books[i].name);
			printf("作者:%s\t  ",books[i].author);
			printf("出版社:%s\t  ",books[i].publish);
			printf("存数:%d\t",books[i].store);
			printf("总数:%d\n",books[i].total);
			n=i;
			flag=1;
			getch();
			break;
		}	
		
	} 
		
		if(flag==0)
		{
			printf("\n没有找到相关书籍\n");
			getch();
			return -1;
		}
	return n;
}

book_edit()
{
	int i,id_change;
	system("cls");
	page_title("修改图书信息:");
	printf("输入要修改的图书id:");
	scanf("%d",&id_change);
	
	for(i=0;i<100;i++)
	{
		if(books[i].id==id_change)
		{
		
		printf("修改书名:");
		scanf("%s",&books[i].name); 
		printf("修改作者:");
		scanf("%s",&books[i].author); 
		printf("修改出版社:");
		scanf("%s",&books[i].publish); 
		printf("修改数量:");
		scanf("%d",&books[i].total);
		printf("修改图书信息成功\n");
		books[i].store=books[i].total;
		return i; 
		}	
	} 
	
	printf("\n没有找到相关信息\n");
	getch();
	return -1;
}


int book_del()
{
	int i,num,j;
	system("cls");
	page_title("删除图书");
	printf("输入所要删除的书的id:");
	scanf("%d",&num);
	for(i=0;i<100;i++)
	{
		if(books[i].id==num)
		{
			for(j=i;j<100;j++)
			{
				books[j].id=books[j+1].id;
				strcpy(books[j].name,books[j+1].name);
				strcpy(books[j].publish,books[j+1].publish);
				printf("该书已经删除了!!!\n");
				getch();
				return i;
			}
		}	
	} 
	printf("未找到相关记录\n");
	getch();
	return -1;
}




//借书 
book_out()
{
	int n,s,i,d;
	system("cls");
	page_title("借阅图书");
	n=book_search();
	if(n!=-1&&books[n].store>0)
	{
		//赋初值,全为零 
	for(i=0;i<10;i++)
		{
			
				books[n].user[i]=0;
				books[n].days[i]=0;
					
		} 	 
		
		
		
		
		printf("借书证序号:");
		scanf("%d",&s);
		printf("输入可借天数:");
		scanf("%d",&d); 
		
		books[n].user[0]=s;
		books[n].days[0]=d; 
		books[n].store--;	
	
		
	}
	
	else if(n!=-1&&books[n].store==0)
	{
		printf("此书已经完全借完\n\n");
		getch();
	}
	else
			;
	
	
	return_confirm();
}



 //归还图书
void book_in()
{
	int n,s,i;
	page_title("归还图书");
	n=book_search();
	printf("%d",n);
	if(n!=-1&&books[n].store<books[n].total)
	{
		printf("借阅图书证列表\n");
		for(i=0;i<10;i++)
		{
			if(books[n].user!=0)
			{
				printf("[%d]--%d天\n",books[n].user[i],books[n].days[i]);
			}
			printf("输入借书证号:");
			scanf("%d",&s);
			for(i=0;i<10;i++)
			{
				if(books[n].user[i]==s)
				{
					books[n].store++;
				}
			}
		} 
	}
	
	
	if(n!=-1&&books[n].store==books[n].total)
		{
			printf("全部归还\n");
		}
	else if(n!=-1&&books[n].store<books[n].total)
	{
		printf("归还成功\n");
	}
	else 	
			;
	return_confirm();
	
}  








main()
{

	menu:page_title("操作选单");
	 printf("用数字选择操作\n\n");
	 printf("\t\t1注册新书\t\t2显示图书\n");
	 printf("\t\t3查询图书信息\t\t4修改图书信息\n");
	 printf("\t\t5删除图书\t\t6借阅图书\n");
	 printf("\t\t7归还图书\t\t8退出系统\n");
	 printf("请按数字键:\n");
	
	switch(getchar())
	{
		case'1': book_add();break;
		case'2': book_show();break;
		case'3': book_search();break;
		case'4': book_edit();break;
		case'5': book_del();break;
		case'6': book_out();break;
		case'7': book_in();break;
		case'8': exit(0);
		
	}    
	goto menu;
	
	
 } 

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

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

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

相关文章

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

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

    2024年02月07日
    浏览(40)
  • 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)
  • 基于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)
  • 【Java/SSM/LayUI】JavaEE课程设计(基于Layui+SSM的图书管理系统项目介绍及源码)

    注: 本文为JavaEE课程的课程设计,如需原文件及项目代码请后台联系作者或qq3416252112,也可在作者主页资源中下载,仅供学习交流使用! 一、项目介绍 ​ 结合本学期所学知识,以及以往积累的经验,我们通过Layui+SSM的方式完成了简化版的“图书管理系统”。本系统操作界面

    2024年02月05日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包