图书管理系统精简版1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*************************************************************************************
* c语言的图书管理系统 *
* 1)以结构体方式实现图书信息记录,每条记录应包括图书编 *
* 号(ISBN)、书名、作者、出版社、出版年月、定价、备注等数据域; *
* 2)以链表方式实现图书信息记录的添加、删除、查找、显示等功能. *
*************************************************************************************/
#include
#include
#include
#define LEN sizeof(struct BOOK)
//typedef
struct BOOK
{
char booknumber[15];/*图书编号*/
char bookname[20];/*书名*/
char bookauthor[20];/*作者*/
char bookpress[20];/*出版社*/
float bookprice;/*图书价格*/
char bookremark[50];/*备注*/
struct BOOK *next;
};
struct BOOK *head=NULL;/*链表头*/
int main()
{
char n;/*n用来存放输入选择项*/
struct BOOK *Creat();/*增加,插入*/
struct BOOK *Search();/*查找*/
struct BOOK *Delbook();/*删除*/
struct BOOK *Xiugai();/*修改*/
struct BOOK *Printlist();/*输出所有记录*/
do
{
printf("************欢迎进入图书管理系统精简版1.0!**********\n");
printf("****\t请选择:\t\t\t\t****\n");
printf("****\t1、查询记录\t\t\t\t****\n");
printf("****\t2、增加记录\t\t\t\t****\n");
printf("****\t3、修改记录\t\t\t\t****\n");
printf("****\t4、删除记录\t\t\t\t****\n");
printf("****\t5、输出所有记录\t\t\t\t****\n");
printf("****\t0、退出\t\t\t\t\t****\n");
printf("****\t注意:其他输入非法\t\t\t****\n");
printf("****本程序由计算机学院软工1101班李健完成.\t****\n");
printf("****联系作者:187********\tQQ:948142658\t****\n");
printf("****************************************************\n");
scanf("%c",&n);
fflush(stdin);
switch(n)
{
case '1':head=Search(head);/*getchar();*/break;/*查找*/
case '2':head=Creat(head);/*getchar();*/break;/*增加,插入*/
case '3':head=Xiugai(head);/*getchar();*/break;/*修改*/
case '4':head=Delbook(head);/*getchar();*/break;/*删除*/
case '5':Printlist(head);/*getchar();*/break;/*输出记录*/
case '0':exit (0);/*退出*/
default:printf("无此操作\n按任意键继续...\n");getchar();break;
}
fflush(stdin);
system("cls");
}while(n!=0);
getchar();
getchar();
return 0;
}
/*************************************************************************************
* 图书信息链表建立函数 *
* 1)以结构体方式实现图书信息记录,每条记录应包括图书编 *
* 号(ISBN)、书名、作者、出版社、出版年月、定价、备注等数据域;
*
* *
*************************************************************************************/
struct BOOK *Creat(struct BOOK *head)
{
//static struct BOOK *head;
struct BOOK *p;
static struct BOOK *q;
char number[15];
printf("不输入字符直接回车即停止继续增加信息!!!\n");
printf("请输入图书编号:\n");
gets(number);
while(strlen(number)!=0)
{
p=(struct BOOK *)malloc(LEN);
if(p==NULL)
{
printf("callocion error.\n");
exit(0);
}
strcpy(p->booknumber,number);
printf("请输入书名:\n");
gets(p->bookname);
fflush(stdin);
printf("请输入作者名:\n");
gets(p->bookauthor);
fflush(stdin);
printf("请输入出版社:\n");
gets(p->bookpress);
fflush(stdin);
printf("请输入图书价格:\n");
scanf("%f",&p->bookprice);
fflush(stdin);
printf("请输入图书备注:\n");
gets(p->bookremark);
fflush(stdin);
p->next=NULL;
if(head==NULL)
head=p;
else
q->next=p;
q=p;
printf("不输入字符直接回车即停止继续增加信息!!!\n");
printf("请输入图书编号:\n");
gets(number);
fflush(stdin);
}
system("cls");
return (head);
}
struct BOOK *Printlist(struct BOOK *head)
{
int count=0;
struct BOOK *p=head;
if(head==NULL)
{
printf("图书信息为空.\n按任意键继续...");
getchar();
return (head);
}
printf("所有图书信息如下:\n");
for (p=head;p!=NULL;p=p->next)
{
count++;
printf("第%d本图书信息:\n",count);
printf("booknumber:%s\n",p->booknumber);
printf("bookname:%s\n",p->bookname);
printf("bookauthor:%s\n",p->bookauthor);
printf("bookpress:%s\n",p->bookpress);
printf("bookprice:%.2f\n",p->bookprice);
printf("bookremark:%s\n\n",p->bookremark);
}
printf("所有图书信息已输出完毕\n按任意键继续...");
getchar();
return (head);
}
struct BOOK *Xiugai(struct BOOK *head)
{
char bookname[20];
char n;
int count=0;
struct BOOK *p=head;
if(head==NULL)
{
printf("图书信息为空.\n按任意键继续...");
getchar();
return (head);
}
printf("现在只提供按bookname查找修改.\n");
printf("如有需要请联系作者.\n");
printf("请输入要修改信息的书名(bookname):\n");
gets(bookname);
//search(head,bookname[]);
for(p=head;p!=NULL;p=p->next)
if(strcmp(bookname,p->bookname)==0)
while(1)
{
count++;
printf("你要修改的图书的信息如下:\n");
printf("booknumber:%s\n",p->booknumber);
printf("bookname:%s\n",p->bookname);
printf("bookauthor:%s\n",p->bookauthor);
printf("bookpress:%s\n",p->bookpress);
printf("bookprice:%.2f\n",p->bookprice);
printf("bookremark:%s\n\n",p->bookremark);
printf("#########################\n");
printf("#请输入要更改的选项:\t#\n");
printf("#1.修
改图书名(bookname) #\n");
printf("#2.修改图书编号\t\t#\n");
printf("#3.修改图书作者\t\t#\n");
printf("#4.修改图书出版社\t#\n");
printf("#5.修改图书价格\t\t#\n");
printf("#6.修改图书备注\t\t#\n");
printf("#0.返回主菜单\t\t#\n");
printf("#########################\n");
scanf("%c",&n);
fflush(stdin);
switch(n)
{
case '0':return (head);
case '1':printf("图书名:%s改为:\n",p->bookname);
gets(bookname);
strcpy(p->bookname,bookname);
break;
case '2':printf("图书编号:%s改为\n",p->booknumber);
gets(bookname);
strcpy(p->booknumber,bookname);
break;
case '3':printf("图书作者:%s改为\n",p->bookauthor);
gets(bookname);
strcpy(p->bookauthor,bookname);
break;
case '4':printf("图书出版社:%s改为\n",p->bookpress);
gets(bookname);
strcpy(p->bookpress,bookname);
break;
case '5':printf("图书价格:%.2f改为\n",p->bookprice);
scanf("%f",&p->bookprice);
break;
case '6':printf("图书备注:%s改为\n",p->bookremark);
gets(bookname);
strcpy(p->bookremark,bookname);
break;
default: printf("输入有误.\n按任意键继续...\n");getchar();
}
system("cls");
}
if(count==0)
printf("未找到此图书信息.\n按任意键继续...\n");
getchar();
return (head);
}
struct BOOK *Delbook(struct BOOK *head)
{
struct BOOK *p=head;
struct BOOK *q;
char bookname[15];
if(head==NULL)
{
printf("图书信息为空.\n按任意键继续...");
getchar();
return (head);
}
printf("现在只提供按bookname查找修改删除.\n");
printf("如有需要请联系作者.\n");
printf("请输入要删除信息的书的书名(bookname):\n");
gets(bookname);
while(strcmp(bookname,p->bookname)!=0&&p->next!=NULL)
{
q=p;
p=p->next;
}
if(strcmp(bookname,p->bookname)==0)
{
if(p==head)
head=p->next;
else
q->next=p->next;
free(p);
printf("图书信息已删.\n按任意键继续...\n");
//getchar();
}
else
printf("图书未找到.\n按任意键继续...\n");
getchar();
return (head);
}
struct BOOK *Search(struct BOOK *head)/*查找*/
{
struct BOOK *p=head;
char bookname[15];
int count=0;
if(head==NULL)
{
printf("图书信息为空.\n按任意键继续...\n");
getchar();
return head;
}
printf("现在只提供按bookname查找输出该项所有记录.\n");
printf("如有需要请联系作者.\n");
printf("请输入要查找信息的书名(bookname):\n");
gets(bookname);
for(;(p!=NULL)&&(strcmp(bookname,p->bookname)==0);p=p->next)
{
count++;
printf("你所查找的图书信息如下:\n");
printf("booknumber:%s\n",p->booknumber);
printf("bookname:%s\n",p->bookname);
printf("bookauthor:%s\n",p->bookauthor);
printf("bookpress:%s\n",p->bookpress);
printf("bookprice:%.2f\n",p->bookprice);
printf("bookremark:%s\n",p->bookremark);
}
if(count==0)
printf("未找到该图书信息.\n请查证后再次查询!\n");
printf("按任意键继续...\n");
getchar();
return head;
}