當前位置:編程學習大全網 - 編程語言 - 圖書管理中的編程數據編程問題

圖書管理中的編程數據編程問題

/*本節目轉自天涯潛水2的博客*/

# include & ltstdio.h & gt

# include & ltmalloc.h & gt

# include & ltconio.h & gt

# include & ltstring.h & gt

# include & ltstdlib.h & gt

#定義LEN sizeof(結構書目)

# define len 2 sizeof(struct member list)

#定義LEN3 sizeof(結構讀取器)

Typedef結構讀取器//借用信息結構

{

char name[30];//借款人姓名

結構讀取器* next2

}讀者;

//圖書信息結構

typedef結構書單

{

字符編號[20];//圖書編號

char name[30];//書名

char關註點[50];//按下

char date[20];//出版日期

char作者[20];//作者

int頁面;//頁面

int價格;//價格

信息;//剩余圖書數量

讀者* a;//借款人

struct booklist * next

}書;

void creat list();//創建新的圖書信息

作廢打印(書*頭);//打印圖書信息

作廢保存(書*頭);//存儲圖書信息

void AddBook();//添加圖書信息

void del book();//刪除圖書信息

書*讀();//閱讀書籍信息

void manager();//管理員操作

void book consult();//圖書查詢

int Borrow();//借書

int Return();//還書

書*排序(書*頭);//圖書信息按書號排序。

void信息();//系統信息

Book *head=NULL,*p1=NULL,* p2 = NULL

//創建新的圖書信息

void creatlist()

{

int i,n;

Printf("要創建的圖書數量");

scanf("%d ",& ampn);

p2 = head =(Book *)malloc(LEN);//創建壹個有頭節點的鏈表

p2->;a=(讀者*)馬洛克(EN3);

p2->;a-& gt;next2 = NULL

p2->;next = NULL

Printf("請輸入書的信息:\ n ");

for(I = 1;我& lt= n;i++)

{

p 1 =(Book *)malloc(LEN);

printf(" ISBN:");scanf("%s ",p 1->;num);

printf(" Title:");scanf("%s ",p 1->;姓名);

printf(" publisher:");scanf("%s ",p 1->;關註);

Printf("出版日期:");scanf("%s ",p 1->;日期);

Printf("作者:");scanf("%s ",p 1->;作者);

Printf("書中頁數:");scanf("%d ",& ampp 1->;頁面);

Printf("書價(元):");scanf("%d ",& ampp 1->;價格);

p 1->;a=(讀者*)馬洛克(EN3);

p 1->;a-& gt;next2 = NULL

p 1->;信息= 10;

p 1->;next = NULL

p2->;next = p 1;

p2 = p 1;

如果(我& ltN) printf("下本書:\ n ");

}

head=sort(頭);

保存(頭);

打印(頭);

}

//打印圖書信息

作廢打印(書*頭)

{

Book * p = NULL

reader * p0 = NULL

p = head-& gt;接下來;

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

而(p!=空)

{

Printf("書號:% s \ n書名:% s \ n出版商:% s \ n出版日期:% s \ n作者:% s \ n頁數(頁數):% d \ n圖書價格(元):% d \ n剩余數量:% d \ n ",頁碼,P-& gt;姓名,p-& gt;關心,p-& gt;日期,p-& gt;作者,p-& gt;第頁,p-& gt;價格,p-& gt;信息);

Printf("借書的人:");

如果(p->;a-& gt;Next2 = = null) printf (" -無借書人!");

其他

{

for(P0 = p-& gt;a-& gt;next2p0!= NULLp0=p0->下壹步2)

{

printf("%s ",P0-& gt;姓名);

}

}

p = p-& gt;接下來;/* p向後移動壹個節點*/

printf(" \ n ");

printf(" \ n ");

}

}

//圖書信息按書號排序。

書籍*排序(書籍*標題)

{

Book *p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2=NULL,* head 2 = head-& gt;接下來;

p 1 = head 2;

while(p 1->;下壹個!=空)

{

min = p2 = p 1;/*將第壹個節點作為最小值*/

而(p2->下壹個!=空)

{

if(strcmp(min-& gt;num,p2->下壹個-& gt;num)>0) /*第壹個節點和下壹個節點之間的比較*/

{

min2 = p2

min = p2-& gt;接下來;

}

p2 = p2-& gt;接下來;

}

如果(min!=p1)

{

min 2->;next = min-& gt;接下來;/*刪除最小的節點*/

min->;next = p 1;/*插入最小節點*/

if(p 1 = = head 2)head 2 = min;

否則P3->;next = min/*p3是min之前的節點指針*/

p3 =最小值;

}

其他

{

P3 = p 1;

p 1 = p 1->;接下來;

}

}

head->;next = head2

返回(頭);

}

//存儲圖書信息

作廢保存(書*頭)

{

FILE *fp,* fp2

Book * p = NULL

reader * q = NULL

Fp=fopen("圖書信息。txt”、“WB”);//printf("無法打開文件!\ n ");

Fp2=fopen("借閱信息。txt”、“WB”);//printf("無法打開文件!\ n ");

p =頭部;

而(p!=空)

{

fwrite(p,LEN,1,FP);/*逐節點寫入文件*/

for(q = p-& gt;a;q!= NULLq = q-& gt;下壹步2)

{fwrite(q,LEN3,1,fp2);}

p = p-& gt;接下來;

}

fclose(FP);

fclose(fp2);

}

//添加圖書信息

void AddBook()

{

FILE *fp,* fp2

Book * addbook = NULL

reader * p0 = NULL

Fp=fopen("圖書信息。txt”、“ab”);//通過追加打開文件

Fp2=fopen("出借信息。txt”、“ab”);

addbook =(Book *)malloc(LEN);

Printf("輸入圖書信息:\ n ");

printf(" ISBN:");scanf("%s ",addbook-& gt;num);

printf(" Title:");scanf("%s ",addbook-& gt;姓名);

printf(" publisher:");scanf("%s ",addbook-& gt;關註);

Printf("出版日期:");scanf("%s ",addbook-& gt;日期);

Printf("作者:");scanf("%s ",addbook-& gt;作者);

Printf("書中頁數:");scanf("%d ",& ampaddbook-& gt;頁面);

Printf("書價(元):");scanf("%d ",& ampaddbook-& gt;價格);

p0=(讀者*)馬洛克(EN3);

P0->;next2 = NULL

addbook-& gt;a = p0

addbook-& gt;信息= 10;

addbook-& gt;next = NULL

fwrite(addbook,LEN,1,FP);/*塊寫入*/

fwrite(p0,LEN3,1,fp2);

fclose(FP);

fclose(fp2);

}

//閱讀書籍信息

書*讀()

{

FILE *fp,* fp2

Book *p=NULL,*p1=NULL,* head = NULL

reader *p0=NULL,* p2 = NULL

If((fp=fopen("圖書信息。txt "," rb"))==NULL) printf("無法打開文件或文件不存在!\ n ");

If((fp2=fopen("借用信息。txt "," rb"))==NULL) printf("無法打開文件或文件不存在!\ n ");

head =(Book *)malloc(LEN);

fread(head,LEN,1,FP);

p 1 =頭;

p0=(讀者*)馬洛克(EN3);

fread(p0,LEN3,1,fp2);

P0->;next2 = NULL

head->;a = p0

head->;next = NULL

p =(Book *)malloc(LEN);

While (Fread (p,len,1,FP))/*逐節點讀取*/

{

p 1->;next = p;

p 1 = p 1->;接下來;

p0=(讀者*)馬洛克(EN3);

p 1->;a = p0

while(fread(p0,LEN3,1,fp2))

{

如果(P0-& gt;next2==NULL)

{

p2 = p0

p0=(讀者*)馬洛克(EN3);

打破;

}

p2 = p0

p0=(讀者*)馬洛克(EN3);

p2->;next2 = p0

}

免費(P0);

p2->;next2 = NULL

p =(Book *)malloc(LEN);

}

p 1->;next = NULL

免費(p);

fclose(FP);

fclose(fp2);

head=sort(頭);

如果(頭!=NULL)返回(head);

其他

{

Printf("文件是空的!\ n ");

返回0;

}

}

//刪除圖書信息

void DelBook()

{

Book *head=NULL,*p=NULL,* q = NULL

char bookname[30];

head = read();

Printf("輸入要刪除的標題:");

scanf("%s ",圖書名稱);

p =頭部;

而(p!=NULL)/*按名稱查找要刪除的圖書*/

{

if(strcmp(p-& gt;name,bookname)==0)

{

if(p==head)

{

head = head-& gt;接下來;

打破;

}

其他

{

q->;next = p-& gt;接下來;

打破;

}

}

q = p;

p = p-& gt;接下來;

}

保存(頭);

}

//管理員操作

無效管理器()

{

int n,i=0,k = 1;

while(k==1)

{

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

Printf("請選擇您需要的操作\ n ");

Printf(" ◎ 1。創建新書信息\ n ");

Printf(" ◎ 2。插入圖書信息\ n ");

Printf(" ◎ 3。刪除圖書信息\ n ");

Printf(" ◎ 4。閱讀所有書籍信息\ n ");

Printf(" ◎ 5。閱讀指定書籍信息\ n”);

Printf(" ◎ 6。返回父目錄\ n ");

Printf(" ◎ 7。保存並退出\ n ");

Printf("請輸入:");

scanf("%d ",& ampn);

開關(n)

{

案例1:creat list();打破;

案例二:AddBook();打破;

案例三:del book();打破;

案例四:head = read();系統(“CLS”);打印(頭);打破;

案例五:系統(“CLS”);book consult();打破;

情況6:k = 0;打破;

默認:k = 0;打破;

}

}

}

//圖書查詢

無效預訂咨詢()

{

int n,m=1,sign = 0;

Book *p=NULL,*p1=NULL,*p0=NULL,* head = NULL

reader * p2 = NULL

char a[30],b[20],c[20];

head = read();

while(m==1)

{

Printf("請選擇您想要查詢書籍的方式:1。按標題2。按下第三本書。按作者4。退出查詢\ n ");

printf(" input = ");

scanf("%d ",& ampn);

開關(n)

{

Case 1: printf("請輸入標題:");

scanf("%s ",a);

p0 =壓頭;

而(p0!=空)

{

if(strcmp(a,P0-& gt;name)==0)

{

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

Printf("書號:% s \ n書名:% s \ n出版商:% s \ n出版日期:% s \ n作者:% s \ n頁數(頁數):% d \ n圖書價格(元):% d \ n剩余數量:% d \ n ",P0。num,p0->名稱,P0-& gt;關註點,p0->日期,P0-& gt;作者,P0-& gt;第頁,p0->價格,P0-& gt;信息);

Printf("借書的人:");

如果(P0-& gt;a-& gt;Next2 = = null) printf (" -無借書人!\ n ");

其他

{

for(p2 = P0-& gt;a;(p2 = p2-& gt;接下來2)!= NULL)

{printf("%s ",p2-& gt;姓名);}

}

printf(" \ n ");

sign = 1;

p0=p0->接下來;

}

否則P0 = P0-& gt;接下來;

}

If(sign==0) printf("沒有關於這本書的信息。\ n ");

打破;

案例二:printf("請輸入書號:");

scanf("%s ",b);

p0 =壓頭;

而(p0!=空)

{

if(strcmp(b,P0-& gt;num)==0)

{

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

Printf("書號:% s \ n書名:% s \ n出版商:% s \ n出版日期:% s \ n作者:% s \ n頁數(頁數):% d \ n圖書價格(元):% d \ n剩余數量:% d \ n ",P0。num,p0->名稱,P0-& gt;關註點,p0->日期,P0-& gt;作者,P0-& gt;第頁,p0->價格,P0-& gt;信息);

Printf("借書的人:");

如果(P0-& gt;a-& gt;Next2 = = null) printf (" -無借書人!\ n ");

其他

{

for(p2 = P0-& gt;a;(p2 = p2-& gt;接下來2)!= NULL)

{printf("%s ",p2-& gt;姓名);}

}

printf(" \ n ");

打破;

}

否則P0 = P0-& gt;接下來;

}

If(p0==NULL) printf("沒有關於這本書的信息。\ n ");

打破;

案例三:printf("請輸入書的作者:");

scanf("%s ",c);

p0 =壓頭;

而(p0!=空)

{

if(strcmp(c,P0-& gt;作者)==0)

{

打印函數

(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);

Printf("書號:% s \ n書名:% s \ n出版商:% s \ n出版日期:% s \ n作者:% s \ n圖書頁數(頁數):% d \ n圖書價格(元)% d \ n剩余數量:% d \ n ",P0-。num,p0->名稱,P0-& gt;關註點,p0->日期,P0-& gt;作者,P0-& gt;第頁,p0->價格,P0-& gt;信息);

Printf("借書的人:");

如果(P0-& gt;a-& gt;Next2 = = null) printf (" -無借書人!\ n ");

其他

{

for(p2 = P0-& gt;a;(p2 = p2-& gt;接下來2)!= NULL)

{printf("%s ",p2-& gt;姓名);}

}

printf(" \ n ");

sign = 1;

p0=p0->接下來;

}

否則P0 = P0-& gt;接下來;

}

If(sign==0) printf("沒有關於這本書的信息。\ n ");

打破;

默認值:m = 0;打破;

}

}

}

//借書

int Borrow()

{

char a[30],b[30],c;

書* p0 =空,*頭=空;

reader *p2=NULL,* p3 = NULL

head = read();

Printf("請輸入所借圖書的書號:");

scanf("%s ",a);

P0 = head->;接下來;

而(p0!=空)

{

if((strcmp(a,P0-& gt;num))==0)

{

如果(P0-& gt;信息& gt0)

{

Printf("書在圖書館,可以外借。妳確定要去看看嗎?y '或' n ' \ n ");

c = getchar();

scanf("%c ",& ampc);

if(c=='y ')

{

Printf("請再次輸入您的用戶名:");

scanf("%s ",b);

P3 =(reader *)malloc(EN3);

strcpy(P3-& gt;姓名,b);

如果(P0-& gt;a-& gt;next2==NULL)

{

P0->;a-& gt;next2 = p3

P3->;next2 = NULL

}

其他

{

for(p2 = P0-& gt;a;p2->;next2!= NULLp2 = p2-& gt;next 2);

p2->;next2 = p3

P3->;next2 = NULL

}

-P0->;信息;

保存(頭);

Printf("手術完成後,妳就可以把書拿走了。\ n ");

返回1;

打破;

}

其他

{

返回0;

打破;

}

}

Else printf("抱歉,書不在圖書館。\ n ");返回0;打破;

}

否則P0 = P0-& gt;接下來;

}

if(p0==NULL)

{

Printf("抱歉,沒有這本書。\ n ");

返回0;

}

否則返回2;

}

//還書

int Return()

{

書* p0 =空,*頭=空;

reader *p2=NULL,* p3 = NULL

char c[20],b[30];

head = read();

Printf("請輸入要歸還的書的書號:");

scanf("%s ",& ampc);

P0 = head->;接下來;

而(p0!=空)

{

if((strcmp(c,P0-& gt;num))==0)

{

Printf("請輸入您的用戶名:");

scanf("%s ",& ampb);

如果(P0-& gt;a-& gt;Next2==NULL) {printf("這本書不是妳借的!\ n ");打破;}

其他

{

p3=p0->a;

p2 = P3->;next2

而(p2!=空)

{

if(strcmp(p2-& gt;name,b)==0)

{

如果(p2->next 2 = = NULL){ P3-& gt;next2 = NULL免費(p2);打破;}

其他

{

P3->;next 2 = p2-& gt;next2

免費(p2);

打破;

}

}

其他

{

p3 = p2

p2 = p2-& gt;next2

}

}

If(p2==NULL) printf("這本書不是妳借的!\ n ");

}

++p0->信息;

保存(頭);

Printf("書已歸還圖書館,操作完成。\ n ");

返回1;

打破;

}

否則P0 = P0-& gt;接下來;

}

if(p0==NULL)

{

Printf("沒有這樣的書。\ n ");

返回0;

}

否則返回2;

}

//借閱信息

無效信息()

{

printf(" \\\\\\\\\\" n ");

Printf("※歡迎使用我們的圖書管理系統!※以下是對這個系統的描述:\ n”);

Printf("※本系統主要功能是管理圖書,可以新建、插入、刪除和※\n "圖書信息);

printf("※query;在操作上,主要通過阿拉伯數字選擇相應的菜單功能,選擇時‘y’表示‘是’);

printf(“※用‘n’表示‘不是’。操作的時候會有相應的操作提示。※n ");

printf(" \\\\\\\\\\" n ");

}

主()

{

int n,k = 1;

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

printf(" \ n \ n ");

Printf("歡迎使用我們的圖書館管理系統!\ n ");

printf(" \ n \ n ");

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

while(k==1)

{

Printf("請選擇您的操作:1。管理員操作2。系統信息3。退出系統\ n ");

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

Printf("妳的選擇是");

scanf("%d ",& ampn);

系統(“CLS”);

開關(n)

{

案例1:經理();打破;

情況二:信息();打破;

默認:printf ("++++++++++++歡迎再次使用我們的系統!++ ++++++++++++++++++ ++ n ");k = 0;打破;

}

}

}

  • 上一篇:微信公眾平臺應用開發實戰的前言
  • 下一篇:火星探測器是如何遠距離傳輸信號的
  • copyright 2024編程學習大全網