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

图书管理系统

任务背景:
18级软件工程大一上学期C语言课程设计。

编写目的:
把学习的C语言知识运用到实际上,强化能力。

任务描述:
C语言编程模拟一个简单的图书管理系统,主要包括图书的库存信息,每一本书的借阅信息以及每一个人的借书信息。

系统功能:
(1)借阅资料管理(对相关资料进行添加,删除,修改,查询等操作)
(2)借阅管理(包括借出操作,还书操作,续借处理)
(3)读者管理(定义读者借书数量和相关的借阅时间等信息)
(4)统计分析(当前借阅和相关资料状态,资料状态统计,借阅统计)

系统设计分析(程序流程图,函数模块分析):

程序源代码:
添加链接描述

/*图书管理系统   终极确定版*/ 

#include<stdio.h>
#include<stdlib.h>  //有system函数
#include<conio.h>   //有通过控制台进行数据输入和数据输出的函数
#include<string.h>  //有字符数组
#include<math.h>
#define  LEN   sizeof(struct library)//有关图书信息的结构体
#define  LEN1  sizeof(struct reader) //有关读者信息的结构体

struct library//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%图书馆结构体
{
	int xcl;//库存
	float price;//单价
	char name[20],author[20],chuban[20],kind[20],shuhao[20];
	struct library *next;
};


struct reader//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读者结构体
{
	int zhenghao;
	char mingzi[20],riqi[20],zname[20];
	struct reader *next;
};


void mainmenu()//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~主菜单
{ 
	system ("cls");//清除屏幕先前显示的内容 ,往下运行(在stdlib.h头文件中) 
	printf("\n\n\n				^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ");
	printf("\n\n\n						1.__库存图书信息__\n\n");
	printf("\n\n 						2.__借阅图书系统__\n\n");
	printf("\n\n 						3.__退出管理系统__\n\n");
	//printf("\n\n 					 ^~^请您按键选择and回车确定哦~.~\n\n\n");
	printf(" 				^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ ^.^ \n");
}


void menu1() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~显示 图书信息 菜单
{ 
	system ("cls");
	printf("\n\n\n				 ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ");
	printf("\n\n 				    		1.__图书入库__\n\n");
	printf("\n 						2.__图书清理__\n\n");
	printf("\n 						3.__图书查询__\n\n");
	printf("\n 						4.__库存概览__\n\n");
	printf("\n 						5..返回上一层..\n\n");
	//printf("\n 					^~^请您按键选择and回车确定哦*.*\n\n");
	printf(" 				 ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ ^~^ \n");
}


void menu2() //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~显示 借阅系统 菜单
{ 
	system ("cls");
	printf("请输入书号,书名,作者或类别查询:\n");
	printf("类别(科学技术 语言文学 政治经济 历史地理 意识形态 艺术)\n\n");
}


void main1()//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~main1函数
{
	void tsgxx();//声明 图书馆信息 函数 
	void jieshuxitong();//声明 借书系统 函数
	char choose;
	
	mainmenu();//显示主菜单 
	scanf("%c",&choose);
	
	switch(choose)//功能函数选择
	{ 
		case '1':	tsgxx();
					break;
					
		case '2':	jieshuxitong();	
					break;	
					
		case '3':   system ("cls");
					printf("\n\n\n  删改内容已经保存了呢 ^、^\n\n\n  任意键安全退出哦 ^、^\n\n");
					exit(0);//exit关闭所有文件,终止正在执行的程序。exit(0):正常退出
					break;
	}
}


void tsgxx()//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~图书馆信息函数
{ 
	void tsjinku();//声明 图书进库 函数 
	void shanchu();//声明 删除图书信息 函数 
	void chaxunts();//声明 查询图书 函数 
	void kucunxinxi();//声明 显示库存 函数 
	char choose;
	
	menu1();//显示 图书信息 菜单 
	getchar();//吞掉一个显示出menu1函数后的进行下一步的回车      
	                                                                                                                         
	scanf("%c",&choose);
	
	for (;;)//在返回上一级前循环输入                                                                                                                                                    //??? 
		switch(choose)
		{ 
			case '1':	tsjinku();
						break;
			case '2':	shanchu();
						break;
			case '3':	chaxunts();
				
#include #include #include typedef struct { char number[10];//书号 char name[20];//书名 char author[20];//作者 char publish[50];//出版社 char time[20];//出版时间 float price; }mbook; typedef struct { int count;//书的本数 mbook book[100];//最大可有100本书 }mlibrary; mlibrary library; void save()//保存图书信息。 { FILE *fp; if((fp=fopen("library.doc","w"))==NULL) { printf("\n不能保存图书信息\n"); return; } fwrite(&library.count,sizeof(int),1,fp); fwrite(library.book,sizeof(library.book[0]),library.count,fp); } void putin() /*定义录入函数*/ { int y=1; system("cls"); while(y) { printf("\t请输入您的书籍的书号:"); scanf("%s",library.book[library.count].number); printf("\t请输入书名:"); scanf("%s",library.book[library.count].name); printf("\t请输入作者名:"); scanf("%s",library.book[library.count].author); printf("\t请输入出版社:"); scanf("%s",library.book[library.count].publish); printf("\t请输入出版时间:"); scanf("%s",library.book[library.count].time); printf("\t请输入该书的价格:"); fflush(stdin); scanf("%f",&library.book[library.count].price); library.count++; printf("\n是否继续录入(1.继续;0,退出录入):"); fflush(stdin); scanf("%d",&y); if (y!=1) { y=0; break; } } save(); } void lookup() { system("cls"); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); int i ; for ( i=0;i<library.count;i++) { printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } fflush(stdin); getchar(); } void search_by_name() /*定义按书名查询*/ { char s2[20]; int flag=1; printf("\n请输入要查询的书名: "); fflush(stdin); scanf("%s",s2); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); int i ; for( i=0;i<library.count;i++ ) if(strcmp(s2,library.book[i].name)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); getchar(); } void search_by_author() /*定义按作者名查询*/ { char s3[20]; int flag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf("%s",s3); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); int i ; for( i=0;i<library.count;i++ ) if(strcmp(s3,library.book[i].author)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); getchar(); } void search() /*定义查询函数*/ { int a; system("cls"); /*进行清屏*/ printf("\t\t******************************\n"); printf("开始查询\n"); printf("\t\t\t1---------------search_by_name\n"); printf("\t\t\t2---------------search_by_writer\n"); printf("\t\t\t0---------------exit\n"); printf("\t\t******************************\n") ; printf("\t\t请选择你想要的查询方式:"); fflush(stdin); scanf("%d",&a); switch(a) { case 1: search_by_name(); break; case 2: search_by_author(); break; case 0: return; } } void del() /*定义删除函数*/ { char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); int i; for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0)break; } if (i!=library.count) { for(;i<library.count-1;i++) { strcpy(library.book[i].name,library.book[i+1].name); strcpy(library.book[i].number,library.book[i+1].number); strcpy(library.book[i].publish,library.book[i+1].publish); strcpy(library.book[i].author,library.book[i+1].author); strcpy(library.book[i].time,library.book[i+1].time); library.book[i].price=library.book[i+1].price; } library.count--; } else printf("\n cannot found!\n"); save(); fflush(stdin); getchar(); } void update()//修改图书信息 { char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); int i; for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0) { printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); break; } } if (i!=library.count) { mbook book; printf("\n\t\t请输入修改后此图书的信息\n"); printf("\t请输入图书号:"); scanf("%s",book.number); printf("\t请输入图书名:"); scanf("%s",book.name); printf("\t请输入作者名:"); scanf("%s",book.author); printf("\t请输入出版社:"); scanf("%s",book.publish); printf("\t请输入出版时间:"); scanf("%s",book.time); printf("\t请输入该书的价格:"); fflush(stdin); scanf("%f",&book.price); strcpy(library.book[i].name,book.name); strcpy(library.book[i].number,book.number); strcpy(library.book[i].publish,book.publish); strcpy(library.book[i].author,book.author); strcpy(library.book[i].time,book.time); library.book[i].price=book.price; save(); } else printf("\n cannot found!\n"); fflush(stdin); getchar(); } void main() { FILE *fp; if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书信息库\n"); fp=fopen("library.doc","w+"); printf("\n初始化图书信息库,初始化之后要重启程序\n"); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); return; } fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book[0]),library.count,fp); fclose(fp); int a; do { system("cls"); printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t*********************************************\n"); printf("\t\t\t1 ------------------图书信息录入\n"); printf("\t\t\t2 ------------------图书信息浏览\n"); printf("\t\t\t3 ------------------图书信息查询\n"); printf("\t\t\t4 ------------------图书信息删除\n"); printf("\t\t\t5 ------------------图书信息修改\n"); printf("\t\t\t0 -----------------退出图书信息系统\n"); printf("\t\t*********************************************\n"); printf("\t\tPlease Enter Choose: "); fflush(stdin); scanf("%d",&a); switch(a) { case 1: putin(); break; case 2: lookup(); break; case 3: search(); break; case 4: del(); break; case 5: update(); break; case 0: printf("\n\n退出\n\n"); break; default: printf("\n序号不对\n"); } }while(a!=0); save(); }
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值