
#include
#include
#include
#include
typedef int BOOL;
typedef struct bookinfo
{
char number[15];
char name[30];
float price;
char auther[20];
BOOL isExit;
char lendername[20];
char lendersex[2];
char lendernum[15];
}BOOKINFO;
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t圖書管理系統\n");
printf("\t\t\t1:新進圖書基本資訊的輸入\n");
printf("\t\t\t2:顯示全部記錄\n");
printf("\t\t\t3:根據圖書名稱查詢圖書基本資訊\n");
printf("\t\t\t4:根據圖書名稱對撤銷的圖書資訊進行删除\n");
printf("\t\t\t5:按照圖書名稱從小大到順序\n");
printf("\t\t\t6:統計某價格以下的圖書總量\n");
printf("\t\t\t7:列出所有未借出去的圖書資訊\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("輸入圖書編号:");
gets(newbook.number);
printf("輸入圖書名稱:");
gets(newbook.name);
printf("輸入圖書單價:");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("輸入圖書的作者:");
gets(newbook.auther);
printf("輸入借書人姓名:");
gets(newbook.lendername);
printf("輸入借書人性别:");
gets(newbook.lendersex);
printf("輸入借書人學号:");
gets(newbook.lendernum);
printf("是否儲存該條書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n該條書目已添加到c:\\bookinfo.data檔案中!\n");
}
else
{
printf("\n本條書目未儲存!\n");
}
printf("\n是否繼續添加書目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("沒有任何圖書資訊!\n\n");
}
else
{
n=0;
printf("圖書資訊如下\n");
printf("圖書資訊|借書人資訊 \n");
printf("編号 名稱單價 作者 圖書狀态 | 姓名性别 學号\n");
while(n
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意鍵回到主菜單!\n");
getch();
}
void choice_3_search_according_name()
{
char search[20]="";
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
while(1)
{
printf("輸入要查詢的書本名稱:");
gets(search);
if(booknumber==0)
{
printf("書庫中沒有任何資訊!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}
else
{
for(n=0;n
if(strcmp(bookinfo[n].name,search)==0)
{
printf("該書的具體資訊如下:\n");
printf("圖書資訊|借書人資訊 \n");
printf("編号 名稱單價 作者 圖書狀态 | 姓名性别 學号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何資訊!\n");
printf("\n\n是否繼續查詢?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
}
void choice_4_delete_according_name()
{
char search[20]="";
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("輸入要删除的書本名稱:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("書庫中沒有任何資訊!\n\n");
printf("按任意鍵回到主菜單!\n\n");
getch();
break;
}
else
{
for(n=0;n
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("沒有查找該書的任何資訊!\n");
else
{
printf("是否确定應該删除該條書目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除成功!\n");
}
else
printf("\n\n該條書目沒有被删除!");
}
printf("\n\n是否繼續進行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
本文來自電腦雜談,轉載請注明本文網址:
http://www.pc-fly.com/a/jisuanjixue/article-120332-1.html