图书管理系统(C语言)

这是图书管理系统的源代码,大一的课程设计,只供参考哦
#include
   
   
    
    
#include
    
    
     
     
#include
     
     
      
      
#include
      
      
       
       

struct book
{
	char name[20];
	char year[10];
	char zz[20];
	int cs;
	int jg;
	struct book *next;
};

struct book * lianbiao()		//产生头结点
{
	struct book *head;
	head=(struct book *)malloc(sizeof(struct book));
	head->next=NULL;
	return head;
}

int tianjia(struct book *head,int b)		//添加一本新书
{
	struct book *ptemp=head,*pnew;
	pnew=(struct book *)malloc(sizeof(struct book));
	fflush(stdin);
	printf("请输入书籍名称:");
	gets(pnew->name);
	printf("请输入出版日期:");
	gets(pnew->year);
	printf("请输入书籍作者:");
	gets(pnew->zz);
	printf("请输入书籍册数:");
	scanf("%d",&pnew->cs);
	printf("请输入书籍价格:");
	scanf("%d",&pnew->jg);
	fflush(stdin);
	pnew->next=NULL;
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
	}
	ptemp->next=pnew;
	b++;
	return b;
}

int huifu(struct book *head)			//将文件中数据恢复至内存
{
	FILE * fp;
	int i=0,j=0;
	struct book *ptemp=head,*pnew;
	fp=fopen("a.mr","rt");
	while(1)
	{
		pnew=(struct book *)malloc(sizeof(struct book));
		i=fscanf(fp," %s %s %s %d %d",pnew->name,pnew->year,pnew->zz,&pnew->cs,&pnew->jg);
		if(i==EOF)break;
		pnew->next=NULL;
		ptemp->next=pnew;
		ptemp=ptemp->next;
		j++;
	}
	free(pnew);
	fclose(fp);
	return j;
}

void tuichu(struct book * head)		//将内存数据保存至文件
{
	FILE * fp;
	struct book * ptemp=head;
	fp=fopen("a.mr","w");
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
		fprintf(fp," %s %s %s %d %d",ptemp->name,ptemp->year,ptemp->zz,ptemp->cs,ptemp->jg);
	}
	fclose(fp);
}

void fshuming(struct book *head)		//按书名查找
{
	struct book *ptemp=head;
	char a[20];
	int b=1;
	printf("请输入书籍名称:");
	gets(a);
	printf("-------------------------------------------------------------\n");
	printf("序号 |书名      |出版时间  |作者      |剩余册数  |价格      |\n");
	printf("-------------------------------------------------------------\n");
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
		if(strcmp(a,ptemp->name)==0)
		{
			printf("%-5d|",b);
			printf("%-10s|",ptemp->name);
			printf("%-10s|",ptemp->year);
			printf("%-10s|",ptemp->zz);
			printf("%-10d|",ptemp->cs);
			printf("%-10d|",ptemp->jg);
			printf("\n");
			printf("-------------------------------------------------------------\n");
			b++;
		}
	}
	if(b==1)
	{
		system("cls");
		printf("抱歉,没有该书(按任意键返回)...");
	}
	else
    {
        printf("共找到%d本书",b-1);
    }
}

void fzz(struct book *head)		//按作者名查找
{
	struct book *ptemp=head;
	char a[20];
	int b=1;
	printf("请输入作者姓名:");
	gets(a);
	printf("-------------------------------------------------------------\n");
	printf("序号 |书名      |出版时间  |作者      |剩余册数  |价格      |\n");
	printf("-------------------------------------------------------------\n");
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
		if(strcmp(a,ptemp->zz)==0)
		{
			printf("%-5d|",b);
			printf("%-10s|",ptemp->name);
			printf("%-10s|",ptemp->year);
			printf("%-10s|",ptemp->zz);
			printf("%-10d|",ptemp->cs);
			printf("%-10d|",ptemp->jg);
			printf("\n");
			printf("-------------------------------------------------------------\n");
			b++;
		}
	}
	if(b==1)
	{
		system("cls");
		printf("抱歉,没有该书(按任意键返回)...");
	}
	else
    {
        printf("共找到%d本书",b-1);
    }
}

void friqi(struct book *head)		//按出版日期查找
{
	struct book *ptemp=head;
	char a[20];
	int b=1;
	printf("请输入出版日期:");
	gets(a);
	printf("-------------------------------------------------------------\n");
	printf("序号 |书名      |出版时间  |作者      |剩余册数  |价格      |\n");
	printf("-------------------------------------------------------------\n");
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
		if(strcmp(a,ptemp->year)==0)
		{
			printf("%-5d|",b);
			printf("%-10s|",ptemp->name);
			printf("%-10s|",ptemp->year);
			printf("%-10s|",ptemp->zz);
			printf("%-10d|",ptemp->cs);
			printf("%-10d|",ptemp->jg);
			printf("\n");
			printf("-------------------------------------------------------------\n");
			b++;
		}
	}
	if(b==1)
	{
		system("cls");
		printf("抱歉,没有该书(按任意键返回)...");
	}
	else
    {
        printf("共找到%d本书",b-1);
    }
}


void jiemian(int *a)			//菜单界面
{
	printf("			    -------主菜单------\n\n");
	printf("			    ☆☆☆☆☆☆☆☆☆☆\n\n");
	printf("			    |   %c 添加系统     |\n\n",a[0]);
	printf("			    |   %c 删除系统     |\n\n",a[1]);
	printf("			    |   %c 查看系统     |\n\n",a[2]);
	printf("			    |   %c 搜索系统     |\n\n",a[3]);
	printf("			    |   %c 修改系统     |\n\n",a[4]);
	printf("			    |   %c 出售系统     |\n\n",a[5]);
	printf("			    |   %c 退出程序     |\n\n",a[6]);
	printf("			    ☆☆☆☆☆☆☆☆☆☆\n\n");
}

void jiemian1(int *b)		//搜索菜单界面
{
	printf("			    ------搜索方式-------\n\n");
	printf("			    ☆☆☆☆☆☆☆☆☆☆☆\n\n");
	printf("			    |   %c 按书名搜索    |\n\n",b[0]);
	printf("			    |   %c 按日期搜索    |\n\n",b[1]);
	printf("			    |   %c 按作者搜索    |\n\n",b[2]);
	printf("			    |   %c 返回主菜单    |\n\n",b[3]);
	printf("			    ☆☆☆☆☆☆☆☆☆☆☆\n\n");
}

void chakan(struct book * head)			//查看信息
{
	struct book *ptemp=head;
	int a=1;
	printf("-------------------------------------------------------------\n");
	printf("序号 |书名      |出版时间  |作者      |剩余册数  |价格      |\n");
	printf("-------------------------------------------------------------\n");
	while(ptemp->next!=NULL)
	{
		ptemp=ptemp->next;
		printf("%-5d|",a);
		printf("%-10s|",ptemp->name);
		printf("%-10s|",ptemp->year);
		printf("%-10s|",ptemp->zz);
		printf("%-10d|",ptemp->cs);
        printf("%-10d|",ptemp->jg);
        printf("\n");
        printf("-------------------------------------------------------------\n");
		a++;
	}
}

void shanchu(struct book * head,int a)			//删除一本书
{
	struct book *ptemp=head,*pnew;
	while(a)
	{
		pnew=ptemp;
		ptemp=ptemp->next;
		a--;
	}
	pnew->next=ptemp->next;
}

void xiugai(struct book *head,int a)		//修改信息函数
{
	struct book* ptemp=head;
	while(a)
	{
		ptemp=ptemp->next;
		a--;
	}
	fflush(stdin);
	printf("请输入书名:");
	gets(ptemp->name);
	printf("请输入年份:");
	gets(ptemp->year);
	printf("请输入作者:");
	gets(ptemp->zz);
	printf("请输入册数:");
	scanf("%d",&ptemp->cs);
	printf("请输入价格:");
	scanf("%d",&ptemp->jg);
}

void chushou(struct book *head,int a,int b)
{
    struct book* ptemp=head;
    while(a)
    {
        ptemp=ptemp->next;
        a--;
    }
    ptemp->cs=ptemp->cs-b;
}

/*void paixu(struct book *head,int b)
{
    int i;
    struct book *A,*a;
    for(i=1;i
       
       
         next; while(a->next->next!=NULL) { if(a->cs < a->next->cs) { A->next=a->next; a->next=A->next->next; A->next->next=a; } A=a; a=a->next; } } }*/ main() { struct book *head; int k=0,a[7]={16,0,0,0,0,0,0},b=0,c,e,h=0,d[4]={16,0,0,0}; //a控制主菜单光标,b书的数目,c,e做函数变量 char ch; //d控制搜索项目光标,k和h控制光标字符 head=lianbiao(); b=huifu(head); printf(" **************************\n\n"); printf(" 欢迎使用图书管理系统\n\n"); printf(" **************************\n\n"); getch(); system("cls"); loop: while(1) { jiemian(a); printf(" 已录入%d本书\n",b); ch=getch(); if(ch==13)break; if(ch==80&&k<6) { k++; a[k]=16; a[k-1]=0; } if(ch==72&&k>0) { k--; a[k]=16; a[k+1]=0; } system("cls"); } system("cls"); if(k==0) { while(1) { chakan(head); printf("按任意键开始添加书籍(按0回主菜单):\n"); ch=getch(); if(ch=='0')break; b=tianjia(head,b); system("cls"); } system("cls"); } if(k==1) { while(1) { chakan(head); printf("请输入要删除的序号(按0退出):"); scanf("%d",&c); if(c==0)break; if(c>b) { system("cls"); continue; } shanchu(head,c); system("cls"); b--; } system("cls"); } if(k==2) { paixu(head,b); chakan(head); printf("统计:已录入%d本书(按任意键返回)",b); getch(); system("cls"); } if(k==3) { fflush(stdin); while(1) { jiemian1(d); ch=getch(); if(ch==13) { system("cls"); break; } if(ch==80&&h<3) { h++; d[h]=16; d[h-1]=0; } if(ch==72&&h>0) { h--; d[h]=16; d[h+1]=0; } system("cls"); } if(h==0) { fshuming(head); getch(); } if(h==1) { friqi(head); getch(); } if(h==2) { fzz(head); getch(); } system("cls"); } if(k==4) { while(1) { chakan(head); printf("请输入需要修改的序号(输入0退出):"); scanf("%d",&e); if(e==0)break; if(e>b) { system("cls"); continue; } xiugai(head,e); system("cls"); } system("cls"); } if(k==5) { while(1) { chakan(head); printf("请输入要售卖的书籍序号(输入0返回):"); scanf("%d",&c); if(c==0)break; printf("请输入要售卖书籍的册数:"); scanf("%d",&e); chushou(head,c,e); system("cls"); } system("cls"); } if(k==6) { tuichu(head); printf(" **************************\n\n"); printf(" 欢迎下次使用\n\n"); printf(" **************************\n\n"); getch(); return 0; } goto loop; } 
       
      
      
     
     
    
    
   
   
  • 18
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值