#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
typedef struct { //结点数据域类型定义
char isbn[10]; /*书号*/
char bkname[20]; /*书名*/
char author[10]; /*作者*/
float price; /*单价*/
int num; /*数量*/
} ElemType;
typedef struct LNode { //结点类型定义
ElemType data; //数据域
struct LNode *next; //指针域
} LNode , *LinkList ;
int menu_select()
{
int sel;
printf("\t\t简易图书管理系统\n");
printf("\t---------------------------------\n");
printf("\t\t0. 退出\n");
printf("\t\t1. 建立图书单链表\n");
printf("\t\t2. 图书的插入\n");
printf("\t\t3. 图书的查询\n");
printf("\t\t4. 图书的删除\n");
printf("\t\t5. 图书的输出\n");
printf("\t----------------------------------\n");
printf("\t\t请输入要选择的功能编号:");
scanf("%d",&sel);
return sel;
}
void CreateList(LinkList node)
{
void Insert(LinkList node,ElemType in);
ElemType e;
char temp[20];
do
{
printf("书号(4)书名(8) 作者 单价(11) 数量(30)\n");
scanf("%s%s%s%f%d",e.isbn,e.bkname,e.author,&e.price,&e.num);
Insert(node,e);
printf("是否继续添加(Y/N):");
scanf("%s",temp);
}while(!strcmp(temp,"Y")||!strcmp(temp,"y"));
}
void Insert(LinkList node,ElemType in)
{
LinkList p=NULL;
if(node->next==NULL)
{
node->next=(LinkList)malloc(sizeof(LNode));
p=node->next;
p->next=NULL;
p->data=in;
return ;
}
p=node->next;
while(p->next!=NULL)
{
p=p->next;
}
p->next=(LinkList)malloc(sizeof(LNode));
p=p->next;
p->next=NULL;
p->data=in;
}
LinkList Find(LinkList node)
{
LinkList p=node->next;
char temp[10];
printf("请输入要查询的书号:");
scanf("%s",temp);
while(p!=NULL)
{
if(!strcmp(p->data.isbn,temp))
return p;
p=p->next;
}
return NULL;
}
void Delete(LinkList node)
{
LinkList p=node->next;
LinkList q=NULL;
char temp[10];
printf("请输入要删除的书号:");
scanf("%s",temp);
while(p)
{
if(!strcmp(p->data.isbn,temp))
break;
q=p;
p=p->next;
}
if(q==NULL)
{
node->next=p->next;
free(p);
}
else
{
q->next=p->next;
free(p);
}
}
void PrintList(LinkList node)
{
LinkList p=node->next;
printf("书号 书 名 作者 单价 数量\n");
printf("-----------------------------------------------------\n");
while(p)
{
printf("%s%s%s%f%d\n",p->data.isbn,p->data.bkname,p->data.author,p->data.price,p->data.num);
p=p->next;
}
printf("-----------------------------------------------------\n");
}
int main()
{
ElemType e;
LinkList p;
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for (;;)
{ system("cls");
switch(menu_select())
{
case 1:
printf("****************************\n");
printf("* 即将建立图书单链表 *\n");
printf("****************************\n");
CreateList(L);
getch();
break;
case 2:
printf("****************************\n");
printf("* 图书的插入 *\n");
printf("****************************\n");
printf("书号(4)书名(8) 作者 单价(11) 数量(30)\n");
scanf("%s%s%s%f%d",e.isbn,e.bkname,e.author,&e.price,&e.num);
Insert(L,e);
getch();
break;
case 3:
printf("****************************\n");
printf("* 图书的查询 *\n");
printf("****************************\n");
p=Find(L);
if (p!=NULL)
{
printf("书号 书 名 作者 单价 数量\n");
printf("-----------------------------------------------------\n");
printf("%s%s%s%f%d\n",p->data.isbn,p->data.bkname,p->data.author,p->data.price,p->data.num);
printf("-----------------------------------------------------\n");
}
else
printf("没有查到要查询的图书!\n");
getch();
break;
case 4:
printf("****************************\n");
printf("* 图书的删除 *\n");
printf("****************************\n");
Delete(L);
getch();
break;
case 5:
printf("****************************\n");
printf("* 图书的打印输出 *\n");
printf("****************************\n");
PrintList(L);
getch();
break;
case 0:
printf("\t 退 出 !\n");
return 0;
}
}
return 0;
}
简易图书管理系统
最新推荐文章于 2023-06-26 13:15:22 发布