这是我编的程序,如何加入借书和还书的操作?求帮忙
#include<stdio.h> #include<string.h>
#include<stdlib.h>
#include<math.h>
typedef struct
{ char name[10]; //姓名
char call[120]; //电话
}datatype;
typedef struct
{ char name1[20]; //书名
char numb[30]; //书号
}booktype;
typedef struct node
{
datatype data;
booktype book;
struct node * next;
}listnode;
typedef listnode * linklist,*linklist1;
linklist head;
linklist1 head1;
listnode * p;
listnode * p1;
//图书馆用户信息的建立
linklist Create(int a )
{
linklist head=(listnode *)malloc(sizeof(listnode));
listnode *p,*q;
q=head;
while(a--)
{
p=(listnode *)malloc(sizeof(listnode));
printf("姓名 电话 \n");
scanf("%s%s",p->data.name,p->data.call);
q->next=p;
q=p;
}
q->next=NULL;
return head;
}
linklist1 addbook(int a)
{
linklist1 head1=(listnode *)malloc(sizeof(listnode));
listnode *p,*q;
q=head1;
while(a--){
p=(listnode *)malloc(sizeof(listnode));
printf("书名 书号\n");
scanf("%s%s",p->book.name1,p->book.numb);
q->next=p;
q=p;
}
q->next=NULL;
return head1;
}
//图书用户信息的添加
void Add(linklist head,int b)
{
listnode * m,* n,* p;
m=head;
n=m->next;
while(n->next!=NULL)
{
m=n;
n=n->next;
}
while(b--)
{
p=(listnode *)malloc(sizeof(listnode));
printf("姓名 电话 \n");
printf("**********************\n");
scanf("%s%s",p->data.name,p->data.call);
m->next=p;
n=p;
}
n->next=NULL;
}
//按用户姓名查找用户信息
listnode * Find(linklist head)
{
listnode *p;
char name[10];
int i;
printf("**********************\n");
printf("**********************\n");
printf("按姓名查找,按1表示查找");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入要查找的姓名");
scanf("%s",&name);
while(p&&strcmp(p->data.name,name)>0)
p=p->next;
if(p==NULL||strcmp(p->data.name,name)<0)
p=NULL;
}
return p;
}
//按图书姓名查找用户信息
listnode * Find1(linklist1 head1)
{
listnode *p1;
char name1[20];
int i;
printf("**********************\n");
printf("**********************\n");
printf("书名查找,按1表示查找");
p1=head1->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入要查找的书名");
scanf("%s",&name1);
while(p&&strcmp(p->book.name1,name1)>0)
p=p->next;
if(p==NULL||strcmp(p->book.name1,name1)<0)
p=NULL;
}
return p;
}
//按姓名信息的修改
void Alter(linklist1 head1)
{
listnode * p;
p= Find1(head1);
if(p==NULL)
{
printf("用户信息不存在\n");
}
else
{
printf(" 书名 书号\n");
scanf("%s %s \n",p->data.name,p->data.call);
printf("用户信息已修改!");
}
}
//用户信息的删除
void Delete(linklist head)
{
int i;
listnode *p,*q;
p=Find(head);
if(p==NULL)
{
printf("信息不存在\n");
return;
}
else
{
printf("要删除的话就按1:");
scanf("%d",&i);
if(i==1)
{
q=head;
while(q!=NULL&&q->next!=p)
q=q->next;
q->next=p->next;
free(p);
printf("已删用户信息\n");
}
}
}
//用户信息的输出
void List(linklist head)
{
listnode *p;
p=head;
printf("姓名 电话\n");
printf("**********************\n");
while(p->next!=NULL)
{
printf("%s %s \n",p->next->data.name,p->next->data.call);
p=p->next;
}
}
int Menu1()
{
int i;
printf(" \n");
printf(" \n");
printf(" 系统管理图书信息 \n");
printf("*******************************************************************************\n");
printf("*******************************************************************************\n");
printf("** 1.用户信息的添加 **\n");
printf("** 2.用户姓名的查询 **\n");
printf("** 3.图书书名的查询 **\n");
printf("** 4.图书信息的修改 **\n");
printf("** 5.用户信息的删除 **\n");
printf("** 6.用户信息的输出 **\n");
printf("** 0.退出 **\n");
printf("*******************************************************************************\n");
printf("*******************************************************************************\n");
printf(" \n");
printf(" 请选择0-6:");
for(;;)
{
scanf("%d",&i);
printf("\n");
if(i<0||i>9)
printf(" 输出错误,重选0-6:");
else
break ;
}
return i;
}
int Menu2()
{
int i;
printf(" \n");
printf(" \n");
printf("** 1.添加图书 **\n");
printf("** 2.查询所有用户 **\n");
printf(" 请选择1,2: \n");
for(;;)
{
scanf("%d",&i);
printf("\n");
if(i!=1&&i!=2)
printf(" 输出错误,重选1,2:");
else
break ;
}
return i;
}
int guanli()
{
char *p,b[21]="1";
int c,c1=1;
while(1){
printf("请输入您的用户名:\n");
p = (char*) malloc (20);
gets(p);
printf("请输入您的密码:\n");
scanf("%d",&c);
if(strcmp(p,b)!=0||c!=c1){
printf("验证失败,请重新输入!\n");
getchar();
}
else{
printf("验证成功!\n");
return 1;
break;
}
}
}
//图书管理系统主函数部分
void main()
{
int a;
int d,c,c1=1;
char b[21],b1[10]="1";
printf("*******************************************************************************\n");
printf("** 1.用户信息的创建 **\n");
printf("** 2.管理员登陆 **\n");
printf("** 0.退出 **\n");
printf("*******************************************************************************\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("*********************************用户信息的创建******************************\n");
head=Create(1);
break;
case 2:
getchar();
if(guanli()==1){
switch(Menu2())
{
case 1:
int i;
printf("添加图书数目\n");
scanf("%d",&i);
addbook(i);
break;
case 2:
printf("*******************************用户信息的输出*****************************\n");
List(head);
break;
}
}
break;
case 0:
printf("***********************************退出*************************************\n");
exit(0);
}
for(;;)
{
switch(Menu1())
{
case 1:
printf("********************************用户信息的添加?*******************************\n");
int a;
printf("人数输入你想添加的?");
scanf("%d",&a);
Add(head,a);
break;
case 2:
printf("********************************用户姓名的查询******************************\n");
p=Find(head);
if(p!=NULL)
{
printf("姓名 电话 书名 书号\n");
printf("**********************\n");
printf("%s %s \n",p->data.name,p->data.call);
printf("\n");
printf("**********************\n");
}
else
printf("该用户信息不存在!");
break;
case 3:
printf("********************************图书书名的查询******************************\n");
p=Find1(head1);
if(p!=NULL)
{
printf("姓名 电话 书名 书号\n");
printf("**********************\n");
printf("%s %s %s %s\n",p->data.name,p->data.call,p->book.name1,p->book.numb);
printf("\n");
printf("**********************\n");
}
else
printf("该用户信息不存在!");
break;
case 4:
printf("********************************图书信息的修改******************************\n");
Alter(head1);
break;
case 5:
printf("******************************** 用户信息的删除******************************\n");
Delete(head);
break;
case 6:
printf("*******************************用户信息的输出*****************************\n");
List(head);
break;
case 0:
printf("***********************************退出*************************************\n");
exit(0);
}
}
}