能运行但是删不了
#include "stdlib.h"
#include "conio.h"
#include "stdio.h"
#include "windows.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct readerinfo
{
char name[20];
char sfzid[50];
char phonenum[30];
char readernum[20];
char readerpwd[20];
struct readerinfo *next ;
};
struct readerinfo *rhead;
struct bookmanage
{
char managepwd[20];
char managenum[20];
struct bookmanage *next;
};
struct bookmanage *bmhead;
struct bookinfo
{
char booknum [10];
char ISBN[20];
char publisher[40];
struct bookinfo *next;
};
struct bookinfo *bhead;
struct borrowandretuen//借还信息
{
char booknum[10];
char name[10];
char managename[20];
char borrowdate[20];
char retuendate[20];
char state[10];//借阅状态(是否归还)
struct borrowandretuen *next;
};
struct borrowandretuen *brhead;
int login();
void menu();
void menumanager();
void menureader();
void readermmenu();
void addbook();
void addreader();
void Borrowbooks();
void rutuenbooks();
void reselfinfo();
void rederquery();
void openbooksfile();
void openreadersfile();
void openbrfile();
void modifybookinfo();
void querybookinfo();
void modifyreader();
void queryreaderinfo();
void Deletebookinfo();
int main(int argc, char** argv)
{
//login();
int flag;
//menu();
printf("请选择操作方式\n");
scanf("%d",&flag);
while(flag==1)
{
int a;
menumanager();
printf(" 请选择操作选项\n");
scanf("%d",&a);
switch(a)
{
case 0:
exit(0);
case 1:
if(bhead==NULL)
{
openbooksfile();
}
addbook();
break;
case 2:
if(bhead==NULL)
{
openbooksfile();
}
modifybookinfo();
break;
case 3:
if(bhead==NULL)
{
openbooksfile();
}
Deletebookinfo();
break;
case 4:
if(bhead==NULL)
{
openbooksfile();
}
querybookinfo();
system("pause");
break;
case 5:
if(brhead==NULL)
{
openbrfile();
}
Borrowbooks();
break;
case 6:
if(brhead==NULL)
{
openbrfile();
}
rutuenbooks();
break;
case 8:
system("cls");
int c;
readermmenu();
printf("请选择操作选项\n");
scanf("%d",&c);
switch(c)
{
case 1:
openreadersfile();
addreader();
break;
case 2:
if(rhead==NULL)
{
openreadersfile();
}
modifyreader();
break;
case 4:
openreadersfile();
break;
case 6:
menumanager();
flag=1;
break;
default:
break;
}
default:
break;
}
}
while(flag==2)
{
int a;
menureader();
printf(" 请选择操作选项\n");
scanf("%d",&a);
switch(a)
{
case 0:
exit(0);
case 1:
rederquery ();
break;
case 3:
if(rhead==NULL)
{
openreadersfile();
}
modifyreader();
break;
case 4:
if(rhead==NULL)
{
openreadersfile();
}
queryreaderinfo();
break;
default:
break;
}
}
}
int login()
{
char uname[20];
char tch,upassword[10];
char password1[10]="123456";
printf("\t\t");
printf("请输入您的用户id:");
printf("\t");
scanf("%s",uname);
fflush(stdin);
printf("\n");
printf("\t\t");
printf("请输入您的登陆密码:");
int k=0;
while(k<10 &&((tch=getch())!='\r')){
if(tch==8 && k>0)
{
putchar('\b');
putchar(' ');
putchar('\b');
k--;
}
if(!isdigit(tch)&&!isalpha(tch))
continue;
putchar('*');
upassword[k++]=tch;
}
upassword[k]=0;
fflush(stdin);
printf("\n");
printf("\t\t请选择身份信息,1:管理员 2:读者\n");
}
void menu()
{
system("cls");
printf("\n\n\n");
printf(" -------------------------欢迎使用图书借还信息管理系统-------------------------\n");
printf(" | |\n");
printf(" | 请选择登录方式 |\n");
printf(" | 1.管理员 |\n");
printf(" | 2.读者 |\n");
printf(" | |\n");
printf(" ------------------------------------------------------------------------------\n");
}
void menumanager()
{ //管理员菜单
system("cls");
printf("\n\n\n");
printf(" ┌──────────────────欢迎使用图书借还信息管理系统--管理员────────────────────┐ \n");
printf(" │ │ \n");
printf(" │ 请选择操作项目: │ \n");
printf(" │ 1.录入图书信息 2.修改图书信息 │ \n");
printf(" │ 3.删除图书信息 4.查询图书信息 │ \n");
printf(" │ 5.借阅图书 6.归还图书 │ \n");
printf(" │ 7.管理员信息管理 8.借阅证管理 │ \n");
printf(" │ 0.退出系统 │ \n");
printf(" └──────────────────────────────────────────────────────────────────────────┘ \n");
}
void readermmenu()
{ //管理读者信息菜单
system("cls");
printf("\n\n\n");
printf(" ┌──────────欢迎使用图书借还信息管理系统--管理员────────────┐ \n");
printf(" │ │ \n");
printf(" │ 请选择操作项目: │ \n");
printf(" │ 1.录入读者信息 2.修改读者信息 │ \n");
printf(" │ 3.删除读者信息 4.查询读者信息 │ \n");
printf(" │ 5.统计读者借阅信息 6.返回上一级菜单 │ \n");
printf(" └──────────────────────────────────────────────────────────┘ \n");
}
void menureader()
{ //读者菜单
system("cls");
printf("\n\n\n");
printf(" ┌───────────欢迎使用图书借还信息管理系统--读者─────────────┐ \n");
printf(" │ │ \n");
printf(" │ 请选择操作项目: │ \n");
printf(" │ 1.查询图书信息 2.查询借还书信息 │ \n");
printf(" │ 3.修改个人信息 0.退出系统 │ \n");
printf(" └──────────────────────────────────────────────────────────┘ \n");
}
void rederquery ()
{
int a;
char b[20];
int flag=1;
while(flag=1)
{
printf("请选择查询方式:1.书名查询 2.ISBN码查询\n");
scanf("%d",&a);
if(a=1)
{
printf("请输入书名\n");
scanf("%s",&b);
if(strcmp(bhead[a].booknum,b )==0)
{
printf("书名《%s》 ISBN:%s",bhead[a].booknum,bhead[a].ISBN);
break;
}else
{
printf("输入错误\n");
break;
}
}
if(a=2)
{
printf("请输入ISBN\n");
scanf("%s",&b);
if(strcmp(bhead[a].ISBN,b )==0)
{
printf("书名《%s》 ISBN:%s",bhead[a].booknum,bhead[a].ISBN);
break;
}else
{
printf("输入错误\n");
break;
}
}
}
}
void openbooksfile()
{
struct bookinfo *qe;
struct bookinfo *qt;
FILE *file;
bhead=(struct bookinfo *)malloc(sizeof(struct bookinfo));
bhead->next =NULL;//指针域
file=fopen("book.txt","a+");
if(file=NULL)
{
printf("文件打不开,请联系管理员\n");
exit(1);
}
getc(file);
if(file!=NULL)
{
if(feof(file))
{
printf("文件为空!\n");
}
rewind(file);
if(file!=NULL)
{
qe=(struct bookinfo *)malloc(sizeof(struct bookinfo));
qe->next=NULL;
bhead=qe;
while(!feof(file))
{
qt=(struct bookinfo *)malloc(sizeof(struct bookinfo));
qt->next=NULL;
fscanf(file,"%s%s%s\n",qt->booknum,qt->ISBN,qt->publisher);
qe->next=qt;
qe=qe->next;
}
}
}
}
void openreadersfile()
{
struct readerinfo *qe;
struct readerinfo *qt;
FILE *file;
rhead=(struct readerinfo*)malloc(sizeof(struct readerinfo));
rhead->next=NULL;
file=fopen("reader.txt","a+");
if(file=NULL)
{
printf("文件打不开,请联系管理员\n");
exit(1);
}getc(file);
rewind(file);
if(file!=NULL)
{
qe=(struct readerinfo *)malloc(sizeof(struct readerinfo));
qe->next=NULL;
rhead=qe;
while(!feof(file))
{
qt=(struct readerinfo *)malloc(sizeof(struct readerinfo));
qt->next=NULL;
fscanf(file,"%s\t%s\t%s\t%s\t%s\n",qt->name,qt->sfzid,qt->phonenum,qt->readernum,qt->readerpwd);
qe->next=qt;
qe=qe->next;
}
}
}
void openbrfile()
{
struct borrowandretuen *qe;
struct borrowandretuen *qt;
FILE *file;
brhead=(struct borrowandretuen*)malloc(sizeof(struct borrowandretuen));
brhead->next=NULL;
file=fopen("borrowandretuen.txt","a+");
if(file=NULL)
{
printf("文件打不开,请联系管理员\n");
exit(1);
}getc(file);
rewind(file);
if(file!=NULL)
{
qe=(struct borrowandretuen *)malloc(sizeof(struct borrowandretuen));
qe->next=NULL;
brhead=qe;
while(!feof(file))
{
qt=(struct borrowandretuen *)malloc(sizeof(struct borrowandretuen));
qt->next=NULL;
fscanf(file,"%s\t%s\t%s\t%s\t%s\n",qt->booknum,qt->name,qt->borrowdate,qt->retuendate,qt->managename);
qe->next=qt;
qe=qe->next;
}
}
}
void addbook()
{ struct bookinfo *qe;
FILE *p;//文件指针
int flag=1;//是否继续录入书籍信息
struct bookinfo *newNode;
struct bookinfo *currentNode;
p=fopen("book.txt","a+");
if(p==NULL)
{
printf("文件打开失败,请联系管理员\n");
exit(1);
}
if(p!=NULL)
{
qe=(struct bookinfo *)malloc(sizeof(struct bookinfo));
qe->next=NULL;
qe=bhead;
while(qe->next!=NULL)
{
qe=qe->next;
}
currentNode=qe;
while(flag==1)
{
newNode=(struct bookinfo *)malloc(sizeof(struct bookinfo));
newNode->next=NULL;
system("cls");
printf("请输入图书编号\n");
scanf("%s",newNode->booknum);
printf("请输入图书ISBN码\n");
scanf("%s",newNode->ISBN);
printf("请输入出版社\n");
scanf("%s",newNode->publisher);
currentNode->next =newNode;//将新结点连接到原链表的最后一个结点上去
currentNode=newNode;//currentNode结点后移,newNode变成当前结点
fprintf(p,"%s\t%s\t%s\n",newNode->booknum,newNode->ISBN,newNode->publisher);
printf("\t是否继续录入图书信息?\n");
printf("\n");
printf("\t\t1--Yes\t0--No\n");
scanf("%d",&flag);
}
}
fclose(p);
}
void addreader()
{ struct readerinfo *qe;
struct readerinfo *newNode;
FILE *p;
int flag=1;
struct readerinfo *currentNode;
p=fopen("reader.txt","a+");
if(p==NULL)
{
printf("文件打开失败,请联系管理员\n");
exit(1);
}
if(p!=NULL)
{
qe=(struct readerinfo *)malloc(sizeof(struct readerinfo));
qe->next=NULL;
qe=rhead;
while(qe->next!=NULL)
{
qe=qe->next;
}
currentNode=qe;
while(flag==1)
{
newNode=(struct readerinfo *)malloc(sizeof(struct readerinfo));
newNode->next=NULL;
system("cls");
printf("请输入读者姓名\n");
scanf("%s",newNode->name);
printf("请输入身份证号码\n");
scanf("%s",newNode->sfzid);
printf("请输入手机号码\n");
scanf("%s",newNode->phonenum);
currentNode->next =newNode;
currentNode=newNode;
fprintf(p,"%s\t%s\t%s\n",newNode->name,newNode->phonenum,newNode->sfzid);
printf("\t是否继续录入读者信息?\n");
printf("\n");
printf("\t\t1--Yes\t0--No\n");
scanf("%d",&flag);
}
}
fclose(p);
}
void Borrowbooks()
{ struct borrowandretuen *qe;
FILE *p;//文件指针
int flag=1;//是否继续录入书籍信息
struct borrowandretuen *newNode;
struct borrowandretuen *currentNode;
p=fopen("borrowandretuen.txt","a+");
if(p==NULL)
{
printf("文件打开失败,请联系管理员\n");
exit(1);
}
if(p!=NULL)
{
qe=(struct borrowandretuen *)malloc(sizeof(struct borrowandretuen));
qe->next=NULL;
qe=brhead;
while(qe->next!=NULL)
{
qe=qe->next;
}
currentNode=qe;
while(flag==1)
{
newNode=(struct borrowandretuen *)malloc(sizeof(struct borrowandretuen));
newNode->next=NULL;
system("cls");
printf("请输入借阅证姓名\n");
scanf("%s",newNode->name);
printf("请输入图书编码码\n");
scanf("%s",newNode->booknum);
printf("请输入借阅日期\n");
scanf("%s",newNode->borrowdate);
printf("请输入归还日期\n");
scanf("%s",newNode->retuendate);
currentNode->next =newNode;//将新结点连接到原链表的最后一个结点上去
currentNode=newNode;//currentNode结点后移,newNode变成当前结点
fprintf(p,"%s\t%s\t%s\n",newNode->name,newNode->booknum,newNode->borrowdate,newNode->retuendate);
printf("\t是否继续录入信息?\n");
printf("\n");
printf("\t\t1--Yes\t0--No\n");
scanf("%d",&flag);
}
}
fclose(p);
}
void rutuenbooks()
{
char d[20];
struct borrowandretuen *pe;
int flag=1;
FILE *p;
p=fopen("borrowandretuen.txt","a+");
pe=brhead->next;
if(p!=NULL)
{
while(flag==1)
{
printf("请输入借阅者的名字\n");
scanf("%s",d);
if(strcmp(d,pe->name)==0)
{
pe=brhead;
fprintf(p,"%s\t%s\t%s\t%s\t%s\t\n",pe->name,pe->booknum,pe->borrowdate,pe->retuendate,pe->managename,pe->state);
}else
{
printf("未找到该借阅者,请确认是否名字正确\n");
printf("\t是否重新登记?\n");
printf("\n");
printf("\t\t1--Yes\t0--No\n");
scanf("%d",&flag);
}
}
}
fclose(p);
}
void modifybookinfo()
{ struct bookinfo *pe;
char c[40];
FILE *p;
p=fopen("book.txt","w");
printf("请输入要修改的图书编号\n");
scanf("%s",c);
pe=bhead->next;
while(p!=NULL)
{
if(strcmp(c,pe->booknum)==0)
{
printf("找到要修改的图书,请按要求录入该图书新的信息:\n");
printf("请输入新的图书编号:\n");
scanf("%s",&pe->booknum);
fflush(stdin);
printf("请输入新的图书ISBN:\n");
scanf("%s",&pe->ISBN);
printf("请输入新的图书出版社:\n");
scanf("%s",&pe->publisher);
break;
}else
{
pe=pe->next;
}
}
if(p==NULL)
{
printf("文件无法打开\n");
return;
}else
{
pe=bhead;
while(pe->next!=NULL)
{
fprintf(p,"%s\t%s\t%s\n",pe->next->booknum,pe->next->ISBN,pe->next->publisher);
pe=pe->next;
}
}
fclose(p);
}
void modifyreader()
{
struct readerinfo *pe;
char c[40];
FILE *p;
p=fopen("reader.txt","w");
printf("请输入要修改的读者姓名\n");
scanf("%s",c);
pe=rhead->next;
while(p!=NULL)
{
if(strcmp(c,pe->name)==0)
{
printf("找到要修改读者,请按要求输入该读者新的信息:\n");
printf("请输入新的读者姓名:\n");
scanf("%s",&pe->name);
fflush(stdin);
printf("请输入新的读者手机号码:\n");
scanf("%s",&pe->phonenum);
printf("请输入新的读者身份证号码:\n");
scanf("%s",&pe->sfzid);
break;
}else
{
pe=pe->next;
}
}
if(p==NULL)
{
printf("文件无法打开\n");
return;
}else
{
pe=rhead;
while(pe->next!=NULL)
{
fprintf(p,"%s\t%s\t%s\n",pe->next->name,pe->next->phonenum,pe->next->sfzid);
pe=pe->next;
}
}
fclose(p);
}
void querybookinfo()
{ char b[20];
struct bookinfo *qe;
qe=bhead;
FILE *p=fopen("book.txt","r");
if(p!=NULL)
{
printf("请输入要查找的图书编号\n");
scanf("%s",b);
while(b)
{ if(strcmp(b,qe->booknum)==0)
printf("\t编号\tISBN\t出版社\n");
printf("\t%s\t%s\t%s\n",qe->booknum,qe->ISBN,qe->publisher);
break;
}
}
fclose(p);
}
void queryreaderinfo()
{ char b[20];
struct readerinfo *qe;
qe=rhead;
FILE *p=fopen("reader.txt","r");
if(p!=NULL)
{
printf("请输入要查找的读者\n");
scanf("%s",b);
while(b)
{
if(strcmp(b,qe->name)==0)
printf("\t名字\t手机号码\t身份证号码\n");
printf("\t%s\t%s\t%s\n",qe->name,qe->phonenum,qe->sfzid);
break;
}
}
fclose(p);
}
void Deletebookinfo()
{
struct bookinfo d;
FILE *p;
p=fopen("book.txt","a+");
struct bookinfo *qe=bhead;
struct bookinfo *qt=bhead->next;
if(p==NULL)
{
printf("文件打开失败,请联系管理员\n");
exit(1);
}
if(p!=NULL)
{
printf("请输入要删除图书的编号\n");
scanf("%s",d.booknum);
if(strcmp(d.booknum,qt->booknum)==0)
{
qe->next=qt->next;
free(qt);
qt=NULL;
}
}fclose(p);
}
是删除的那部分跳过了吗