C 课设—图书管理系统

一、课程设计与题目要求

图书登记管理程序

问题描述:

设计一个图书登记管理程序,以方便图书管理员管理图书馆内的图书,该程序应该具有以下功能:

(1)从键盘输入某本图书的信息

(2)给定图书的国际标准书号(ISBN),显示该图书的信息。

(3)给定图书的作者,显示所有该作者所著的图书。

(4)给定国际标准书号(ISBN),修改该图书的信息。

(5)给定国际标准书号(ISBN),删除该图书的信息。

题目要求:

(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。

(2)图书信息应该包含国际标准书号、图书名称、图书出版社、图书作者(假设一个作者)、图书价格、出版时间。

(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

输入要求:

(1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。

(2)能对输入的数据进行简单的校验,例如,出版时间必须是一个合法的日期格式,际标准书号是唯一的(一个国际标准书号对应一种图书信息)。

输出要求:

(1)应用程序运行后,要在屏幕上显示一个菜单。

(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。

(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定国际标准书号删除图书信息时,如果该图书不存在,要提示没能删除,如果删除成功要提示删除成功。

实现要求:

(1)在程序中使用链表存储图书信息。

(2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。

二、程序运行结果

添加图书信息界面

修改图书信息

删除图书信息

按图书编号查找

按作者查找

按出版社查找

查询不存在的图书

三、程序源代码

#include
#include
#include
#include
#include
#include
//图书信息结构体
typedef struct book
{
char bookid[20];//图书编号
char bookname[50];//图书名
char author[50];//作者姓名
char press[50];//出版社
float price;//图书价格
char time[50];//出版时间
struct book *next;  //定义book类型对象指针
}book;
book* head;//定义头结点
int length;//链表长度
//模块化接口设计
void menu();//菜单函数
void show();//显示图书信息函数
void Add();//添加图书信息函数
void Delete();//删除图书信息函数
void search();//搜索图书信息函数
void modify();//修改图书信息函数
/*
主函数
功能描述:程序的主体
*/
int main(void)
{
int a;
menu();
head=(book*)malloc(sizeof(book));//头结点开辟空间
head->next=NULL;//头指针初始化为空
while(1)
{
printf("请选择相应的功能:");
scanf("%d",&a);
switch(a)
{
case 0:
return 0;
case 1:
if(head!=NULL)
{
show();
menu();
}
break;
case 2:
Add();
menu();
break;
case 3:
if(head)
{
search();
menu();
}
break;
case 4:
if(head)
{
Delete();
menu();
}
break;
case 5:
if(head)
{
modify();
menu();
}
break;
default:
break;
}
}
return 0;
}
//菜单函数
void menu()
{
printf("-------------------------------------\n");
printf("      欢迎进入图书登记管理系统       \n");
printf("           0.退出系统                 \n");
printf("           1.显示图书信息             \n");
printf("           2.添加图书信息             \n");
printf("           3.查询图书信息             \n");
printf("           4.删除图书信息             \n");
printf("           5.修改图书信息             \n");
printf("--------------------------------------\n");
return;
}
//显示函数
void show()
{
book *p=head->next;
if(p==NULL)
{
printf("图书信息为空,请先输入图书信息!\n");
system("pause");
system("cls");
return;
}
printf("所有的图书信息如下:\n");
while(p!=NULL)
{
printf("%s %s %s %s %.2f %s\n",p->bookid,p->bookname,p->author,p->press,p->price,p->time);
p=p->next;
}
system("pause");
system("cls");
return;
}
//添加函数
void Add()
{
book *p1,*p2;
length=0;
p1=head; 
printf("请输入图书的编号,书名,作者姓名,出版社,价格,出版时间:\n");
while(1)
{
p2=(book*)malloc(sizeof(book));//动态申请一个空间,用来存放一个节点,并用临时指针p2指向这个节点
scanf("%s",&p2->bookid);
if(p2->bookid[0]=='0')
{
printf("图书信息输入完成!\n");
system("pause");
break;
}
scanf("%s %s %s %f %s",&p2->bookname,&p2->author,&p2->press,&p2->price,&p2->time);
length++;
p2->next=p1->next;
p1->next=p2;
}
system("cls");
return;
}
//删除函数
void Delete()
{
char num[20];
book *p,*q;
q=head;
p=head->next;
if(p==NULL)
{
printf("图书信息为空,请先输入图书信息!\n");
system("pause");
system("cls");
return;
}
printf("请输入要删除的图书编号:\n");
scanf("%s",&num);
while(p!=NULL)
{
if(strcmp(p->bookid,num)==0)
{
q->next=p->next;//断开q节点
free(p);//释放q节点
length--;
printf("删除成功!\n");
system("pause");
system("cls");
return;
}
//为假时
p=p->next;//p指针后移
q=q->next;//q指针后移
}
if(p==NULL)
{
printf("找不到这本书!\n");
system("pause");
system("cls");
return;
}
}
//搜索函数
void search()
{
int x,flag1=0,flag2=0;
char num[20],name[20],press[20];
book *p=head->next;
if(p==NULL)
{
printf("图书信息为空,请先输入图书信息!\n");
system("pause");
system("cls");
return;
}
printf("1.根据图书编号查找\n");
printf("2.根据作者姓名查找\n");
printf("3.根据出版社查找\n");
printf("请选择功能:\n");
scanf("%d",&x);
if(x==1)
{
printf("需要查找的图书编号为:");
scanf("%s",&num);
while(p!=NULL)
{
if(strcmp(p->bookid,num)==0)
{
printf("图书编号为%s的图书信息:\n",num);
printf("%s %s %s %s %.2f %s\n",p->bookid,p->bookname,p->author,p->press,p->price,p->time);
system("pause");
system("cls");
return;
}
p=p->next;
}
if(p==NULL)
{
printf("查无此书!\n");
}
}
else if(x==2)
{
printf("需要查找的作者姓名为:");
scanf("%s",&name);
while(p!=NULL)
{
if(strcmp(p->author,name)==0)
{
if(flag1==0)
printf("作者为%s的图书信息:\n",name);
flag1=1;
printf("%s %s %s %s %.2f %s\n",p->bookid,p->bookname,p->author,p->press,p->price,p->time);
}
p=p->next;
}
if(flag1==0)
{
printf("查无此作者!\n");
}
}
else if(x==3)
{
printf("需要查找的出版社为:");
scanf("%s",&press);
while(p!=NULL)
{
if(strcmp(p->press,press)==0)
{
if(flag2==0)
printf("出版社为%s的图书信息:\n",press);
flag2=1;
printf("%s %s %s %s %.2f %s\n",p->bookid,p->bookname,p->author,p->press,p->price,p->time);
}
p=p->next;
}
if(flag2==0)
{
printf("查无此出版社!\n");
}
}
system("pause");
system("cls");
return;
}
//修改函数
void modify()
{
char num[20];
book *p;//定义指针
p=head->next;
if(p==NULL)
{
printf("图书信息为空,请先输入图书信息!\n");
system("pause");
system("cls");
return;
}
printf("请输入要修改的图书编号:\n");
scanf("%s",&num);
while(p!=NULL)
{
if(strcmp(p->bookid,num)==0)
{
printf("修改的书籍信息为:\n");
printf("%s %s %s %s %.2f %s\n",p->bookid,p->bookname,p->author,p->press,p->price,p->time);
printf("请输入要修改的书籍信息(图书编号、书名、作者、出版社、价格、出版时间的顺序输入):\n");
scanf("%s %s %s %s %f %s",&p->bookid,&p->bookname,&p->author,&p->press,&p->price,&p->time);
printf("修改成功!\n");
system("pause");
system("cls");
return;
}
//为假时
p=p->next;//指针后移
}
if(p==NULL)
{
printf("找不到这本书!\n");
system("pause");
system("cls");
return;
}
system("cls");
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部