这是图书管理系统的源代码,大一的课程设计,只供参考哦
#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; }