?? 200630740128.cpp
字號(hào):
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int booknumber=0;//書(shū)的數(shù)目
int peoplenumber=0;//人的數(shù)目
struct BOOK
{
long int id;
int store; /*store=1表示書(shū)未被借出,store=0表示書(shū)已經(jīng)被借出*/
float price;
char name[30],author[20];
}books[1000];
struct PEOPLE
{
char name[20],sex[5];
int number;
int id;
}people[100];
void book_save()
{
FILE* fp;
if ((fp=fopen( "圖書(shū)管理系統(tǒng).txt", "wt "))==NULL)
{ printf( "文件在打開(kāi)時(shí)出現(xiàn)錯(cuò)誤!\n");
getch();
exit(1);
}
fwrite(books,sizeof(struct BOOK),1000,fp);
fwrite(people,sizeof(struct PEOPLE),100,fp);
fprintf(fp, "%d,",booknumber);fprintf(fp, "%d,",peoplenumber);
fclose(fp);
}
void book_read()
{FILE* fp;
if ((fp=fopen( "圖書(shū)管理系統(tǒng).txt", "rt"))==NULL)
{printf( "文件在打開(kāi)時(shí)出現(xiàn)錯(cuò)誤!\n");
getch();
exit(1);
}
fread(books,sizeof(struct BOOK),1000,fp);
fread(people,sizeof(struct PEOPLE),100,fp);
fscanf(fp, "%d,",&booknumber);fscanf(fp, "%d,",&peoplenumber);
fclose(fp);
}
void book_renew()
{ FILE* fp;
printf ( "你確定要清楚所有的數(shù)據(jù)嗎?y/n\n");
if (getch()=='n') return;
if ((fp=fopen( "圖書(shū)管理系統(tǒng).txt", "wt"))==NULL)
{ printf( "初始化出現(xiàn)問(wèn)題,請(qǐng)重新嘗試。\n");
getch();
exit(1);
}
fclose(fp);
printf( "請(qǐng)注意:清除數(shù)據(jù)后要重新啟動(dòng)系統(tǒng)才能生效!!!!\n");
getch();
}
void book_add(void)
{
booknumber+=1;
system("cls");//清屏
printf( "增加新書(shū)\n ");
id: printf( "請(qǐng)輸入序號(hào): ");
scanf( "%d",&books[booknumber].id);
if(books[booknumber].id==0)
{
printf( "Error!id can't be 0! ");
booknumber-=1;
goto id;
}
printf( "書(shū)名:");
scanf( "%s",&books[booknumber].name);
printf( "作者:");
scanf( "%s",&books[booknumber].author);
printf( "價(jià)格:");
scanf( "%f",&books[booknumber].price);
books[booknumber].store=1;
}
int search_book(void)
{
int n,i;
system("cls");//清屏
printf( "查找圖書(shū)");
printf( "請(qǐng)輸入圖書(shū)的序號(hào):");
scanf( "%d",&i);
if (i>0&&i<1001)
{for(n=0;n <=1000;n++)
{
if(books[n].id==i)
{
printf( "書(shū)名:%s\n",books[n].name);
printf( "作者:%s\n",books[n].author);
printf( "價(jià)格:%.2f\n",books[n].price);
printf( "%d\n",books[n].store);
return n;
}
}printf( "\n無(wú)效圖書(shū)序號(hào).\n");
}
else printf( "\n無(wú)效圖書(shū)序號(hào).\n");
return 0; /*若查不到圖書(shū),則反回0值*/
}
void book_del(void)
{
int n,k;
system("cls");//清屏
printf( "請(qǐng)輸入要?jiǎng)h除的舊書(shū)");
if((k=search_book())!=0)
{ char a[20],b[30];
for(n=k;n <=booknumber;n++)
{
books[n].id=books[n+1].id;
strcpy(a,books[n].author);strcpy(books[n].author,books[n+1].author);
strcpy(books[n+1].author,a);
strcpy(b,books[n].name);strcpy(books[n].name,books[n+1].name);
strcpy(books[n+1].name,b);
books[n].price=books[n+1].price;
books[n].store=books[n+1].store;
}
booknumber-=1;
printf( "該圖書(shū)信息已刪除.\n");
}
else printf( "該圖書(shū)未找到!\n");
}
void book_register(void)
{
system("cls");//清屏
printf( "借書(shū)人注冊(cè) ");
peoplenumber+=1;
printf( "請(qǐng)輸入借書(shū)人姓名: ");
scanf( "%s",&people[peoplenumber].name);
printf( "請(qǐng)輸入借書(shū)人性別: ");
scanf( "%s",&people[peoplenumber].sex);
people[peoplenumber].id=peoplenumber;
people[peoplenumber].number=peoplenumber;
printf( "注冊(cè)成功!請(qǐng)記住您的編號(hào):%3d\n",peoplenumber);
}
void book_borrow(void)
{
int bianhao;
int n,i;
system("cls");//清屏
printf( "借閱圖書(shū) ");
if((n=search_book())!=0&&books[n].store==1)
{
printf( "請(qǐng)輸入借書(shū)人編號(hào): ");
scanf( "%d",&bianhao);
for(i=0;i <=100;i++)
{
if(i!=bianhao)
continue;
else if(people[i].id==bianhao)
{
if (people[i].number> 2)
printf( "該借書(shū)人同時(shí)借書(shū)已達(dá)兩本,不能借閱\n");
else
{
books[n].store=0;
people[i].number++;
printf( "借閱成功!\n");
}
}
else printf( "非注冊(cè)會(huì)員,不能借書(shū)\n");
}
}
else printf( "此書(shū)已經(jīng)借出\n");
}
void book_in(void)
{int i,n,bianhao;
system("cls");//清屏
printf( "歸還圖書(shū) ");
printf( "請(qǐng)輸入所還圖書(shū)的序號(hào):");
scanf( "%d",&n);
printf( "請(qǐng)輸入還書(shū)人的編號(hào):");
scanf( "%d",&bianhao);
for(i=0;i <=100;i++)
{
if(i=people[i].id)
continue;
else if(people[i].id=bianhao)
{
books[n].store=1;
people[i].number--;
printf( "書(shū)已歸還成功!\n");
break;
}
else printf( "學(xué)號(hào)輸入錯(cuò)誤\n");
}
}
void book_bookshow()
{
int i;
system("cls");//清屏
printf( "顯示書(shū)目\n書(shū)號(hào)|書(shū) 名|作 者|狀態(tài)|價(jià) 格\n");
for(i=1;i<=booknumber;i++)
{
printf( "%4d|%s|%s|%4d|%6f\n ",books[i].id,books[i].name,
books[i].author,books[i].store,books[i].price);
}
getch();
}
int main(void)
{
int n;
book_read(); //自動(dòng)讀取數(shù)據(jù)
menu:
printf("********************************************************************************\n");
printf("****************************歡迎使用圖書(shū)館管理系統(tǒng)******************************\n");
printf("********************************************************************************\n");
printf("操作菜單如下,請(qǐng)按要求選擇:\n(注意:所有操作完成之后請(qǐng)選擇7保存)\n1 增加新書(shū)\n2 查詢(xún)圖書(shū)\n3 刪除舊書(shū)\n\n4 借書(shū)人注冊(cè)\n5 借閱圖書(shū)\n6 歸還圖書(shū)\n\n7 保存\n8 清除數(shù)據(jù)\n9 顯示書(shū)目\n\n0 退出\n");
n=getch();
switch(n)
{
case '1': book_add();break;
case '2': search_book();break;
case '3': book_del();break;
case '4': book_register();break;
case '5': book_borrow();break;
case '6': book_in();break;
case '7': book_save();break;
case '8': book_renew();break;
case '9': book_bookshow();break;
case '0': exit(0);
default: printf ( "請(qǐng)選擇正確的選項(xiàng)!!!\n ");
}
goto menu;
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -