?? 借書.cpp
字號:
printf("學(xué)號:%d\t姓名:%s\t當前是否借書狀態(tài):%s\t當前沒有歸還的書本編號(0表示當前未借有圖書):%d\t當前沒有歸還的書本名字(none表示當前未借有圖書):%s\n", h->user_number,h->user_name,h->state,h->user_currntbook_code,h->user_currntbook_name);
printf("借書日期%d年%d月%d日(0年0月0日表示當前未借有圖書)\n",h->user_senddate.year,h->user_senddate.month,h->user_senddate.day);
printf("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
flag=1;
fclose(fq);
printf("按1繼續(xù)查找,其他返回\n");
scanf("%d",&l);
if(l==1)
showuser2();
else
return;
}
else
h->next=(users *)malloc(sizeof(users));
}
}
if(i==2)
{ printf("請輸入要查詢的讀者姓名:\n");
scanf("%s",n);
while(!feof(fq))
{ fread(h,sizeof(users),1,fq);
if(!strcmp(h->user_name,n))
{
printf("查找結(jié)果:\n");
printf("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
printf("查找結(jié)果:\n");
printf("學(xué)號:%d\t姓名:%s\t狀態(tài):%s\t當前沒有歸還的書本編號(0表示當前未借有圖書):%d\t當前沒有歸還的書本名字(none表示當前未借有圖書):%s\n", h->user_number,h->user_name,h->state,h->user_currntbook_code,h->user_currntbook_name);
printf("借書日期%d年%d月%d日\n",h->user_senddate.year,h->user_senddate.month,h->user_senddate.day);
printf("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
fclose(fq);
flag=1;
printf("按1繼續(xù)查找,其他返回\n");
scanf("%d",&l);
if(l==1)
showuser2();
else
return;
}
else
h->next=(users *)malloc(sizeof(users));
}
}
if(flag==0)
{ printf("不存在這個讀者,按1繼續(xù)查詢,其他返回\n");
scanf("%d",&k);
if(k==1)
{ fclose(fq);
showuser2();
}
else
return;
}
}
void bookdelete() //圖書刪除
{ int j=0,k=0;
long int i;
FILE *fp;
books *head,*pt,*ps,*h;
printf("請輸入要刪除的圖書編號:\n");
scanf("%d",&i);
head=(books *)malloc(sizeof(books));
head->next=load(); //讓head成為頭節(jié)點,該頭節(jié)點沒有有效信息
for(ps=head;ps->next!=NULL&&ps->next->book_code!=i;ps=ps->next);
if(ps->next==NULL)
{ printf("不存在這本圖書,按1繼續(xù)刪除,其他返回\n");
scanf("%d",&j);
if(j==1)
bookdelete();
else
return;
}
else
{ pt=ps->next;
ps->next=ps->next->next;
free(pt);
}
h=head->next; //讓h指向頭節(jié)點的下一個節(jié)點,也就是指向第一個有效節(jié)點
head->next=NULL; //讓head與鏈表分開
free(head); // 刪除head
if((fp=fopen("bookdocument","wb"))==NULL)
{ printf("不能打開文件\n");
exit(0);
}
while(h!=NULL)
{ fwrite(h,sizeof(books),1,fp);
h=h->next;
}
fclose(fp);
printf("已經(jīng)刪除圖書信息\n");
k=0;
printf("按1繼續(xù)刪除,其他返回\n");
scanf("%d",&k);
if(k==1)
bookdelete();
else
return;
}
//-----------------------------------------------------------
//該函數(shù)供booksend()和bookreturn()調(diào)用,在借書時記錄下借書用戶信息和借書時間
//在還書時計算是否超期
int userborrow(long int number,long int bookcode,int flag,char bookname[50])
{ int i=0,j=0,k=0,l;
char state[10]={"yes"},state2[10]={"none"};
FILE *fq;
users *head,*pt,*ps,*h,*h2;
struct tm *t;
head=(users *)malloc(sizeof(users));
head->next=load2();
h=head;
t=time();
for(ps=head;ps->next!=NULL&&ps->next->user_number!=number;ps=ps->next);
if(ps->next==NULL)
return(0);
else if(flag==1)
{
pt=ps->next;
strcpy(pt->state,state);
pt->user_currntbook_code=bookcode;
strcpy(pt->user_currntbook_name,bookname);
pt->user_senddate.year=1900+t->tm_year;
pt->user_senddate.month=1+t->tm_mon;
pt->user_senddate.day=t->tm_mday;
printf("=======借書的日期為:%d-%d-%d=======\n",(1900+t->tm_year), (1+t->tm_mon),t->tm_mday);
}
else if(flag==2)
{ pt=ps->next;
strcpy(pt->state,state2);
pt->user_currntbook_code=0;
strcpy(pt->user_currntbook_name,state2);
printf("=======借書的日期為:%d年-%d月-%d日=======\n",pt->user_senddate.year, pt->user_senddate.month,pt->user_senddate.day);
printf("=======還書的日期為:%d年-%d月-%d日=======\n",(1900+t->tm_year), (1+t->tm_mon),t->tm_mday);
l=borrowdays(pt);
if(l>30)
printf("該書還書超過期限%d天\n",l-30);
else
printf("該書未超期限\n");
}
if((fq=fopen("userdocument","wb"))==NULL)
{ printf("不能打開文件\n");
exit(0);
}
while(h->next!=NULL)
{
fwrite(h->next,sizeof(users),1,fq);
h=h->next;
}
fclose(fq);
return(1);
}
void booksend() //借書
{ int j=0,k=0,b;
long int i,number;
char s,state[10]={"out"},name[20],bookname[50];
FILE *fp;
books *head,*pt,*ps,*h,*h2;
printf("請輸入要借的圖書編號:\n");
scanf("%d",&i);
printf("請輸入要借的圖書名:\n");
scanf("%s",bookname);
printf("請輸入借書用戶的學(xué)號:\n");
scanf("%d",&number);
printf("請輸入借書用戶的姓名:\n");
scanf("%s",name);
head=(books *)malloc(sizeof(books));
head->next=load();
h=head;
for(ps=head;ps->next!=NULL&&ps->next->book_code!=i;ps=ps->next);
if(ps->next==NULL)
{
printf("不存在這本圖書,按1繼續(xù)借書,其他返回\n");
scanf("%d",&j);
if(j==1)
booksend();
else
return;
}
else
{
pt=ps->next;
strcpy(pt->state,state);
pt->book_currentuser_number=number;
strcpy(pt->book_currentuser_name,name);
}
if((fp=fopen("bookdocument","wb"))==NULL)
{
printf("不能打開文件\n");
exit(0);
}
while(h->next!=NULL)
{
fwrite(h->next,sizeof(books),1,fp);
h=h->next;
}
fclose(fp);
b=userborrow(number,i,1,bookname);
if(b==1)
{
printf("借出成功,按1繼續(xù),其他返回\n");
scanf("%d",&k);
if(k==1)
booksend();
else
return;
}
else
{ printf("借出失敗,按1繼續(xù),其他返回\n");
if(k==1)
booksend();
else
return;
}
}
void bookreturn() //還書
{ int j=0,k=0,b;
char s,state[10]={"in"},bookname[50],name[20];
long int i,number;
FILE *fp;
books *head,*pt,*ps,*h,*h2;
printf("請輸入要還的圖書編號:\n");
scanf("%d",&i);
printf("請輸入要還的圖書名:\n");
scanf("%s",bookname);
printf("請輸入還書用戶的學(xué)號:\n");
scanf("%d",&number);
printf("請輸入還書用戶的姓名:\n");
scanf("%s",name);
head=(books *)malloc(sizeof(books));
head->next=load();
h=head;
for(ps=head;ps->next!=NULL&&ps->next->book_code!=i;ps=ps->next);
if(ps->next==NULL)
{ printf("不存在這本圖書,按1繼續(xù)還書,其他返回\n");
scanf("%d",&j);
if(j==1)
bookreturn();
else
return;
}
else
{ pt=ps->next;
strcpy(pt->state,state);
}
if((fp=fopen("bookdocument","wb"))==NULL)
{ printf("不能打開文件\n");
exit(0);
}
while(h->next!=NULL)
{ fwrite(h->next,sizeof(books),1,fp);
h=h->next;
}
fclose(fp);
b=userborrow(number,i,2,bookname);
if(b==1)
{ printf("還書成功,按1繼續(xù),其他返回\n");
scanf("%d",&k);
if(k==1)
bookreturn();
else
return;
}
}
void showpassuser() //顯示超期用戶
{ users *p;
char s[10]={"yes"};
int flag=0;
p=load2();
while(p!=NULL&&strcmp(s,p->state)==0&&borrowdays(p)>30)
{ flag=1;
printf("姓名%s\t學(xué)號%d\t當前所借圖書%s\t超期%d",p->user_name,p->user_number,p->user_currntbook_name,borrowdays(p)-30);
p=p->next;
}
if(flag==0)
{ printf("無超期用戶\n");
return;
}
}
void index() //界面
{ struct tm *t;
int i,j;
t=time();
printf(" **********************************************************\n");
printf(" **************歡迎使用圖書管理系統(tǒng)(VER1.0)****************\n");
printf(" * 今天是%d年%d月%d日 *\n",1900+t->tm_year,1+t->tm_mon,t->tm_mday);
printf(" * 1-圖書添加 2-用戶添加 *\n");
printf(" * 3-圖書一覽 4-用戶一覽 *\n");
printf(" * 5-查詢圖書詳細資料 6-查詢用戶詳細資料 *\n");
printf(" * 7-刪除圖書 8-查詢超期用戶 *\n");
printf(" * 9-借書 10-還書 *\n");
printf(" * 11-退出 *\n");
printf(" **********************************************************\n");
printf(" **********************************************************\n");
printf("請輸入1-11選擇:\n");
scanf("%d",&i);
if(i==1)
bookadd();
else if(i==2)
useradd();
else if(i==3)
showbook();
else if(i==4)
showuser();
else if(i==5)
showbook2();
else if(i==6)
showuser2();
else if(i==7)
bookdelete();
else if(i==8)
showpassuser();
else if(i==9)
booksend();
else if(i==10)
bookreturn();
else if(i==11)
return;
else
{ printf("輸入錯誤\n");
system("cls");
index();
}
printf("按0返回主菜單\n");
scanf("%d",&j);
switch(j)
{ case 0:
system("cls");
index();
break;
default:
printf("輸入錯誤,重新輸入:");
}
}
void main(void)
{ index();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -