📄 last.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include"stdio.h"
#include"head.h"
#include <string.h>
int klenddelete;
int kbookdelete;
#define SIZElend 1
int klend;
#define SIZEbook 1
int kbook;
int klendb;
int kklendb;
struct LID lid[100];
struct BID bid[100];
struct LID inilend;
struct BID inibook;
void returnbook(void);
void initiallend(void);
void initialbook(void);
int lendbook(void);
void openfilelendb(void);
void openfile1lendb(void);
//书的查询处理程序
void openfiledeletefind()
{
FILE *fp;
int i,position=-1,result=0;
char choice,book[40];
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("can't open file!\n");
return ;
}
kbookdelete=0;
while(feof(fp)==0)
{
fread(&bid[kbookdelete],sizeof(struct BID),1,fp);
kbookdelete++;
}
kbookdelete--;
status:
printf("************************************************************\n");
printf(" 1.按书名!\n");
printf(" 2.按出版社!\n");
printf(" 3.按作者!\n");
printf(" 0.退出!\n");
printf("************************************************************\n");
choice=getche();
if(choice=='1')
{
result=0;
system("cls");
printf("\n\n请输入书名\n\n");
scanf("%s",book);
printf("查询结果:\n");
printf("=============================================================\n\n");
for(i=0;i<kbookdelete;i++)
if(strcmp(bid[i].BookName,book)==0)
{
printf("book[%-2d]=%-3d %-10s %-10s %-10s %-3d %-5s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
result=1;
}
if(result!=1)
printf(" 没有找到记录!^_^\n\n");
printf("\n=============================================================\n\n\n");
goto status;
}
else if(choice=='2')
{
result=0;
system("cls");
printf("\n\n请输入出版社名\n\n");
scanf("%s",book);
printf("查询结果:\n");
printf("=============================================================\n\n");
for(i=0;i<kbookdelete;i++)
if (strcmp(bid[i].PressName,book)==0)
{
printf("book[%-2d]=%-3d %-10s %-10s %-10s %-3d %-5s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
result=1;
}
if(result!=1)
printf(" 没有找到记录!^_^\n\n");
printf("\n=============================================================\n\n\n");
goto status;
}
else if(choice=='3')
{
result=0;
system("cls");
printf("\n\n请输入作者名\n\n");
scanf("%s",book);
printf("查询结果:\n");
printf("=============================================================\n\n");
for(i=0;i<kbookdelete;i++)
if(strcmp(bid[i].WriterName,book)==0)
{
printf("book[%-2d]=%-3d %-10s %-10s %-10s %-3d %-5s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
result=1;
}
if(result!=1)
printf(" 没有找到记录!^_^\n\n");
printf("\n=============================================================\n\n\n");
goto status;
}
else if(choice=='0')
{
fclose(fp);
return ;
}
else
{
printf(" 输入错误,请重心输入\n\n");
goto status;
fclose(fp);
}
}
void findbook()
{
system("cls");
printf(" \n\n 书查找.\n\n");
openfiledeletefind();
}
//删除借书证。
void deletelendl()
{
FILE *fp;
int i;
if((fp=fopen("lend.txt","w"))==NULL)
{
printf("can't open file!\n");
return ;
}
for(i=0;i<klenddelete-2;i++)
{
if(fwrite(&lid[i],sizeof(struct LID),1,fp)!=1)
printf("can't write!\n");
printf("借书证=%d %s %d\n",lid[i].LeadN,&lid[i].SName,lid[i].SNum);
}
fclose(fp);
}
void openfilelenddelete()
{
FILE *fp;
int i,position=-1;
if((fp=fopen("lend.txt","rb"))==NULL)
{
printf("can't open file!\n");
return ;
}
klenddelete=0;
while(feof(fp)==0)
{
fread(&lid[klenddelete],sizeof(struct LID),1,fp);
klenddelete++;
}
for(i=0;i<klenddelete-1;i++)
printf("借书证=%d %s %d\n",lid[i].LeadN,&lid[i].SName,lid[i].SNum);
printf("请输入删除的借书证证号!\n");
scanf("%d",&position);
position--;
system("cls");
if(position>=klenddelete-1)
{
printf("超出借书证边界,请重新输入!\n");
fclose(fp);
system("pause");
return ;
}
for(i=position;i<klenddelete;i++)
{
lid[i]=lid[i+1];
lid[i].LeadN--;
}
deletelendl();
fclose(fp);
}
void deletelend()
{
char choice;
printf(" 借书证删除.\n");
status2:
openfilelenddelete();
cout<<" 1.再删除!"<<endl
<<" 0.退出!"<<endl;
choice=getche();
if(choice=='1')
goto status2;
else
system("pause");
}
void savebookdelete()
{
FILE *fp;
int i;
if((fp=fopen("book.txt","w"))==NULL)
{
printf("can't open file!\n");
return ;
}
for(i=0;i<kbookdelete-2;i++)
{
if(fwrite(&bid[i],sizeof(struct BID),1,fp)!=1)
printf("can't write!\n");
printf("book[%d]=%d %s %s %s %d %s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
}
fclose(fp);
}
//删除书
void openfiledelete()
{
FILE *fp;
int i,position=-1;
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("can't open file!\n");
return ;
}
kbookdelete=0;
while(feof(fp)==0)
{
fread(&bid[kbookdelete],sizeof(struct BID),1,fp);
kbookdelete++;
}
for(i=0;i<kbookdelete-1;i++)
printf("book[%d]=%d %s %s %s %d %s\n",i,bid[i].BNum,&bid[i].BookName,&bid[i].WriterName,&bid[i].PressName,bid[i].Pth,(bid[i].LeadNum==-1)?"在库可借":"已借出");
status:
printf("请输入删除的书号!\n");
scanf("%d",&position);
system("cls");
if(position>=kbookdelete-1)
{
printf("\n 超出借书证边界,请重新输入!\n");
goto status;
}
for(i=position;i<kbookdelete;i++)
{
bid[i]=bid[i+1];
bid[i].BNum--;
}
savebookdelete();
fclose(fp);
}
void deletebook()
{
char choice;
printf(" 书删除.\n");
status2:
openfiledelete();
printf(" 1.再删除!\n");
printf(" 0.退出!\n");
choice=getche();
if(choice=='1')
goto status2;
else
getche();
}
//主程序。
void main()
{
int sign=1;
char choice1,choice2,choice3;
status:
system("cls");
cout<<endl<<endl<<endl;
cout<<" 主菜单:"<<endl;
printf("==========================================================\n");
cout<<" 1.图书查询..."<<endl<<endl
<<" 2.图书管理员..."<<endl<<endl
<<" 3.系统管理员..."<<endl<<endl
<<" 4.关于本程序"<<endl<<endl
<<" 0.退出"<<endl<<endl;
printf("==========================================================\n");
cout<<" 请选择: (只需键入数字,不必按回车.)"<<endl<<endl;
choice1=getche();
if(choice1=='1')//读者读书查询
{
findbook();
goto status;
}
else if(choice1=='2')//图书管工作人员为借还书所用。
{
status1:
system("cls");
printf("************************************************************\n");
cout<<endl<<endl
<<" 1.借书..."<<endl<<endl
<<" 2.还书..."<<endl<<endl
<<" 0.返回上一级目录."<<endl<<endl;
printf("************************************************************\n");
choice2=getche();
if(choice2=='1')
{ system("cls");
sign=lendbook();
if(sign==0)
cout<<" 借书成功!"<<endl<<endl;
else
cout<<" 借书失败!"<<endl<<endl;
system("pause");
goto status1;
}
else if(choice2=='2')
{ system("cls");
returnbook();
goto status1;
}
else if(choice2=='0')
{
goto status;
}
else
{
cout<<" 输入错误!请重新选择。 "<<endl<<endl;
system("pause");
goto status1;
}
}
else if(choice1=='3') //系统管理员专用,可以修改读者,书等内容。
{
st:
system("cls");
printf("\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
cout<<" 1.添加借书证..."<<endl<<endl
<<" 2.添加书..."<<endl<<endl
<<" 3.删除借书证..."<<endl<<endl
<<" 4.删除书..."<<endl<<endl
<<" 0.退出。"<<endl<<endl;
printf("\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
choice3=getche();
if(choice3=='1')
{
initiallend();
goto st;
}
else if(choice3=='2')
{
initialbook();
goto st;
}
else if(choice3=='3')
{
deletelend();
goto st;
}
else if(choice3=='4')
{
deletebook();
goto st;
}
else if(choice3=='0')
goto status;
else
{
cout<<"输入错误,请重新输入!"<<endl<<endl;
system("pause");
goto st;
}
}
else if(choice1=='4')
{
system("cls");
printf("\n\n--------------------------------------------------------------\n");
cout<<endl
<<" 谢谢使用!"<<endl<<endl
<<" 本程序写于04年五一节,作者Fancy(吕恒山)!"<<endl<<endl
<<" 若有意见和建议,请与作者联系!"<<endl<<endl
<<" Email:fancy_lhs@yahoo.com.cn,紫金飞鸿帐号:fancylhs."<<endl<<endl;
printf("--------------------------------------------------------------\n\n");
system("pause");
goto status;
}
else if(choice1=='0')
{
}
else
{
cout<<"输入的内容有错,请重新选择."<<endl;
system("pause");
system("cls");
goto status;
}
system("pause");
}
//初始化书。
void savebook()
{
FILE *fp;
int i;
if((fp=fopen("book.txt","ab"))==NULL)
{
printf("can't open file!\n");
return ;
}
for(i=0;i<SIZEbook;i++)
{
if(fwrite(&bid[i],sizeof(struct BID),1,fp)!=1)
printf("can't write!\n");
}
fclose(fp);
}
void initailbook()
{
FILE *fp;
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("can't open file!\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -