版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
千里之行,始于足下讓知識(shí)帶有溫度。第第2頁(yè)/共2頁(yè)精品文檔推薦圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告圖書管理系統(tǒng)試驗(yàn)報(bào)告
一、問題描述
有一個(gè)小型書庫(kù)保管了大量圖書,關(guān)于圖書有大量信息需要處理,這些信息包括圖書的分類、書名、名、購(gòu)買日期、價(jià)格等?,F(xiàn)要求編寫一個(gè)程序以便于對(duì)圖書的管理。
基本要求:
a.建立圖書信息。
b.提供想找功能,根據(jù)多種關(guān)鍵字查找需要的書籍。例如按書名查找,輸入書名后,將顯示出該圖書的全部信息,或顯示指定信息。
c.提供排序功能,根據(jù)多種關(guān)鍵字對(duì)全部的書籍舉行排序,例如按出版日期舉行排序。
d.提供維護(hù)功能,可以對(duì)圖書信息舉行添加、修改、刪除等功能。
數(shù)據(jù)結(jié)構(gòu)與算法分析
數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)可按照需要自選。如:挨次表、單鏈表、雙鏈表、棧等。
算法主要要求用到對(duì)數(shù)據(jù)的查詢與排序算法。
二、概要設(shè)計(jì)
有四個(gè)模塊
1)圖書初始化
輸入圖書的一些信息,編號(hào)、、書名、數(shù)量,使有一定的庫(kù)存。
2)新書入庫(kù)
新書采編入庫(kù),輸入編號(hào)后假如有次數(shù)只需輸入數(shù)量,沒有則繼續(xù)輸入書名、、數(shù)量。
3)查詢圖書信息
4)退出
退出讀書管理系統(tǒng)并保存圖書信息。
三、算法設(shè)計(jì)
進(jìn)入系統(tǒng)后首先舉行圖書初始化,輸入圖書的信息。
1)采編入庫(kù)
開頭
輸入圖書編號(hào)、名稱、和圖書數(shù)量
進(jìn)入系統(tǒng)錄入圖書信息圖書管理系統(tǒng)
圖書管理模塊
借閱操作模塊
查詢操作模塊
初始化圖書信
息采編入庫(kù)
借書系統(tǒng)
還書系統(tǒng)
讀者信息查詢
圖書信息查詢
是
否
2)查詢圖書信息否
四、運(yùn)行結(jié)果和調(diào)試分析
圖書信息初始化
推斷是否有此圖書
在原有的紀(jì)錄上加上現(xiàn)有的圖書數(shù)量
向系統(tǒng)中加入新紀(jì)錄推斷圖書信息是否為空
輸出圖書信息:編號(hào)、名稱、、現(xiàn)有和庫(kù)存
結(jié)束
同一本新書入庫(kù)的運(yùn)行結(jié)果圖
不同的新書采編入庫(kù)
采編入庫(kù)后查詢圖書信息的運(yùn)行結(jié)果圖
借書
借書后查詢圖書信息的運(yùn)行結(jié)果圖
借同一本書的運(yùn)行結(jié)果圖
退出
五、總結(jié)體味
雖然這次的程序是通過上網(wǎng)查出來的,但是通過這次的試驗(yàn)使我知道了圖書管理系統(tǒng)的流程,知道了一些以前不知道的學(xué)問,在運(yùn)行程序時(shí)也碰到了一些問題,借書時(shí)只能借一本書,再借書就不能顯示是借了還是不能借,把最多能借書的數(shù)量改了一下還是不可,最后在每一個(gè)推斷輸出之后都加了gotoEND借書,就能正常借書了。程序有點(diǎn)長(zhǎng),原來一個(gè)函數(shù)就能完成一個(gè)功能,他用了兩個(gè)函數(shù)就我把自己能改成一個(gè)的改了。借書系統(tǒng)比較復(fù)雜,不簡(jiǎn)單懂,和學(xué)生溝通了一下自己看了看才明了。
這次的試驗(yàn)還讓我復(fù)習(xí)了數(shù)據(jù)結(jié)構(gòu)的一些學(xué)問,如數(shù)組,while語句,switch語句,鏈表,還知道了如何使用system("cls")清屏,還知道了strcmp是用來比較字符串s1和s2大小的,strcpy使用來把字符串s2的值賦給s1的。
這次的試驗(yàn)增強(qiáng)了我們自己動(dòng)手動(dòng)腦的能力,希翼多做一些這樣的試驗(yàn),很故意義,和現(xiàn)實(shí)生活結(jié)合的程序增強(qiáng)了我的愛好。
源代碼
#include
#include
#include
#include
#defineMax4
typedefstructbook
{
charbook_num[10];
charbook_name[20];
charbook_writer[10];
intbook_xy;
intbook_kc;
structbook*next;
}BK;
typedefstructborrow
{
charborrow_book_num[10];
charlimit_date[8];
}BO;
typedefstructreader
{
charreader_num[10];
charreader_name[10];
intright;
BOborrow[Max];
structreader*next;
}RD;
BK*h_book;
RD*h_reader;
voidLogin();
intMenu();
voidInit();
voidInit_book();
voidMenu_select();
voidInsert_New_Book();voidFind_Book();
voidadd_reader();
voidPrint_reader();
voidPrint_book();
voidBorrow_Book();
voidReturn_Book();
voidSave();
voidSave_Book();
voidSave_Reader();
voidLoad();
voidLoad_Reader();
voidLoad_Book();
voidLogin()
{
system("cls");
printf("\n\n\n\t\t***************************************\n");printf("\n\n\n\t\t\t歡迎使用圖書管理系統(tǒng)\n");
printf("\n\n\n\t\t***************************************\n");printf("\n\n\t\t本程序制作人王學(xué)號(hào):\n\n\n\n\n\n\n");
printf("\n\n\n\t\t按隨意鍵進(jìn)入系統(tǒng)...");
getch();system("cls");
}
intMenu()/*主菜單*/
{intdm;
printf("\n\t\t圖書管理系統(tǒng)主菜單\n");
printf("=================================================\n");printf("*\t0退出系統(tǒng)\n");
printf("*\t1采編入庫(kù)\n");
printf("*\t2記下讀者\(yùn)n");
printf("*\t3借閱記下\n");
printf("*\t4還書管理\n");
printf("*\t5查詢圖書信息\n");
printf("*\t6查詢讀者信息\n");
printf("=================================================\n");printf("請(qǐng)?zhí)暨x相應(yīng)的代碼:");
for(;;)
{scanf("%d",//dm輸入的數(shù)字
if(dm6)
printf("\n錯(cuò)誤!請(qǐng)重新輸入:");
elsebreak;
}
returndm;
}
voidMenu_select()/*主菜單挑選函數(shù)*/
{
for(;;)
{
switch(Menu())/*功能挑選*/
{case0:
system("cls");
Save();
printf("\n\n\t文件保存勝利!\n");
printf("\n\n\t歡迎下次使用本系統(tǒng)!\n");
getch();
exit(0);
case1:Insert_New_Book();break;
case2:add_reader();break;
case3:Borrow_Book();break;
case4:Return_Book();break;
case5:Print_book();break;
case6:Print_reader();break;
default:printf("\n錯(cuò)誤!");
exit(0);}
}
}
voidInit()/*初始化*/
{
BK*p0;
printf("\n圖書初始化開頭,請(qǐng)輸入圖書信息..\n包括編號(hào).書名.數(shù)量..\n");p0=(BK*)malloc(sizeof(BK));
h_book=p0;
printf("\n請(qǐng)輸入圖書信息:\n");
printf("圖書編號(hào):");/*輸入圖書編號(hào)(唯一)*/
scanf("%s",p0->book_num);
printf("圖書名稱:");/*輸入圖書名稱*/
scanf("%s",p0->book_name);
printf("圖書:");/*輸入圖書*/
scanf("%s",p0->book_writer);
printf("圖書數(shù)量:");/*輸入圖書數(shù)量*/
scanf("%d",
p0->book_xy=p0->book_kc;/*開頭時(shí)圖書現(xiàn)有量和庫(kù)存量相等*/p0->next=NULL;
printf("\n圖書信息初始化完畢!按隨意鍵繼續(xù)下一步操作..\n");
getch();
system("cls");
}
voidInsert_New_Book()/*新書入庫(kù)*/
{
BK*p,*p0,*p1;
p=p1=h_book;
printf("\n新書入庫(kù)模塊...\n");
printf("\n請(qǐng)輸入新書信息..\n包括書號(hào).書名.數(shù)量..\n");
p0=(BK*)malloc(sizeof(BK));
printf("圖書編號(hào):");
scanf("%s",p0->book_num);
while(strcmp(p0->book_num,p1->book_num)!=0
if(strcmp(p0->book_num,p1->book_num)==0)/*此處分兩種狀況,若圖書編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書的數(shù)量*/
{
printf("\n此編號(hào)圖書已存在!!直接入庫(kù)!\n");
printf("圖書數(shù)量:");
scanf("%d",
p1->book_kc+=p0->book_kc;
p1->book_xy+=p0->book_kc;
}
else/*若不存在,則需要輸入其他的信息,然后在舉行插入操作*/
{
printf("圖書名稱:");
scanf("%s",p0->book_name);
printf("圖書:");
scanf("%s",p0->book_writer);
printf("圖書數(shù)量:");
scanf("%d",//庫(kù)存數(shù)量
while(p->next)
{p=p->next;}
if(h_book==NULL)h_book=p0;/*此處分兩種狀況,鏈表中沒有數(shù)據(jù),head直接指向p0處*/
elsep->next=p0;/*此處分兩種狀況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/
p0->next=NULL;
p0->book_xy=p0->book_kc;
}
printf("\n新書入庫(kù)完畢!按隨意鍵繼續(xù)下一步操作..\n");
getch();
system("cls");
voidadd_reader()/*添加讀者*/
{RD*p0;
inti;
printf("\n讀者初始化開頭,請(qǐng)輸入讀者信息..\n包括書證號(hào).姓名..\n");p0=(RD*)malloc(sizeof(RD));/*申請(qǐng)新結(jié)點(diǎn)存儲(chǔ)空間*/
h_reader=p0;
printf("\n請(qǐng)輸入讀者的信息:\n");
printf("讀者書證號(hào):");
scanf("%s",p0->reader_num);
printf("讀者姓名:");
scanf("%s",p0->reader_name);
p0->right=0;
for(i=0;iborrow[i].borrow_book_num,"0");/*所借圖書直接置為(即沒有借書)*/
strcpy(p0->borrow[i].limit_date,"0");
}
p0->next=NULL;
printf("\n讀者信息初始化完畢!按隨意鍵繼續(xù)下一步操作..\n");
getch();
system("cls");
}
voidBorrow_Book()/*借書模塊*/
{
BK*p0;RD*p1;
charbo_num[10],rea_num[10],lim_date[8];
inti;
p0=h_book;p1=h_reader;
printf("\n借書模塊...\n");
printf("\n請(qǐng)輸入借書的讀者書證號(hào):");
scanf("%s",rea_num);
while(p1->next!=NULL
if(p1->next==NULL
gotoEND;
}
printf("\n請(qǐng)輸入你要借的書的編號(hào):");
scanf("%s",bo_num);
while(strcmp(bo_num,p0->book_num)!=0
if(p0->next==NULL
gotoEND;
}
elseif(p0->book_xyright>Max||p1->right==Max)
{
printf("\n不好意思,借書數(shù)目已滿!不能借書!\n按隨意鍵返回");
gotoEND;
}
elseif(strcmp(p1->borrow[0].borrow_book_num,"0")!=0)
{
for(i=0;iborrow[i].borrow_book_num,bo_num)==0)
{
printf("\n愧疚!同一個(gè)讀者不能同借兩本相同的書!\n按隨意鍵返回");
gotoEND;
}
elseif(strcmp(p1->borrow[i].borrow_book_num,"0")==0)
{
printf("\n請(qǐng)輸入你要?dú)w還圖書的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);
p0->book_xy--;
p0->book_kc--;
printf("\n讀者編號(hào)%s借書完畢!按隨意鍵繼續(xù)下步操
作..",p1->reader_num);
gotoEND;
}
}
else
{
printf("\n請(qǐng)輸入你要?dú)w還圖書的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);
p0->book_xy--;
p0->book_kc--;
printf("\n讀者編號(hào)%s借書完畢!按隨意鍵繼續(xù)下步操
作..",p1->reader_num);
}
END:getch();system("cls");
}
voidReturn_Book()/*還書模塊*/
{
BK*p;RD*q;
inti,j,find=0;
charreturn_book_num[10],return_reader_num[10];
p=h_book;q=h_reader;
printf("\n還書模塊...\n");
printf("\n請(qǐng)輸入要還書的讀者編號(hào):");
scanf("%s",return_reader_num);
while(q->next!=NULL
if(q->next==NULL
printf("\n此讀者編號(hào)不存在!按隨意鍵返回..\n");
gotoend;
}
printf("\n請(qǐng)輸入讀者還書的編號(hào):");
scanf("%s",return_book_num);
while(p->next!=NULL
if(p->next==NULL
printf("\n錯(cuò)誤!此圖書編號(hào)不存在!按隨意鍵返回..\n");
gotoend;
for(i=0;iborrow[i].borrow_book_num)==0)/*假如此讀者借了此書*/
{
find=1;
for(j=i;jborrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);
}
strcpy(q->borrow[Max-1].borrow_book_num,"0");
strcpy(q->borrow[Max-1].limit_date,"0");
p->book_xy++;
p->book_kc++;
q->right--;
printf("\n編號(hào)%s的讀者還書完畢!按隨意鍵繼續(xù)下步操
作..",return_reader_num);
}
if(find==0)
printf("\n錯(cuò)誤!此讀者未借此書!按隨意鍵返回..\n");
end:getch();system("cls");
}
voidPrint_book()/*查詢圖書信息*/
{
BK*p;
p=h_book;
printf("\n圖書信息如下:\n\n");
printf("圖書編號(hào)\t圖書名稱\t圖書\t現(xiàn)有\(zhòng)t\t庫(kù)存\n");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);
p=p->next;
}
printf("\n圖書信息打印完畢!按隨意鍵繼續(xù)下一步操作..");
getch();
system("cls");
}
voidPrint_reader()/*查詢讀者信息*/
{
RD*p;
inti;
p=h_reader;
printf("\n讀者信息如下:\n\n");
printf("讀者書證號(hào)\t\t讀者姓名\n");
printf("\n");
while(p!=NULL)
{
printf("\t%s\t\t%s",p->reader_num,p->reader_name);
for(i=0;iborrow[i].borrow_book_num);
printf("\t\t%s",p->borrow[i].limit_date);
}
printf("\n");
p=p->next;
}
printf("\n讀者信息打印完畢!按隨意鍵繼續(xù)下一步操作..");
getch();
system("cls");
}
voidSave()/*保存信息*/
{
Save_Reader();
Save_Book();
}
voidSave_Reader()/*保存讀者信息*/
{
FILE*fp_reader;
RD*p,*p0;
p=h_reader;
if((fp_reader=fopen("Reader.txt","wb"))==NULL)/*創(chuàng)建文件,舉行保存*/{
printf("\n文件保存失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(RD),1,fp_reader)!=1)/*將鏈表中的信息寫入文件中*/
printf("\n寫入文件失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)!\n");
p0=p;
p=p->next;
free(p0);/*釋放全部結(jié)點(diǎn)*/
}
h_reader=NULL;
fclose(fp_reader);/*關(guān)閉文件*/
}
voidSave_Book()/*保存圖書信息*/
{
FILE*fp_book;/*創(chuàng)建文件型指針*/
BK*p,*p0;
p=h_book;
if((fp_book=fopen("Book.txt","wb"))==NULL)/*創(chuàng)建文件,舉行保存*/{
printf("\n文件保存失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(BK),1,fp_book)!=1)/*將鏈表中的信息寫入文件中*/
printf("\n寫入文件失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)!\n");
p0=p;
p=p->next;
free(p0);
}
h_book=NULL;
fclose(fp_book);/*關(guān)閉文件*/
}
voidLoad()/*加載信息*/
{
Load_Reader();
Load_Book();
}
voidLoad_Reader()/*加載讀者信息*/
{
RD*p1,*p2,*p3;
FILE*fp;/*創(chuàng)建文件型指針*/
fp=fopen("book.txt","rb");/*打開文件*/p1=(RD*)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
h_reader=p3=p2=p1;
while(!feof(fp))/*讀出信息,重新鏈入鏈表*/{p1=(RD*)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp);/*關(guān)閉文件*/
}
voidLoad_Book()/*加載圖書信息*/
{
BK*p1,*p2,*p3;
FILE*fp;/*創(chuàng)建文件型指針*/
fp=fopen("Book.txt","rb");/*打開文件*/
p1=(BK*)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
h_book=p3=p2=p1;
while(!feof(fp))/*讀出信息,重新鏈入鏈表*/{p1=(BK*)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp);/*關(guān)閉文件*/
}
voidmain()
{
FILE*fp_book,*fp_reader;/*創(chuàng)建文件型指針*/
Login();
if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL)
{Init();}
elseLoad();
Menu_select();/*調(diào)用主菜單*/
}
#include
#include
#include
#include
#defineMAX100
typedefstructbook
{
charbook_num[10];
charbook_name[20];
charbook_writer[20];
intbook_amount;
structbook*next;
}BOOK;
BOOK*head;
voidLogin();
intMenu();
voidInit();
voidInit_book();
voidMenu_select();
voidInsert_New_Book();
voidFind_Book();
voidadd_reader();
voidPrint_reader();
voidPrint_book();
voidBorrow_Book();
voidReturn_Book();
voidSave();
voidSave_Book();
voidSave_Reader();
voidLoad();
voidLoad_Reader();
voidLoad_Book();
voidLogin()
{
system("cls");
printf("\n\n\t\t***************************************\n");
printf("\n\n\t\t\t歡迎使用圖書管理系統(tǒng)\n");
printf("\n\n\t\t***************************************\n");
printf("\n\n\t\t按隨意鍵進(jìn)入系統(tǒng)...");
getch();
system("cls");
}
intMenu()/*主菜單*/
{
intfanction;
printf("\n\t\t圖書管理系統(tǒng)主菜單\n");
printf("=================================================\n");
printf("*\t0退出系統(tǒng)\n");
printf("*\t1采編入庫(kù)\n");
printf("*\t2記下讀者\(yùn)n");
printf("*\t3借閱記下\n");
printf("*\t4還書管理\n");
printf("*\t5查詢圖書信息\n");
printf("*\t6查詢讀者信息\n");
printf("=================================================\n");
printf("請(qǐng)?zhí)暨x相應(yīng)的代碼:");
for(;;)
{
scanf("%d",//dm輸入的數(shù)字
if(fanction6)
printf("\n錯(cuò)誤!請(qǐng)重新輸入:");
elsebreak;
}
returnfanction;
}
voidMenu_select()/*主菜單挑選函數(shù)*/
{
for(;;)
{
switch(Menu())/*功能挑選*/
{
case0:
system("cls");
Save();
printf("\n\n\t文件保存勝利!\n");
printf("\n\n\t歡迎下次使用本系統(tǒng)!\n");
getch();
exit(0);
case1:Insert_New_Book();break;
case2:add_reader();break;
case3:Borrow_Book();break;
case4:Return_Book();break;
case5:Print_book();break;
case6:Print_reader();break;
default:printf("\n錯(cuò)誤!");
exit(0);
}
}
}
voidInit()/*初始化*/
{
BOOK*p0;
printf("\n圖書初始化開頭,請(qǐng)輸入圖書信息..\n包括編號(hào).書名.數(shù)量..\n");
p0=(BOOK*)malloc(sizeof(BOOK));
head=p0;
printf("\n請(qǐng)輸入圖書信息:\n");
printf("圖書編號(hào):");/*輸入圖書編號(hào)(唯一)*/scanf("%s",p0->book_num);
printf("圖書名稱:");/*輸入圖書名稱*/
scanf("%s",p0->book_name);
printf("圖書:");/*輸入圖書*/
scanf("%s",p0->book_writer);
printf("圖書數(shù)量:");/*輸入圖書數(shù)量*/
scanf("%d",
p0->next=NULL;
printf("\n圖書信息初始化完畢!按隨意鍵繼續(xù)下一步操作..\n");
getch();
system("cls");
}
voidInsert_New_Book()/*新書入庫(kù)*/
{
BOOK*p,*p0,*p1;
p=p1=head;
printf("\n新書入庫(kù)模塊...\n");
printf("\n請(qǐng)輸入新書信息..\n包括書號(hào).書名.數(shù)量..\n");
p0=(BOOK*)malloc(sizeof(BOOK));
printf("圖書編號(hào):");
scanf("%s",p0->book_num);
while(strcmp(p0->book_num,p1->book_num)!=0
}
if(strcmp(p0->book_num,p1->book_num)==0)/*此處分兩種狀況,若圖書編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書的數(shù)量*/
{
printf("\n此編號(hào)圖書已存在!!直接入庫(kù)!\n");
printf("圖書數(shù)量:");
scanf("%d",
p1->book_amount+=p0->book_amount;
}
else/*若不存在,則需要輸入其他的信息,然后在舉行插入操作*/
{
printf("圖書名稱:");
scanf("%s",p0->book_name);
printf("圖書:");
scanf("%s",p0->book_writer);
printf("圖書數(shù)量:");
scanf("%d",//庫(kù)存數(shù)量
while(p->next)
{
p=p->next;
}
if(head==NULL)
head=p0;/*此處分兩種狀況,鏈表中沒有數(shù)據(jù),head直接指向p0處*/
elsep->next=p0;/*此處分兩種狀況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/
p0->next=NULL;
}
printf("\n新書入庫(kù)完畢!按隨意鍵繼續(xù)下一步操作..\n");
getch();
system("cls");
}
voidPrint_book()/*查詢圖書信息*/
{
BOOK*p;
p=head;
printf("\n圖書信息如下:\n\n");
printf("圖書編號(hào)\t圖書名稱\t圖書\t庫(kù)存\t");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%s\t\t%d\t\n",p->book_num,p->book_name,p->book_writer,p->book_amount);
p=p->next;
}
printf("\n圖書信息打印完畢!按隨意鍵繼續(xù)下一步操作..");
getch();
system("cls");
}
voidSave()/*保存信息*/
{
FILE*fp_book;/*創(chuàng)建文件型指針*/
BOOK*p,*p0;
p=head;
if((fp_book=fopen("Book.txt","wb"))==NULL)/*創(chuàng)建文件,舉行保存*/
{
printf("\n文件保存失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(BOOK),1,fp_book)!=1)/*將鏈表中的信息寫入文件中*/
printf("\n寫入文件失敗!\n請(qǐng)重新啟動(dòng)本系統(tǒng)!\n");
p0=p;
p=p->next;
free(p0);
}
head=NULL;
fclose(fp_book);/*關(guān)閉文件*/
}
voidLoad()/*加載信息*/
{
BOOK*p1,*p2,*p3;
FILE*fp;/*創(chuàng)建文件型指針*/
fp=fopen("Book.txt","rb");/*打開文件*/
p1=(BOOK*)malloc(sizeof(BOOK));
fread(p1,sizeof(BOOK),1,fp);
head=p3=p2=p1;
while(!feof(fp))/*讀出信息,重新鏈入鏈表*/
{p1=(BOOK*)malloc(sizeof(BOOK));
fread(p1,sizeof(BOOK),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp);/*關(guān)閉文件*/
}
voidmain()
{
FILE*fp_book;/*創(chuàng)建文件型指針*/Login();
if((fp_book=fopen("Book.txt","rb"))==NULL)
{Init();}
elseLoad();
Menu_select();/*調(diào)用主菜單*/
}
六.附錄:帶解釋的源程序。
#include
#include
usingnamespacestd;
classinfo{
public:
stringclassify,bookname,autor;//string就是一個(gè)字符串
intprice;
intbuyyear,buymouth;
classinfo*next;
};
voidinitialise(info*b){//初始化函數(shù),傳進(jìn)一個(gè)指針
b->next=NULL;
b->price=0;
b->buyyear=0;
b->buymouth=0;
b->bookname='\0';
b->autor='\0';
b->classify='\0';
}
voidputinfo(info*b){//輸出函數(shù),輸出一個(gè)指針
coutclassifybooknameautorbuyyearbuymouthpriceclassify;
tbookname=p->bookname;
tautor=p->autor;
tprice=p->price;
tbuyyear=p->buyyear;
tbuymouth=p->buymouth;
p->classify=p1->classify;
p->bookname=p1->bookname;
p->autor=p1->autor;
p->price=p1->price;
p->buyyear=p1->buyyear;
p->buymouth=p1->buymouth;
p1->bookname=tbookname;
p1->autor=tautor;
p1->classify=tclassify;
p1->buyyear=tbuyyear;
p1->buymouth=tbuyyear;
p1->price=tprice;
}
voidfindbookname(info*boot,stringtemp){//通過查找書名查找書,temp是一個(gè)字符串,放用戶想查找的書名
inti=0;//boot是根節(jié)點(diǎn)
while(boot){
if(boot->bookname==temp){
i=1;
putinfo(boot);
break;
}
boot=boot->next;
}
if(i==0)
coutautor==temp){
i=1;
putinfo(boot);
}
boot=boot->next;
}
if(i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 18384-2025電動(dòng)汽車安全要求
- 五年級(jí)上冊(cè)語文試卷及答案
- 衛(wèi)生招聘題庫(kù)及答案
- 過程裝備控制技術(shù)與應(yīng)用
- 部編版2021年四年級(jí)語文上冊(cè)期末測(cè)試卷【附答案】
- 淺析中職衛(wèi)校醫(yī)護(hù)生英語學(xué)習(xí)難點(diǎn)及應(yīng)對(duì)途徑
- 腳氣科普課件
- 2022-2023年人教版三年級(jí)語文下冊(cè)期中測(cè)試卷及答案【審定版】
- 電氣測(cè)量技術(shù)要領(lǐng)
- 申論考試題目分析及答案
- 南京醫(yī)科大學(xué)2026年招聘人事代理人員備考題庫(kù)及1套參考答案詳解
- 2026年教育平臺(tái)資源輸出協(xié)議
- 【《四旋翼飛行器坐標(biāo)系及相互轉(zhuǎn)換關(guān)系分析綜述》1000字】
- 2026浙江金華市婺城區(qū)城市發(fā)展控股集團(tuán)有限公司招聘59人筆試參考題庫(kù)及答案解析
- 靜脈補(bǔ)液課件
- 廣東深圳市鹽田高級(jí)中學(xué)2024~2025學(xué)年高一上冊(cè)1月期末考試化學(xué)試題 附答案
- 2026年輔警招聘考試試題庫(kù)附答案【完整版】
- 建筑施工風(fēng)險(xiǎn)辨識(shí)與防范措施
- 浙江省杭州地區(qū)六校2026屆化學(xué)高一第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
- 2025年CFA二級(jí)估值與財(cái)務(wù)報(bào)表分析試卷(含答案)
- GB/T 39693.4-2025硫化橡膠或熱塑性橡膠硬度的測(cè)定第4部分:用邵氏硬度計(jì)法(邵爾硬度)測(cè)定壓入硬度
評(píng)論
0/150
提交評(píng)論