圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論