C语言课设:图书信息管理系统设计

观前注意:复制粘贴没关系请点个赞,局部有误但无影响总体。本文只设计C语言基础语法。因为历史遗留问题,时间冗长,笔者现已不想修改此文,抱歉。请“拿来主义者”自行修改调整代码。

图书信息管理系统设计

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图
书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)--输入
图书信息浏览功能--输出
查询和排序功能:--算法
按书名查询
按作者名查询
图书信息的删除与修改

参考代码

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

struct Lib
{
     
	int num;		//登陆号 
	char name[32];	//书名 
	char nat[32];	//作者名 
	char adr[32];	//出版单位 
	int time;		//出版时间 
	int num2;		//分类号 
	int price;		//价格 
};

struct Lib lib[100];
int count=0,i=0;				

char input()					//图书信息录入
{
     
	for(;i<40;i++)
	{
     
		printf("请输入图书登陆号:");
	    scanf("%d",&lib[i].num);
		printf("请输入图书书名:");
	    scanf("%s",&lib[i].name);
		printf("请输入作者名:");
	    scanf("%s",&lib[i].nat);
		printf("请输入出版单位:");
	    scanf("%s",&lib[i].adr);
		printf("请输入出版时间:");
	    scanf("%d",&lib[i].time);
		printf("请输入分类号:");
	    scanf("%d",&lib[i].num2);
		printf("请输入价格:");
	    scanf("%d",&lib[i].price);
		count++;//记录录入信息的个数
		
		system("cls");//清屏
		return -1;
	}
}
void brouse()				//图书信息浏览
{
     
	int i;
	printf(" 登录号 书名 作者名 出版单位 出版时间 分类号 价格  \n");
	for(i=0;i<count;i++)
	{
     
		printf(" %d    %s     %s    %s    %d    %d    %d\n",lib[i].num,lib[i].name,lib[i].nat,lib[i].adr,lib[i].time,lib[i].num2,lib[i].price);
	}
	printf("请按任意键返回");
	_getch();
}
void name()//书名查询
{
     
	int i;
	char name[10];
	printf("请输入所查图书名字:\n");
	scanf("%s",name);
	for(i=0;i<count;i++)
		if(strcmp(lib[i].name,name)==0)
		{
     
			printf("查询结果如下:\n");
			printf(" 登录号 书名 作者名 出版单位 出版时间 分类号 价格  \n");
			printf(" %d    %s     %s    %s    %d    %d    %d\n",lib[i].num,lib[i].name,lib[i].nat,lib[i].adr,lib[i].time,lib[i].num2,lib[i].price);
			break;
		}
	
	if(i>=count)
	{
     
		printf("\n\n\t狠抱歉,没有该图书的信息\n");
	}
	printf("请按任意键返回");
	_getch();

}
void nat()			//作者名查询 
{
     
	int i;
	char nat[10]; 
	printf("请输入所查询作者的名字:\n");
	scanf("%s",nat);
	for(i=0;i<count;i++)
		if(strcmp(lib[i].nat,nat)==0)
		{
     
			printf("查询结果如下:\n");
			printf(" 登录号 书名 作者名 出版单位 出版时间 分类号 价格  \n");
			printf(" %d    %s     %s    %s    %d    %d    %d\n",lib[i].num,lib[i].name,lib[i].nat,lib[i].adr,lib[i].time,lib[i].num2,lib[i].price);
			break;
		}
	if(i>=count)
	{
     
		printf("\n\n\t狠抱歉,没有该图书的信息\n");
	}
	printf("请按任意键返回");
	_getch();
}
void search()				//图书信息查询
{
     
	void num();
	void name();
	void tel();
	int i;
	printf("\n");
	printf("  1.按书名查询         \n");
	printf("  2.按作者名查询  	 \n");
	printf("  3.返回管理系统页面   \n");
	printf("\n");
	scanf("%d",&i);
	system("cls");
	switch(i)
	{
     
        case 1: name();break;
		case 2: nat();break;
		case 3:break;
	}
	
}

void  renum()//登录号修改
{
     
	char name[10];
	int i,t;
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("本图书初始登录号为:%d\n",lib[i].num);
	        printf("修改后的登录号是:");
			scanf("%d",&t);
	        lib[i].num=t;
	        printf("\n");
		    printf("修改成功!!\n");
		
			break;
		}
	if(i>=count)
	{
     

		printf("\n\n\t狠抱歉,没有该图书的信息\n");

	}
	printf("请按任意键返回");
	_getch();
}
void  re_name()//修改书名 
{
     
	char name[10];
	int i;
	char t[10];
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("本图书初始名字是:%d\n",lib[i].name);
	        printf("修改后的名字是:");
			scanf("%s",t);
	        strcpy(lib[i].name,t);
		    printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
     
		printf("\n\n很抱歉,没有该图书的信息\n\n");
	}
	printf("请按任意键返回");
	_getch();
}
void  renat()//作者名修改 
{
     
	char name[10];
	int i;
	char nat[3];
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("本职工初始性别是:%d\n",lib[i].nat);
	        printf("修改后的之后的性别是:");
			scanf("%s",nat);
	        strcpy(lib[i].nat,nat);
		        printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
     
		printf("\n\n很抱歉,没有该图书的信息\n\n");
	}
	printf("请按任意键返回");
	_getch();
}
void  readr()//出版单位修改 
{
     
	int i;
	char adr[10];
	char name[10];
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("本图书初始出版单位是:%d\n",lib[i].adr);
	        printf("修改后的出版单位是:");
			scanf("%s",adr);
	        strcpy(lib[i].adr,adr);
	        printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
      
		printf("\n\n很抱歉,没有该图书的信息\n\n");
	}
	printf("请按任意键返回");
	_getch();
}
void  retime()//
{
     
	int time;
	char name[10];
	int i;
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("图书的初始出版时间是:%s\n",lib[i].time);
	        printf("修改后的出版时间是:");
			scanf("%d",&time);
	        lib[i].time=time;
	        printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
     
		printf("\n\n很抱歉,没有该图书的信息\n\n");
	}
	printf("请按任意键返回");
	_getch();

}
void  renum2()//分类号修改 
{
     
    int  num2;
	char name[10];
	int i;
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("本图书初始的分类号是:%d\n",lib[i].num2);
			printf("修改后的分类号是:");
			scanf("%d",&num2);
			lib[i].num2=num2;		
	        printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
     
		printf("\n\n很抱歉,没有该图书的信息\n\n");
	}
	printf("请按任意键返回");
	_getch();
}
void  reprice()//
{
     
	int price;
	char name[10];
	int i;
	printf("请输入需要修改的图书名字:");
	scanf("%s",name);
	printf("\n\n");
	for(i=0;i<count;i++)
	    if(strcmp(lib[i].name,name)==0)
		{
     
	        printf("图书的初始价格是:%s\n",lib[i].price);
   	        printf("修改后的价格是:");
			scanf("%d",&price);
	        lib[i].price=price;			
		    printf("\n");
		    printf("修改成功!!\n");
			break;
		}
	if(i>=count)
	{
     

		printf("\n\n很抱歉,没有该图书的信息\n\n");

	}
	printf("请按任意键返回");
	_getch();
}
void revise()//图书信息修改。
{
     
	void renum();
	void re_name();
	void resex();
	void reage();
	void rexueli();
	void repay();
	void rezhuzhi();
	void retel();
	int j;
	printf("  1.登录号修改     \n");
	printf("  2.图书名修改     \n");
	printf("  3.作者名修改     \n");
	printf("  4.出版单位修改     \n");
	printf("  5.出版时间修改     \n");
	printf("  6.分类号修改     \n");
	printf("  7.价格修改     \n");
	printf("  8.返回管理系统页面 \n");
	scanf("%d",&j);
	system("cls");
	switch(j)
	{
     
		case 1: renum();break;
        case 2: re_name();break;
		case 3: renat();break;
		case 4: readr();break;
		case 5: retime();break;
		case 6: renum2();break;
		case 7: reprice();break; 
		case 8:break;
	}
}

void dele()//图书信息的删除
{
      
	
	int i,j;
	char del_name[10];
	printf("请输入需要删除的图书名字:\n");
	scanf("%s",del_name);
	printf("\n");
	for(i=0;i<count;i++)
	{
     
		if((strcmp(lib[i].name,del_name)==0))
		{
     
			for(j=i;j<count;j++)
			{
     
				lib[j]=lib[j+1];
			}
		    printf("\t删除成功!!!\n\n");	
		    count--;
		}
	}

	printf("\n请按任意键返回\n");
	_getch();
}
void sort()//图书信息的排序
{
     
	int j;
	void sortnum();
	void sortnum2();
	void sortprice();
	printf("选择排序方法:\n");
	printf("  1.按登录号排序     \n");
	printf("  2.按分类号排序   \n");
	printf("  3.按图书价格排序   \n");
	printf("  4.返回管理系统页面 \n");
	scanf("%d",&j);
	system("cls");
	switch(j)
	{
     
		case 1:sortnum();break;
		case 2:sortnum2();break;
		case 3:sortprice();break;
		case 4:break;
	}
}
void sortnum()//以登录号为标准,利用冒泡法进行排序
{
     
	int i,j;
    struct Lib t;
	for(j=0;j<count-1;j++)    //进行count-1次循环,实现count-1趟比较
	{
     
		for(i=0;i<count-1-j;i++)   //在每趟中进行count-1-j次比较
		{
      
			if(lib[i].num<lib[i+1].num)  //相邻两数比较
			{
     
				t=lib[i];
				lib[i]=lib[i+1];
				lib[i+1]=t;
			}
		}
	}
	printf("\n\n\t\t排序成功!!!\n\n");
    printf("请按任意键返回");
	_getch();
}
void sortnum2()//以分类号为标准,利用冒泡法进行排序
{
     	
	int i,j;
    struct Lib t;
	for(j=0;j<count-1;j++)    //进行count-1次循环,实现count-1趟比较
	{
     
		for(i=0;i<count-1-j;i++)   //在每趟中进行count-1-j次比较
		{
      
			if(lib[i].num2>lib[i+1].num2)   //相邻两数比较
			{
     
				t=lib[i];
				lib[i]=lib[i+1];
				lib[i+1]=t;
			}
		}
	}
	printf("\n\n\t\t排序成功!!!\n\n");
    printf("请按任意键返回");
	_getch();
}
void sortprice()//以价格为标准,利用冒泡法进行排序
{
     	
	int i,j;
	struct Lib t;//设置t结构体作为中间变量实现两个图书信息的交换
	for(j=0;j<count-1;j++)
	{
     
		for(i=0;i<count-1-j;i++)
		{
      
			if(lib[i].price>lib[i+1].price)
			{
     
				t=lib[i];
				lib[i]=lib[i+1];
				lib[i+1]=t;
			}
		}
	}
	printf("\n\n\n");
	printf("\t排序成功!!!  \n\n\n");

    printf("请按任意键返回");
	_getch();
}
void save()//文件建立及保存                                                                                                        
{
     
	FILE * fp;
	int i;	
	if((fp=fopen("lib","wb"))==NULL)
	{
     
		printf("不能打开文件\n");
		return;
	}
	for(i=0;i<count;i++)
	{
     
		if(fwrite(&lib[i],sizeof(struct Lib),1,fp)!=1)
			printf("文件输出错误\n");
	}	
	fclose(fp);
	printf("\n\n\t\t保存成功!!!\n\n");

	printf("请按任意键返回");
	_getch();
}
void read()//数据的读取
{
     
	FILE * fp;
	fp=fopen("lib","rb");
	do
	{
     
		fread(&lib[i],sizeof(struct Lib),1,fp);//地址  长度   条数  指针
		count++;
		i++;
	}
	while(!feof(fp));//判断不等于0
	i--;
	count--;
	fclose(fp);
	printf("\n\n\t\t读取成功!!!  \n\n");

	printf("请按任意键返回");
	_getch();
}
void quit()
{
     
	int q;

	printf("\n\n\t\t1,确定退出\n\n");
    printf("\t\t2,取消退出\n \n");

	scanf("%d",&q);
	switch(q)
	{
     
        case 1:return;break;
		case 2:break;
	}
}
void main()
{
     
	int k;
	while(1)
	{
     
		system("cls");
	    printf("(1)   图书信息录入\n");
		printf("(2)   图书信息浏览\n");
		printf("(3)   图书信息查询\n");
		printf("(4)   图书信息修改\n");
		printf("(5)   图书信息删除\n");
		printf("(6)   图书信息排序\n");
		printf("(7)   图书数据保存\n");
		printf("(8)   图书信息读取\n");
	    printf("(9)   退出  \n");
		printf("\n\n");
        scanf("%d",&k);
	    switch(k)
		{
     
		   case 1:system("cls");input();break;
		   case 2:system("cls");brouse();break;
		   case 3:system("cls");search();break;
	       case 4:system("cls");revise();break;
		   case 5:system("cls");dele();break;
		   case 6:system("cls");sort();break;
		   case 7:system("cls");save();break;
		   case 8:system("cls");read();break;
		   case 9:system("cls");quit();break;
		}
	}
}

你可能感兴趣的:(语言学习)