c語言實(shí)訓(xùn)大作業(yè)_第1頁
c語言實(shí)訓(xùn)大作業(yè)_第2頁
c語言實(shí)訓(xùn)大作業(yè)_第3頁
c語言實(shí)訓(xùn)大作業(yè)_第4頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

南昌大亨軟件學(xué)院大作業(yè)任務(wù)書題目: 畫お偉管理?xiàng)l饒 專 業(yè): 軟件工程 班 級(jí): 133班 姓名學(xué)號(hào): 高爽超8000133177 學(xué)號(hào): 8000113177 完成人數(shù): し人 起訖日期:2014.2.17—2014.3.18任課教師: 劉伯成職稱: 講師部分管主任: 完成時(shí)間: 20成年月口 說明1,本任務(wù)書由任課教師填寫后,下達(dá)到學(xué)生。.任務(wù)完成后,任課教師需填寫小結(jié)表。.任務(wù)書、學(xué)生成績(jī)與學(xué)生完成后的大作業(yè)(紙質(zhì)和電子兩種)一并報(bào)送各教學(xué)研究部審核后轉(zhuǎn)教務(wù)辦。.另附ー份全班大作業(yè)總結(jié)大作業(yè)的要求和內(nèi)容:(包括題目選擇范圍、技術(shù)要求、遞交時(shí)間、考核方法等)請(qǐng)根據(jù)所學(xué)的C語言的內(nèi)容,完成一個(gè)完整的C語言程序,程序的內(nèi)容和功能,可以自己根據(jù)需要進(jìn)行自定義,但不能過于簡(jiǎn)單,代碼行數(shù)要在1(X)0行以上,且所設(shè)計(jì)的程序滿足如下要求:.程序中要具備結(jié)構(gòu)體類型的數(shù)據(jù)操作、鏈表操作等;.程序中要具備文件讀取和寫入的操作(含順序、隨機(jī));.程序中要具備常用的排序和查找功能;.要有斷點(diǎn)調(diào)試、改錯(cuò)過程及相應(yīng)截圖;.要求程序具備簡(jiǎn)單的菜單功能,根據(jù)用戶的輸入,執(zhí)行相應(yīng)的操作;.在菜單界面,必須顯示程序的名稱、版本信息,開發(fā)者的名字、班級(jí)、學(xué)號(hào)等信息。最終提交的作業(yè),除提交完整的程序工程代碼外,還必須以大作業(yè)報(bào)告的形式說明程序的流程、結(jié)構(gòu)以及設(shè)計(jì)、實(shí)現(xiàn)過程,具體參見課程設(shè)計(jì)說明書和教材。作業(yè)評(píng)分將以完成的程序質(zhì)量和復(fù)雜程度為基礎(chǔ),并根據(jù)大作業(yè)報(bào)告進(jìn)行綜合評(píng)分。教師小結(jié):成績(jī): 教師簽名: 教研部負(fù)責(zé)人: 學(xué)生姓名:高爽超

南昌大學(xué)NANCHANGUNIVERSITYC語言工程實(shí)訓(xùn)課程設(shè)計(jì)題目: 囹石僮管理糸? 學(xué) 院: 軟件學(xué)院 專 業(yè): 軟件工程 班 級(jí): 軟エ133班 完成人數(shù): し人 成 員: し人 起訖日期: 2014.2.17—2014.3.18 任課教師: 劉伯成職稱:講師完成時(shí)間: 2014年3月15日 填表日期:2014年3月15日

TOC\o"1-5"\h\zー、需求分析 -1-項(xiàng)目介紹 -1-功能需求 -1-二、系統(tǒng)分析 -2本程序需解決的關(guān)鍵技術(shù)問題 -2程序流程 -2-三、程序設(shè)計(jì)與實(shí)現(xiàn) -4\o"CurrentDocument"3.2 程序?qū)崿F(xiàn) -49-四、系統(tǒng)測(cè)試 -60-\o"CurrentDocument"五、個(gè)人小結(jié) -61-\o"CurrentDocument"六、參考文獻(xiàn) -62-ー、需求分析(參考教材第2章)項(xiàng)目介紹畫あ管理糸統(tǒng)是ー個(gè)爲(wèi)盛集成,的囹羊信息處理系統(tǒng),通過囹お德的各種功惚進(jìn)行卷合,乂而達(dá)到龕東檢索信息,提あエ作公車,障假管理鼠埼等目的。功能需求ー個(gè)完巻的囹お管理糸統(tǒng)應(yīng)接惋管理所有的囹お種類,囹お信息い及族端信息,迷要梃供各種囹お信息的檢索我本莉功惚。被糸統(tǒng)迷需要對(duì)囹お的借閱,リョ迷進(jìn)行管理,并對(duì)犢老的罰款遂行自劭合計(jì)。i要實(shí)現(xiàn)。下幾個(gè)功惚,/?族老信息功惋2》重詢囹お信息5》t看。借囹おの〉囹お借閱5?重看罰款6》借閱歷史7?お0本莉外囹お偏目管理二、系統(tǒng)分析(參考教材第2章)2.1本程序需解決的關(guān)鍵技術(shù)問題需要解決的關(guān)健位獲包括。下凡支「/?程み中要具備稔構(gòu)體類型的眼據(jù)締作、徒泰練作,,2》程格中要具備女件族修猟寫人的練作(含順格和康機(jī)ノ3》程本中要具備有用的那木%壟找功餓;益要會(huì)使用新玄碉伏、改金,,5?要求程本具備簡(jiǎn)單的萊卓加他,根據(jù)用戶的綸入,執(zhí)行相反的猱作,,

三、程序設(shè)計(jì)與實(shí)現(xiàn)(參考教材第3?7章)3.1程序設(shè)計(jì)#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<time.h>HLE*fp;typedefstructReader(charCode[20];〃證件號(hào)charName[30JJ〃姓名charSex[5];〃性別charDept[50J;〃工作單位intTag; 〃狀態(tài):〇一正常,L掛失[Reader;typedefstructReaderLink(charCode[20]; 〃證件號(hào)charName[3O]; 〃姓名charSex[5]; 〃性別charDept[5O]; 〃工作單位intTag; 〃狀態(tài):〇一正常,1ー掛失structReaderLink*next;}ReaderLink;#ifndefCatalog_H#defineCatalog_H#defineMAX_TREE_SIZE100typedefstructCatalog 〃目錄結(jié)構(gòu)類型{charKey[20J;〃編號(hào)charCaption[80];〃標(biāo)題,類名charParent[20J;〃父類編號(hào)//intnum;}Catalog;typedefstructCatalogTree〃目錄順序存儲(chǔ)結(jié)構(gòu)類型(CatalogNode[MAX_TREE_SIZE];iniroot; 〃根節(jié)點(diǎn)位置,根節(jié)點(diǎn)默認(rèn)在0號(hào)單元;intnum; 〃最后一個(gè)結(jié)點(diǎn)的數(shù)組編號(hào)}CatalogTree;#ifndefBook_H#defineBook_H#defineMAX_BOOK_SIZE5000#definetrue1#definefalse0typedefintbool;typedefstructBook(charISBN[50]; //ISBN號(hào)charTitle[200];〃書名charAuthor[200]; 〃作者charPublisher[100]1 〃出版社charDate[20]; 〃出版日期floatPrice; 〃價(jià)格charCatalogNum[200];〃分類編號(hào)}Book;typedefstructBookLink 〃圖書單鏈表存儲(chǔ)結(jié)構(gòu)類型(charISBN[50]; //ISBN號(hào)charTitle[200];〃書名charAuthor[200]; 〃作者charPublisherflOO]; 〃出版社charDate[20]; 〃出版日期floatPrice; 〃價(jià)格charCatalogNum[200];〃分類編號(hào)structBookLink*next;[BookLink;typedefstructBookList〃圖書順序存儲(chǔ)結(jié)構(gòu)類型Book*Node;intNum;(BookList;〃圖書個(gè)數(shù)#ifndefLend_H#defineLend_H#defineMAX_BOOK_LEND4〃最多借15本#defineMAX_DAY_LEND90 /?最長(zhǎng)借期90天?/typedefstructLendlnfo(charCode[20];〃證件號(hào)charISBN[50];charLendDate[20];〃借書日期charLastDate[20];〃應(yīng)還日期charReturnDate[20J;〃歸還日期intTag; 〃狀態(tài)〇;借出,1:歸還}Lendlnfo;typedefstructLendlnfoLink(charCode[201;〃證件號(hào)charISBN[50];charLendDate[20];〃借書日期charLastDate[20];〃應(yīng)還II期charReturnDate[20];〃歸還日期intTag;〃狀態(tài)〇;借出,1:歸還structLendlnfoLink"next;}LendlnfoLink;voidMainMenu();voidReadMenu();voidReadMenuChoose();voidCatalogMenu();voidCatalogMenuChoose();voidBookMenuQ;voidBookMenuChooseQ;voidCirculMenu();voidCirculMenuChooseQ;voidAddCatalog(); 〃增力口分類voidPrintCatalog();〃輸出目錄,(編號(hào),類名,父類號(hào))voidCreatCatalogTree();〃建立分類目錄樹,調(diào)用PrintCatalogTree()voidPrintCatalogTree(CatalogTree*tree);〃輸出分類目錄樹,調(diào)用PreOrder();voidPreOrder(CatalogTree*,int,int);〃遞歸遍歷結(jié)構(gòu)體數(shù)組輸出樹voidAlterCatalog();〃修改分類#endifvoidBrowseReader(); 〃瀏覽所有讀者信息ReaderLink*InputReader();〃輸入讀者信息,建立鏈表voidSaveReader(ReaderLink*);〃保存讀者鏈表到文件voidFindReader_Code(); 〃從文件中按照證件號(hào)查找voidFindReader_Name(); 〃從文件中按照姓名查找voidAlterReader();〃修改讀者信息,從文件中讀取信息, 〃建立鏈表,查找并修改,再寫回文件ReaderLink*CreatReaderLink();〃從文件讀取讀者信息并創(chuàng)建鏈表voidSaveReaderW(ReaderLink*);〃讀者信息寫入文件,刪除舊信息瀏覽voidLostReader();〃證件掛失#endif/?從文件讀出數(shù)據(jù),建立單鏈表,刪改查后,重新寫回文件增加圖書就直接追加寫入文件?/BookLink*InputBook(); 〃輸入多個(gè)圖書目錄,建立鏈表voidSaveBook(BookLink* );〃保存圖書鏈表到文件BookLink*CreatBookLink();〃讀取文件信息,建立圖書目錄鏈表voidSaveBookW(BookLink*);〃保存鏈表到文件,垂寫B(tài)ookLink*InsertSortBook(BookLink*head);〃圖書目錄直接插入排序voidDeleteBook(); 〃刪除圖書目錄voidAlterBook(); 〃修改圖書目錄#endifvoidBookBrowseCatalog();〃圖書分類瀏覽BookListCreatBookList();〃建立圖書結(jié)構(gòu)體數(shù)組voidFindISBN(); //BookListBubbleSort(BookLis);intBinSearchISBN(BookListB,char[]);voidFindISBN_BubbleSort();voidFindISBN_SelectSort();voidFindISBN_InsertSort();BookListSelectSort(BookList);intBinSearchTitle(BookList,char[]);voidFindAuthor();BookListInsertSort(BookList);intSearchAuthor(BookList,char[]);〃順序査找多個(gè)voidFindPublisher();BookListBInsertSort(BookList);intSearchPublisher(BookList,char[]);〃順序查找多個(gè)voidFindTitle();voidLendBook();〃借閱圖書ReaderFindReaderL(char[]);〃查詢讀者//intLendBookNum(char[]);〃計(jì)算已借本數(shù)voidSaveLendInfo(LendInfo);〃保存借閱信息到文件voidRetumBook();〃還書LendlnfoLink*CreatLendLink。;//建立借閱信息鏈表voidSaveLendInfoW(LendInfoLink*);〃保存借閱信息到文件,覆蓋舊信息voidFindLendInfo();//查詢個(gè)人借閱記錄voidmain()(intMenuNum;do(MainMenu();printf("請(qǐng)輸入你的選擇!0-4:”);scanf(,'%d,',&MenuNum);switch(MenuNum)(ReadMenu();ReadMenuChoose();printf(n\n 回車?yán)^續(xù)操作! \nn);getch();system("cls");break;CatalogMenu();CatalogMenuChoose();printf("\n 回車?yán)^續(xù)操作! \nM);getch();system(,,clsH);break;BookMenu();BookMenuChooseO;printf(M\n 回車?yán)^續(xù)操作! An”);getch();systemC'cls");break;CirculMenu();CirculMenuChoose();printf(H\n 回車?yán)^續(xù)操作! An”);getch();system,cis”);break;case0:;break;)}while(MenuNum!=O);voidMainMenu()printf(M****************************************\n");printfC南昌大學(xué)圖書館管理系統(tǒng)\n");printf(M主菜單\n");printf(H****************************************\n");printfC1* 1.讀者管理 ?\n");printfC'* 2.圖書分類管理 ?\n");printfC1* 3.圖書編目管理 ?\n");printfC'* 4.圖書流通管理 ?\n");printfC,? 〇.退出系統(tǒng) ?\n");printfC,\n),printfC,版權(quán)所有南昌大學(xué)軟件工程高爽超 \n*');printf(**學(xué)號(hào):8000113177時(shí)間:2014/3/15 \n*');printf(**)\n),

voidReadMenu()printf(M****************************************5");printf(M讀者管理菜單\n");printf(u****************************************\n");printf(H*1.瀏覽所有讀者*\nM);printf(M*2.增加讀者*\nH);printf(M*3.査詢讀者*\nn);printf(M*4.修改讀者*\nH);printf(Hホ5.證件掛失*\nM);printf(M*〇.返回上級(jí)printf(n****************************************\n");voidCatalogMenu()printf(M****************************************\n");printf(M分類管理菜單\n");printf(n****************************************\n");printf(H*1.增加分類*\nM);printf(M*2.輸出分類*\nM);printf(K*3.輸出樹形分類樹*\nM);printf(n*4.修改分類*\nM);printf(Hホ0.返回上級(jí)*\nM);voidBookMenu()printf(Mprintf("\n),圖書編目管理菜單\n)printf(Hprintf("printf(nprintf("\n),1.新書錄入 ?\nn);2.刪除圖書目錄 也ガ);3.修改圖書目錄 ?\nH);

printf(Mprintf(Mprintf(Mprintf(Mprintf(n4.查詢圖書目錄0.返回上級(jí)汽ガ);*\nn);、パ);voidCircuIMenu()printf(M****************************************\n");printf(H圖書流通管理菜單'パ);printf(n?東?東東********な密本*東?申*東*ホ****東??木?東??糸***\n");printf(M* 1.圖書分類瀏覽 ?\n");printf(n* 2.圖書檢索 ?\n");printf(M* 3.借書 ?\n");printf(M* 4.還書 ?\n");printf(M* 5.查詢借閱記錄 ?\n");printf("? 〇.返回上級(jí) ?\n");printf(n****************************************\n");voidCirculMenuChoose()(intMenuNum;intnum;printf("請(qǐng)輸入你的選擇!0-5:M);scanf(”%d”,&MenuNum);switch(MenuNum)BookBrowseCatalog();break;printfC'\n輸入選擇(ISBN1,書名2,作者3,出版社4):");scanf(M%dn,&num);switch(num){FindISBN_BubbleSort();break;FindTitle();break;FindAuthor();break;FindPublisher();break;)break;LendBook();break;ReturnBook();break;FindLendInfo();break;case0:;break;)voidCatalogMenuChoose()(intMenuNum;intnum;primf("請(qǐng)輸入你的選擇!0-4:n);scanf(M%d",&MenuNum);switch(MenuNum)(case1:AddCatalog();break;PrintCatalog();break;CreatCatalogTree();break;AlterCatalog();break;case0:;break;voidReadMenuChoose()(intMenuNum;intnum;printf("請(qǐng)輸入你的選擇!0-5:つ;scanf("%d”,&MenuNum);switch(MenuNum)(BrowseReader();break;case2:InputReader();break;printf("\n輸入選擇(證件號(hào):1,姓名:2):ッ;scanf(”%d”,&num);if(num==1)FindReader_Code();elseFindReader_Name();break;AlterReader();break;LostReader();break;case0:;break;)voidBookMenuChoose()(intMenuNum;intnum;printff請(qǐng)輸入你的選擇!0-4:n);scanf("%d”,&MenuNum);switch(MenuNum)(case1:InputBook();break;DeleteBook();break;AlterBook();break;FindISBN_BubbleSort();break;case0:;break;)voidBrowseReader()(charCode[20];charName[30J;charSex[5];charDept[50J;intTag;if((fp=fopen(Mreader.txt'V,rM))=NULL)(printf("文件打開錯(cuò)誤!\n“);exit(O);}printf(H\n\n \nH);printf("證件號(hào) 姓名 性別 單位'バ);printf(H\n \n");fscanf(fp,"%s%s%s%s%d",Code,Name,Sex,Dept,&Tag);while(!feof(fp))(printf(H%s\t%s\t%s\t%s\t\n",Code,Name,Sex,Dept);fscanf(fp,"%s%s%s%s%d",Code,Name,Sex,Dept,&Tag);if(fclose(fp))(printf("不能關(guān)閉文件天”);exit(O);)}ReaderLink*InputReader()(ReaderLink*p,*q,*head;charCode[20J;intn=O,x;printf(H\n\n \n”);printf(”證件號(hào),姓名,性別(F,M),單位,掛失狀態(tài)(0,1)。以#結(jié)束\n”);printf(n\n \n”);head=(ReaderLink*)malloc(sizeof(ReaderLink));p=head;scanf(M%sM,Code);while(l)if(strcmp(Code,"#n)==0)break;elseq=(ReaderLink*)malloc(sizeof(ReaderLink));strcpy(q->Code,Code);scanf("%s%s%s%d,\q->Name,q->Sex,q->Dept,&q->Tag);p->next=q;p=q;)scanf("%s”,Code);q->next=NULL;printf("讀者信息輸入結(jié)束!\n*,);getchar();printf("是否保存讀者信息?(1.是ノ2.否):”);scanf(,,%d'\&x);if(x==l)SaveReader(head);elseprintf("\n文件沒有被保存!\n)returnhead;voidSaveReader(ReaderLink*head)ReaderLink*p;if((fp=fopen(,,reader.txt',;,aH))==NULL)(printf("文件打開錯(cuò)誤!\n");exit(O);for(p=head->next;p!=NULL;p=p->next)fprintf(fp,H%s\t%s\t%s\t%s\t%d\n",p->Code,p->Name,p->Sex,p->Dept,p->Tag);fclose(fp);printf(”\n圖書信息已成功保存到文件reader.txt中!、ガ);getchar();voidFindReader_Code()(charCode[20];ReaderR;intflag=O;printf(”\n輸入要查詢讀者的證件號(hào):り;scanf(n%s'\Code);if((fp=fopen(',reader.txt,,;,r,,))==NULL)(printf("文件打開錯(cuò)誤!\n");exit(O);)while(!feof(fp))(fscanf(fp/'%s%s%s%s%d'\R.Code,R.Name,R.Sex,R.Dept,&R.Tag);if(strcmp(R.Code,Code)==0){printf("\n%s\t%s\t%s\t%s\t%d\n,,,R.Code,R.Name,R.Sex,R.Dept,R.Tag);flag=l;break;})if(f!ag==O)printf("沒有找到讀者記錄!\n");getchar();fclose(fp);)voidFindReader_Name()charName[30J;ReaderR;intflag=0;printf(”\n輸入要查詢讀者的姓名:り;scanf(n%sH,Name);if((fp=fopen(,'reader.txt',;'rM))=NULL)(printf("文件打開錯(cuò)誤借”);exit(O);)while(!feof(fp)){fscanf(fp,"%s%s%s%s%d,\R.Code,R.Name,R.Sex,R.Dept,&R.Tag);if(strcmp(R.Name,Name)==O){printf(n\n%s\t%s\t%s\t%s\t%d\n,\R.Code,R.Name,R.Sex,R.Dept,R.Tag);flag=l;break;)}if(flag==O)printf("沒有找到讀者記錄紀(jì)”);fclose(fp);voidAlterReader()(charCode[20];charName[30J;charSex[5];charDept[50J;intTag;ReaderLink*head,*p;head=CreatReaderLink();printf("輸入要修改的讀者的證件號(hào):n);scanf(u%s",Code);p=head->next;for(p;p!=NULL&&strcmp(p->Code,Code)!=0;p=p->next);printf("找到要修改的讀者:ッ;printf(n%s\t%s\t%s\t%s\t%d\nn,p->Code,p->Name,p->Sex,p->Dept,p->Tag);printf("輸入讀者新的信息:證件號(hào),姓名,性別,工作單位,狀態(tài):\n“);scanf(H%s%s%s%s%dM,p->Code,p->Name,p->Sex,p->Dept,&p->Tag);printf(,'%s\t%s\t%s\t%s\t%d\n,',p->Code,p->Name,p->Sex,p->Dept,p->Tag);SaveReaderW(head);printf("修改成功!*');ReaderLink*CreatReaderLink()(ReaderLink*head,*p,*q;if((fp=fopen(,,reader.txt",,'r,,))==NULL)(printf("文件打開錯(cuò)誤!\n");exit(O);)head=(ReaderLink*)malloc(sizeof(ReaderLink));p=head;while(!feof(fp))(q=(ReaderLink*)malloc(sizeof(ReaderLink));fscanf(fp/%s\t%s\t%s\t%s\t%d\n,\q->Code,q->Name,q->Sex,q->Dept,&q->Tag);p->next=q;p=q;q->next=NULL;fclose(fp);returnhead;voidSaveReaderW(ReaderLink*head)ReaderLink*p;if((fp=fopen(Mreader.txt'V,wH))==NULL)(printf("文件打開錯(cuò)誤打");exit(O);}for(p=head->next;p!=NULL;p=p->next)fprintf(fp,,'%s\t%s\t%s\t%s\t%d\n",p->Code,p->Name,p->Sex,p->Dept,p->Tag);fclose(fp);printf("\n讀者信息已成功保存到文件reader.txt中!'n");getchar();}voidLostReader()(charCode[20];charName[30];charSex[5];charDept[5OJ;intTag;ReaderLink*head,*p;head=CreatReaderLink();printf("輸入掛失證件號(hào):り;scanf("%s'\Code);p=head->next;for(p;p!=NULL&&strcmp(p->Code,Code)!=0;p=p->next);printf(”\n找到要掛失的讀者: ッ;printf(',%s\t%s\t%s\t%s\n,',p->Code,p->Name,p->Sex,p->Dept);p->Tag=l;SaveReaderW(head);primf(”\n掛失成功!\n\n");voidAddCatalog()(CatalogC;if((fp=fopen(,,catalog3.dat,\"abM))==NULL)(printf("Fileopenerror!\n");exit(O);)else(printf("輸入:分類編號(hào),類名,父類編號(hào)。#結(jié)束:、ボ);scanf("%s”,C.Key);while(strcmp(C.Key,n#M)!=0){scanf(M%s%sH,C.Caption,C.Parent);fwrite(&C,sizeof(Catalog),1,fp);scanf(H%s'\C.Key);}fclose(fp);printf("操作成功!'n“);voidPrintCatalog()(CatalogC;if((fp=fopen(ncatalog3.dat,,,,,rb,,))==NULL)(printf("Fileopenerror!\n");exit(O);)else(fread(&C,sizeof(Catalog),1,fp);while(!feof(fp)){printf(n%s\t%s\t%s\nM,C.Key,C.Caption,C.Parent);fread(&C,sizeof(Catalog),1,fp);voidCreatCatalogTree()(CatalogTreeC;inti=0;if((fp=fopen(ncatalog3.dat,,,,,rb,'))==NULL)(printf(HFileopenerror!\nH);exit(O);)else(fread(&C.Node[iJ,sizeof(Catalog),1,fp);while(!feof(fp))(i++;fread(&C.Node[i],sizeof(Catalog),1,fp);}C.num=i;C.root=0;fclose(fp);)PrintCatalogTree(&C);)voidPrintCatalogTree(CatalogTree*tree)(inti;intlevel=l;PreOrder(tree,OJevel);)voidPreOrder(CatalogTree*tree,intk,intlevel)(inti,j,m=0;for(i=l;ivlevel;i++)printfC*n);printf(Hl %s%s\n",tree->Node[k].Caption,tree->Node[k].Key);for(j=k+1;j<tree->num;j++)(if(strcmp(tree->Node[j].Parent,tree->Node[k].Key)==0)(if(m==0)(PreOrder(tree,j,-H-level);m++;}elsePreOrder(tree,j,level);)voidAlterCatalog()charKey[20];CatalogC;intnum=O;printf(" \n\n");printf("輸入要修改的分類的編號(hào):つ;scanf(n%sH,Key);if((fp=fopen(ncatalog3.daf,,,,rb+H))==NULL)(printf(*'Fileopenerror!\nH);exit(O);)else(fread(&C,sizeof(Catalog),1,fp);while(!feof(fp)){if(strcmp(C.Key,Key)==O){printf(M%s\t%s\t%s\n\n",C.Key,C.Caption,C.Parent);break;}fread(&C,sizeof(Catalog),1,fp);num++;))printf("輸入分類新的編號(hào),類名,父類號(hào):\n\n");scanf(u%s%s%sn,C.Key,C.Caption,C.Parent);fseek(fp,num*sizeof(Catalog),SEEK_SET);fwrite(&C,sizeof(Catalog),1,fp);printf("修改成功!\n\nH);fclose(fp);BookLink*InputBook()BookLink*p,*q,*head;charISBN[50];intn=O,x;printf("也請(qǐng)按對(duì)應(yīng)項(xiàng)輸入圖書目錄以#結(jié)束:\nM);printf(M \nM);printf(nISBN——書名——作者——出版社——出版日期——價(jià)格——分類編號(hào)\n\n");printf(M\n輸入ー項(xiàng)回車:\n*');head=(BookLink*)malloc(sizeof(BookLink));p=head;getchar();printf("輸入ISBN:");gets(ISBN);while(l){if(strcmp(ISBN;,#,,)==O)break;elseq=(BookLink*)malloc(sizeof(BookLink));strcpy(q->ISBN,ISBN);printf("輸入書名:"); gets(q->Title);printf("輸入作者:"); gets(q->Author);printf("輸入出版社:");gets(q->Publisher);prinlf(”輸入出版日期:");gets(q->Date);printf(”輸入價(jià)格:”); scanf(”%f”,&q?>Price);getchar();printf(”輸入分類編號(hào):”);gets(q->CatalogNum);p->next=q;PF;}printf(”\n\n輸入ISBN:”);gets(ISBN);)q->next=NULL;printf("圖書目錄輸入結(jié)束!\n\nM);printf("是否保存圖書目錄?(1.是ノ2.否):");scanf(u%d",&x);if(x==l)SaveBook(head);elseprintf(”\n文件沒有被保存!\n”);returnhead;voidSaveBook(BookLink*head)BookLink*p;if((fp=fopen("books.txt,,;'a,,))==NULL)(printf(HFileopenerror!\nH);exit(O);)for(p=head->next;p!=NULL;p=p->next)fprintf(fp,M%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nM,p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);fclose(fp);printf("\n圖書信息已成功保存到文件book.txt中!\nn);getchar();BookLink*CreatBookLink()BookLink*head,*p,*q;charISBN[50];charTitle[200J;charAuthor[200];charPublisher1100];charDate[20];floatPrice;charCatalogNum[200];if((fp=fopen(',books.txt',;'r,,))==NULL){printf(*'Fileopenerror!\nM);exit(0);)head=(BookLink*)malloc(sizeof(BookLink));q=head;fscanf(fp,”%[人、U'ISBN);fscanf(fp,"%*[\t]H);fscanf(fp,“%網(wǎng)UlTitle);fscanf(fp,H%*[\t]H);fscanf(fp,"%[ベ]',Author);fscanf(fp,"%*[\t]");fscanf(fp,n%[A\t]",Publisher);fscanf(fp,"%*[\t]");fscanf(fp,n%[A\t]",Date);fscanf(fp,"%*[\t]u);fscanf(fp,"%f',&Price);fscanf(fp,u%*[\t]");fscanf(fp,"%[A\n]",CatalogNum);fscanf(fp,"%*c*,);while(!feof(fp))(p=(BookLink*)malloc(sizeof(BookLink));strcpy(p->ISBN,ISBN);strcpy(p->Title,Title);strcpy(p->Author,Author);strcpy(p->Publisher,Publisher);strcpy(p->Date,Date);p->Price=Price;strcpy(p->CataIogNum,CatalogNum);q->next=p;q=p;fscanf(fp,”%[人WJSBN);fscanf(fp,M%*[\t]n);fscanf(fp,"%[A\t]H,Title);fscanf(fp/'%*[\t]n);fscanf(fp,"%[人\t「,Author);fscanf(fp,"%*[\t]n);fscanf(fp,"%[ベt「,Publisher);fscanf(fp,H%*[\t]n);fscanf(fp/%[ベt]”,Date);fscanf(fp/'%*[\t]");fscanf(fp,"%f',&Price);fscanf(fp,n%*[\l]n);fscanf(fp,,,%[A\n]M,CatalogNum);fscanf(fp,"%*cH);)p->next=NULL;fclose(fp);/*p=head->next;while(p!=NULL)(printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n,',p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);p=p->next;ド/returnhead;voidSaveBookW(BookLink*head)BookLink*p;if((fp=fopen(nbooks.txt',,,,w',))==NULL)(printf("Fileopenerror!\n");exit(O);}for(p=head->next;p!=NULL;p=p->next)fprintf(fp,H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nn,p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);fclose(fp);printf("\n圖書信息已成功保存到文件book.txt中!\n");getchar();)voidDeleteBook()BookLink*head,*p,*pre;charISBN[50];head=CreatBookLink();p=head->next;pre=head;printf(n\n\n輸入要?jiǎng)h除圖書的ISBN:ッ;scanf(H%sM,ISBN);while((p!=NULL)&&(strcmp(p->ISBN,ISBN)!=O))(pre=p;p=p->next;(if(p==NULL)prindT圖書目錄不存在!n);elsepre->next=p->next;free(p);)SaveBookW(head);voidAlterBook()(BookLink*head,*p,*pre;charISBN[50];head=CreatBookLink();p=head->next;pre=head;getchar();printf("\n\n輸入要修改圖書的ISBN:n);gets(ISBN);while((p!=NULL)&&(strcmp(p->ISBN,ISBN)!=O))(pre=p;p=p->next;)if(p==NULL)priiHf("圖書目錄不存在!");else{primf("重新輸入圖書目錄!\n\n");printf("輸入ISBN:");gets(p->ISBN);printf("輸入書名:"); gets(p->Title);printf("輸入作者:り; gets(p->Author);printfC輸入出版社:");gets(p->Publisher);printf("輸入出版日期:");gets(p->Date);primf("輸入價(jià)格:");scanf("%f',&p->Price);getchar();printf("輸入分類編號(hào):");gets(p->CatalogNum);)SaveBookW(head);BookLink*InsertSortBook(BookLink*head)(BookLink*first,*t,*p,*pre;p=head->next;first=p->next;pre=head;p->next=NULL;while(first!=NULL)(p=head->next;pre=head;for(t=first;((p!=NULL)&&(p->ISBN<t->ISBN));pre=p,p=p->next);first=first->next;if(pre==head)(head->next=t;)else{pre->next=t;)t->next=p;)returnhead;voidBookBrowseCatalog()BookListB;charKey[20];inti;intsize;intr;intflag=0;B=CreatBookList();CreatCatalogTree();printf(”\n\n輸入要查詢的圖書分類編號(hào):”);scanf("%s",Key);size=strlen(Key);printf("\n\nM);for(i=1;i<=B.Num;i++)(r=memcmp(B.Node[i].CatalogNum,Key,size);if(r==O){printf(,,%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n\n\nM,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[iJ.Publisher,BNode[iJ.Date,B.Node[iJ.Price,B.Node[i].CatalogNum);flag=l;})if(flag==0)printf(”\n沒有找到這種類型圖書!\nH);BookListCreatBookList()BookListB;inti=0;charISBN[50];charTitle[200];charAuthor[200];charPublisherflOO];charDate[20];floatPrice;charCatalogNum[200];B.Node=(Book*)malloc(sizeof(Book)*MAX_BOOK_SIZE);if((fp=fopen(nbooks.txt,V'rw))==NULL)(printf(nFileopenerror!\nn);exit(O);}else(fscanf(fp,n%[A\t]",ISBN);fscanf(fp,M%*[\t]H);fscanf(fp,n%[A\t]n,Title);fscanf(fp,n%*[\t]M);fscanf(fp,n%[A\t]u,Author);fscanf(fp,M%*[\t]M);fscanf(fp,,,%[A\t]n,Publisher);fscanf(fp,M%*[\t]M);fscanf(fp,n%[A\t]n,Date);fscanf(fp,'1%*[\t]M);fscanf(fp,M%f\&Price);fscanf(fp,n%*[\t]n);fscanf(fp,n%[A\n]n,CatalogNum);fscanf(fp,n%*cn);while(!feof(fp))i++;strcpy(B.Node[i].ISBN,ISBN);strcpy(B.Node[i].Title,Title);strcpy(B.Node[i].Author,Author);strcpy(B.Node[i].Publisher,Publisher);strcpy(B.Node[i].Date,Date);B.Node[i].Price=Price;strcpy(B.Nodefi].CatalogNum,CatalogNum);fscanf(fp,"%[A\t]n,ISBN);fscanf(fp,n%*[\t]M);fscanf(fp,"%[A\t]n,Title);fscanf(fp;,%*[\t]n);fscanf(fp,"%[A\t]n,Author);fscanf(fp;,%*[\t]n);fscanf(fp,n%[A\t]M,Publisher);fscanf(fp,M%*[\t]n);fscanf(fp,n%[A\t]",Date);fscanf(fp,n%*[\t]H);fscanf(fp,M%f\&Price);fscanf(fp,w%*[\t]n);fscanf(fp,M%[A\n]M,CatalogNum);fscanf(fp,,,%*cH);B.Num=i;fclose(fp);return(B);voidFindISBN_BubbleSort()BookListB;charISBN[50];inti;B=CreatBookList();printf("\n\n輸入要查詢的圖書ISBN:n);scanf("%sM,ISBN);B=BubbleSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\n'\B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);elseprintf(”\n\n沒有找到記錄!*1);)BookListBubbleSort(BookListB)(inti,j,n;boolchange;Booktemp;n=B.Num;change=true;for(i=n;i>=l&&change;-i)(change=false;for(j=l;j<i;++j)if(strcmp(B.Node[j].ISBN,B,Node|j+l].ISBN)>0)(temp=B.Node[j4-l];B.Node|j+l]=B.Node|jJ;B.Node[j]=temp;change=true;}return(B);intBinSearchlSBN(BookListB,charISBN[])(intmid,low=l,high=B.Num;while(low<=high)(mid=(low+high)/2;if(strcmp(ISBN,B.Node[mid].ISBN)==0)returnmid;elseif(strcmp(ISBN,B.Node[mid].ISBN)<0)high=mid-l;elselow=mid+l;}return0;voidFindISBN_SelectSort()(BookListB;charISBN[50];inti;B=CreatBookList();printf(n\n\n輸入要查詢的圖書ISBN:M);scanf(”%s”,ISBN);B=SelectSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\nH,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,BNode[iJ.Publisher,B.Node[i].Date,B.Node[i].Price,BNode[iJ.CatalogNum);elseprintf("\n\n沒有找到記錄!”);)BookListSelectSort(BookListB)(inti,j,k;Booktemp;for(i=l;i<B.Num;++i)k=i;for(j=i+ly<=B.Num;++j){if(strcmp(B.Node[k].ISBN,B.Node[j].ISBN)>0)k=j;}if(k!=i){temp=B.Node[i];B.Node[i]=B.Node[k];B.Node[k]=temp;))returnB;)voidFindISBN_InsertSort()(BookListB;charISBN[50];inti;B=CreatBookList();printf(n\n\n輸入要查詢的圖書ISBN:M);scanf(”%s”,ISBN);B=InsertSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\nH,B.Node[i].ISBN,BNode[i].Title,B.Node[i].Author,BNode[iJ.Publisher,B.Node[i].Date,B.Node[i].Price,BNode[iJ.CatalogNum);elseprintf(u\n\n沒有找到記錄!");)BookListInsertSort(BookListB)inti,j;Booktemp;for(i=2;i<=B.Num;++i)if(strcmp(B.Node[i].ISBN,B.Node[i-i].ISBN)<0)(B.Node[0]=B.Node[i];B.Node[i]=B.Node[i-l];for(j=i-2;strcmp(B.Node[01.ISBN,B.Node[j].ISBNX0;-j)B.Node|j+l]=B.Node[j];B.Node[j+l]=B,Node[0];returnB;voidFindTitle()(BookListB;charTitle[200];inti;intflag=0;B=CreatBookList();printf("\n\n輸入要查詢的圖書Title:M);fflush(stdin);gets(Title);for(i=l;i<=B.Num;++i)if(strstr(B.Node[i].Title,Title)!=NULL)printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n,',B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);printf(H\n\nn);flag=l;)if(flag==0)printf(”\n\n沒有找到記錄!)voidFindAuthor()(BookListB;charAuthor[200J;inti;intflag=O;B=CreatBookList();printf("\n\n輸入要查詢的圖書Author:");fflush(stdin);gets(Author);for(i=l;i<=B.Num;++i)if(strstr(B.Node[i].Author,Author)!=NULL){printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nH,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);printf(,'\n\nM);flag=l;)if(flag==0)printf(”\n\n沒有找到記錄!)voidFindPublisher()(BookListB;charPublisher(100];inti;intflag=0;B=CreatBookList();printf(M\n\n輸入要查詢的圖書Publisher:n);fflush(stdin);gets(Publisher);printf(M\n\nM);for(i=1;i<=B.Num;++i)if(strstr(B.Node[i].Publisher,Publisher)!=NULL)(printf(M%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nn,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[iJ.Price,B.Node[i].CatalogNum);

printf(M\n\nM);flag=l;)if(nag==O)printf("\n\n沒有找到記錄!”);voidLendBook()(charCode[20];charISBN[50];ReaderR;BookListB;LendlnfoL;//LendlnfoLinkLHead;intyear,mon,day;inti;charLendDate[20];charReturnDate[20];charLastDate[20J;intBookNum=0;time_tt;structtmLendt,Lastt;t=time(NULL);strftime(LendDate,sizeof(LendDate),,,%Y-%m-%d",localtime(&t));t+=MAX_DAY_LEND*86400;strftime(LastDate,sizeof(LastDate),n%Y-%m-%d",localtime(&t));printf(n圖書借閱,按#結(jié)束printf(n圖書借閱,按#結(jié)束\n\nH);printf("請(qǐng)輸入證件號(hào):ッ;scanf("%s”,Code);R=FindReaderL(Code);printf(M%s\t%s\t%s\t%s\t%d\n\nM,R.Code,R.Name,R.Sex,R.Dept,R.Tag);//BookNum=LendBookNum(R.Code);if(R.Tag==l)primf("證件已掛失,禁止借閱!)elseif(BookNum>=4)printf("已經(jīng)借滿4本,不能再借!");else(printf("請(qǐng)輸入ISBN:");scanf(M%sMJSBN);while(strcmp(ISBN,M#',)!=O&&BookNum<MAX_BOOK_LEND)B=CreatBookList();B=BubbleSort(B);i=BinSearchISBN(BJSBN);if(i==O){printf(”\n\n沒有找到圖書!)break;}elsestrcpy(L.Code,R.Code);strcpy(L.ISBN,ISBN);strcpy(L.LendDate,LendDate);strcpy(L.RetumDate,nNULL");strcpy(L.LastDate,LastDate);L.Tag=O;printf(n%s\t%s\t%s\t%s\t%s\t 借 出\n\n'\L.ISBN,B.Node[i].Title,B.Node[i].Author,L.LendDate,LLastDate);SaveLendlnfo(L);BookNum-H-;printf("請(qǐng)輸入ISBN:");scanf(n%sn,ISBN);})if(BookNum>=4)prinlf(”已經(jīng)借滿4本,不能再借!*1);}printf(”\n借閱完畢!\n");ReaderFindReaderL(charCode[])(ReaderR;if((fp=fopen(,,reader.txt,,;'r,'))==NULL)(printf(nFileopenerror!\nM);exit(O);}while(!feof(fp))(fscanf(fp,n%s\t%s\t%s\t%s\t%d\nM,R.Code,R.Name,R.Sex,R.Dept,&R.Tag);/////////////////if(strcmp(R.Code,Code)==0)(returnR;break;)}printf("沒有找到讀者!\n");fclose(fp);/*intLendBookNum(charCode[20])(LendlnfoL;intBookNum=0;if((fp=fopen(,,lend.txtH,',a,,))==NULL)(printf("文件打開錯(cuò)誤!\n”);exit(O);}while(!feof(fp)){fscanf(fp/'%s\t%s\t%s\t%s\t%s\t%d\n,\L.Code,L.ISBN,L.LendDate,L.LastDate,L.RetumDate,&L,Tag);if(strcmp(L.Code,Code)==0&&L.Tag==0)〃比較|BookNum++;)fclose(fp);returnBookNum;)*/voidSaveLendInfo(LendInfoL)if((fp=fopen(,'lend.txt,';,a+,,))==NULL)(printf("文件打開失敗打”);exit(O);)fprintf(fp,n%s\t%s\t%s\t%s\t%s\t%d\n,,,L.Code,L.ISBN,L.LendDate,L.LastDate,LReturnDate,L.Tag);fclose(fp);printf("\n圖書信息已成功保存到文件reader.txt中!、ガ);getchar();voidReturnBook()(charCode[20];charISBN[50];BookListB;LendlnfoLink*head,*p;charReturnDate[20];inti;time_tt;t=time(NULL);strftime(RetumDate,sizeof(RetumDate),M%Y-%m-%d'\localtime(&t));head=CreatLendLink();printf(H 還書,按#結(jié)束 \n\nn);printf("請(qǐng)輸入證件號(hào):");scanf(u%sM,Code);printf("請(qǐng)輸入ISBN:");scanf(n%sn,ISBN);whUe(strcmp(ISBN,H#,,)!=O)B=CreatBookList();B=BubbleSort(B);i=BinSearchISBN(BJSBN);p=head->next;while(p!=NULL)if(strcmp(p->Code,Code)==0&&strcmp(p->ISBNJSBN)==0)break;elsep=p->next;strcpy(p->ReturnDate,RetumDate);p->Tag=l;printf(H%s\t%s\t%s\t%s\t%s\t 已 還\n\nH,p->ISBN,B.Node[i].Title,B.Node[i].Author,p->LendDate,p->RetumDate);printf("請(qǐng)輸入ISBN:");scanf("%s”,ISBN);}SaveLendlnfoW(head);printf("\n還書完畢!\nM);LendlnfoLink*CreatLendLink()(charCode[20];charISBN[50J;charLendDate[20];charLastDate[20];charReturnDate[20J;intTag;LendlnfoLink*head,*p,*q;if((fp=fopen(Mlend.txt,,,',r,,))==NULL)(printf(HFileopenerror!\nH);exit(O);)head=(LendInfoLink*)malloc(sizeof(LendInfoLink));q=head;fscanf(fp,"%[ハ、t]”,Code);fscanf(fp,H%*[\t]H);fscanf(fp/%[A\t]M,ISBN);fscanf(fp,H%*[\t]H);fscanf(fp,"%[ハヽt]”,LendDate);fscanf(fp,H%*[\t]M);fscanf(fp,"%[A\t]n,LastDate);fscanf(fp,n%*[\t]n);fscanf(fpj%[ベtyiRetumDate);fscanf(fp,H%*[\t]H);fscanf(fp,"%cT,&Tag);//intfscanf(母,"%*c");while(!feof(fp))(p=(LendInfoLink*)malloc(sizeof(LendInfoLink));strcpy(p->Code,Code);strcpy(p->ISBNJSBN);strcpy(p->LendDate,LendDate);strcpy(p->LastDate,LastDate);strcpy(p->ReturnDate,ReturnDate);p?>Fag=Tag;q->next=p;q=p;fscanf(fp,M%[A\t]n,Code);fscanf(fp,M%*[\t]M);fscanf(fp,H%[A\t]M,ISBN);fscanf(fp,M%*[\t]M);fscanf(fp,n%[A\t]",LendDate);fscanf(fp,M%*[\t]M);fscanf(fp,H%[A\t]H,LastDate);fscanf(fp,n%*[\t]M);fscanf(fp/%[ハヽt]”,RetumDate);fscanf(fp,M%*[\t]M);fscanf(fp,M%dH,&Tag);//intfscanf(fp,u%*cM);p->next=NULL;fclose(fp);returnhead;voidSaveLendInfoW(LendInfoLink*head)(LendlnfoLink*p;if((fp=fopen(,'lend.txt,,,nwM))=NULL)(printf("文件打不開件”);exit(O);)for(p=head->next;p!=NULL;p=p->next)fprintf(fp,n%s\t%s\t%s\t%s\t%s\t%d\n",p->Code,p->ISBN,p->LendDate,p->LastDate,p->ReturnDate,p->Tag);fclose(f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論