



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
夕簡(jiǎn)工第を課程設(shè)計(jì)說明書課程名稱: 高級(jí)語言程序設(shè)計(jì)設(shè)計(jì)題目: 圖書管理系統(tǒng) 院系:計(jì)算機(jī)科學(xué)與信息工程學(xué)院學(xué)生姓名: 學(xué)號(hào): 專業(yè)班級(jí): 信息技術(shù)方向指導(dǎo)教師: 髙原 2012年6月16H
課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目圖書管理系統(tǒng)學(xué)生姓名的た鬥え計(jì)算機(jī)科學(xué)與も、ル知必加所在院系信息工程學(xué)院專業(yè)、年級(jí)、班設(shè)計(jì)要求:完成一個(gè)圖書管理系統(tǒng),具體要求如下:1.圖書館信息管理>增加圖書。>瀏覽圖書。>查找圖書。(1)按書名查找(2)按作者查找(3)按出版社查找(4)按出版日期査找(5)按ISBN査找>刪除圖書。>保存圖書。2.用戶管理>新增用戶>查找用戶>更新用戶>刪除用戶>保存用戶學(xué)生應(yīng)完成的工作:1學(xué)生應(yīng)認(rèn)真學(xué)習(xí)參考程序,理解每個(gè)文件、每個(gè)函數(shù)以及各個(gè)變量的作用和意義。在此基礎(chǔ)上進(jìn)ー步改進(jìn)程序,最后正確地運(yùn)行程序。2對(duì)程序進(jìn)行測(cè)試,設(shè)計(jì)詳細(xì)的測(cè)試計(jì)劃,然后根據(jù)測(cè)試計(jì)劃設(shè)計(jì)測(cè)試用例,對(duì)程序進(jìn)行測(cè)試。測(cè)試時(shí)應(yīng)注意對(duì)各種邊緣情況進(jìn)行測(cè)試。3完成課程設(shè)計(jì)報(bào)告參考文獻(xiàn):1梁旭、黃明等C語言課程設(shè)計(jì)電子工業(yè)出版社20112譚浩強(qiáng)C程序設(shè)計(jì)(第四版)清華大學(xué)出版社2010工作計(jì)劃:.小組審題,查閱資料,進(jìn)行設(shè)計(jì)前的必要資料準(zhǔn)備(2天)。.把程序完整運(yùn)行出來(3天)。.增加改進(jìn)程序(2天)。.寫課程設(shè)計(jì)報(bào)告(2天)。5_提交課程設(shè)計(jì)報(bào)告及答辯(1天)任務(wù)下達(dá)日期:2012年6月5日任務(wù)完成日期:2012年6月19日學(xué)生(簽名):指導(dǎo)教師(簽名):學(xué)生(簽名):TOC\o"1-5"\h\zー、設(shè)計(jì)要求 5\o"CurrentDocument"二、系統(tǒng)的功能模塊 5\o"CurrentDocument"三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述 5\o"CurrentDocument"四、函數(shù)功能及參數(shù)說明、相互調(diào)用關(guān)系 6\o"CurrentDocument"五、各變量的定義和作用 7\o"CurrentDocument"六、程序處理流程 10\o"CurrentDocument"七、改進(jìn)或增加功能模塊說明 15\o"CurrentDocument"ハ、程序測(cè)試 16\o"CurrentDocument"九、程序設(shè)計(jì)過程中遇到的問題及解決過程 21\o"CurrentDocument"十、課程設(shè)計(jì)心得及體會(huì) 21H-ー、參考文獻(xiàn) 22\o"CurrentDocument"十二、源程序 22圖書管理系統(tǒng)ー、設(shè)計(jì)要求要求編程實(shí)現(xiàn)圖書管理系統(tǒng),分圖書管理和用戶管理,根據(jù)登陸身份不同提供不同的服務(wù)。二、系統(tǒng)的功能模塊根據(jù)設(shè)計(jì)要求,圖書管理系統(tǒng)功能模塊如圖2-1所示。查找圖書瀏覽圖書增加圖書按
ISBN
查找按出
版日
期查找出社找
按版查作查戈
按者扌按書名
查找//?書名最大長(zhǎng)度?//*出版社最大長(zhǎng)度?//?出版日期最大長(zhǎng)度?//?作者最大長(zhǎng)度?//?ISBN最大長(zhǎng)度?/圖2-1系統(tǒng)功能模塊圖三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述#defineMAX_BOOK_NAME20#defineMAXPUBLISHER20#defineMAX_DATE10#defineMAXAUTHOR20#defineMAXISBN20typedefstructbookinfbcharbook_name[MAX_BOOK_NAME];charauthor[MAX_AUTHOR];charpublisher[MAX_PUBLISHER];charpub_datc[MAX_DATE];charISBN[MAXJSBN];intpages;}book_info;/?書名?//?作者?//?出版社?//?出版日期?//?ISBN*//?頁(yè)數(shù)?/typedefstructbookbook_infobi;structbook*next;}book;/?圖書基本信息?//?指向下一本圖書的指針?/#defineMAX_USERNAME10#defineMAX_PASSWORD10typedefenum_USER_TYPE{ADMIN=0,USER}USER_TYPE;typedefstruct_user_info/?用戶名最大長(zhǎng)度?//?密碼最大長(zhǎng)度?/charusemame[MAX_USERNAME];charpassword[MAX_PASSWORD];USERTYPEusertype;}user_infb;typedefstruct_user/?用戶名?//*密碼?//?用戶類型,〇為管理員,1為普通用戶?/user_infoui;struct_user*next;}user;/?用戶基本信息user_infoui;struct_user*next;}user;/?指向下一個(gè)用戶的指針變量?/系統(tǒng)包括圖書信息管理和用戶信息管理兩大方面,程序啟動(dòng)后主函數(shù)首先調(diào)用init_book()函數(shù)對(duì)用戶模塊進(jìn)行初始化,設(shè)定最初的管理員名為admin密碼為123.并對(duì)文件進(jìn)行=初始化,再調(diào)用load_user()函數(shù)將用戶文件信息加載用戶鏈表中,接著調(diào)用init_book()對(duì)圖書模塊進(jìn)行初始化。主要完成對(duì)圖書的初始化設(shè)置,即圖書文件不存創(chuàng)建圖書文件,再調(diào)用logn()判斷用戶類型,分別用兩個(gè)函數(shù)執(zhí)行不同的操作。四、函數(shù)功能及參數(shù)說明、相互調(diào)用關(guān)系根據(jù)功能模塊劃分,圖書管理系統(tǒng)需建立的文件、各文件所包含的函數(shù)以及各函數(shù)的相
互調(diào)用關(guān)系如表4-1所示。表4-1函數(shù)相互調(diào)用關(guān)系源文件函數(shù)名或其他成分功 能management.cmain總控函數(shù)Showadminmenu管理員菜單選擇Show_such_book_menu査詢圖書菜單選擇Showusermenu用戶操作菜單adminexit管理員退出userexit普通用戶退出book.caddbook添加圖書view_book查看圖書suchbookbyname按書名查找such_book_by_author按作者查找such_book_by_pb1isher按出版日期查找such_book_by_pubdeat按書號(hào)查找deletebook刪除圖書savebook保存圖書initbook圖書模塊初始化load_book加載圖書信息getlestbook獲得鏈表最后節(jié)點(diǎn)findstr查找字符串input_book輸入圖書信息showbook顯示圖書信息user.cadd_user增加用戶searchuser查找用戶deleteuser刪除用戶update_user更新用戶save_user保存用戶managcment.huser.hbook.h常數(shù)提供常數(shù)結(jié)構(gòu)聲明學(xué)生成績(jī)結(jié)構(gòu)庫(kù)函數(shù)及函數(shù)原型聲明引用庫(kù)函數(shù)及函數(shù)五、各變量的定義和作用1.book.h#defineMAX_BOOK_NAME20#defineMAX_PUBLISHER20#defineMAX_DATE10#defineMAX_AUTHOR20#defineMAXJSBN20typedefstruct_book_info(/?書名最大長(zhǎng)度?//?出版社最大長(zhǎng)度?//?出版日期最大長(zhǎng)度?//?作者最大長(zhǎng)度?//*ISBN最大長(zhǎng)度?/charbook_name[MAX_BOOK_NAME];charauthor[MAX_AUTHOR];charpublisher[MAX_PUBLISHER];charpub_date[MAX_DATE];charISBN[MAX_ISBN];intpages;}book_info;typedefstruct_book(bookjnfobi;struct_book*next;}book;/?書名?//?作者?//?出版社?//?出版日期?//*ISBN*//?頁(yè)數(shù)?//?圖書基本信息?//?指向下一本圖書的指針?/voidload_books();/*從圖書文件中加載圖書信息?/voidadd_book();/?新增圖書ッvoidview_book();/?瀏覽所有圖書?/voiddelete_book();/?刪除圖書?/voidsave_books(); /?調(diào)用將圖書信息保存到文件函數(shù),給出提示信息?/voidclear_books();/?從內(nèi)存中清除圖書鏈表信息?/voidsearch_book_by_name();/*按書名查詢圖書?/voidsearch_book_by_author();/?按作者查詢圖書ッvoidsearch_book_by_publisher();/?按出版社查詢圖書ッvoidsearch_book_by_pubdate();/?按出版日期查詢圖書ッvoidsearch_book_by_isbn();/*按書ISBN查詢圖書ッvoidsave_books_file();/?將圖書信息保存到文件?/book*get_last_book();/?得到圖書鏈表的最后一個(gè)節(jié)點(diǎn)?/book*get_previous_book(book*p); /?取得圖書節(jié)點(diǎn)p的前ー個(gè)節(jié)點(diǎn)?/voidinput_book(book_info*info);/?輸入一本圖書信息?/voidshow_book(book_info*info);/?顯示圖書信息?/2.management.hvoidshow_admin_menu();/?顯示管理員操作的菜單ッvoidshow_search_book_menu();/?顯示管理員查詢圖書的菜單ッvoidadmin_exit(); /?管理員退出系統(tǒng)?/voiduser_exit(); /?管理員退出系統(tǒng)?/user.h#defineMAX_USERNAME10 /?用戶名最大長(zhǎng)度?/#defineMAX_PASSWORD10 /?密碼最大長(zhǎng)度?/typedefenum_USER_TYPE{ADMIN=0,USER}USER_TYPE;typedefstruct_user_info(charusername[MAX_USERNAME]; /?用戶名?/charpassword[MAX_PASSWORD]; /?密碼ッUSER_TYPEuser_type; /?用戶類型,0為管理員,1為普通用戶ッ}user_info;typedefstruct_user(userjnfoui; /*用戶基本信息?/struct_user*next; /?指向下一個(gè)用戶的指針變量ッ}user;voidinit_user();/?用戶模塊初始化*/USER_TYPElogin();voidadd_user();USER_TYPElogin();voidadd_user();voidsearch_user();voidsave_users();voidclear_users();voidsave_users_to_file();user*get_last_user();user*get_previous_user(user*p);user*find_user(char*name);voidshow_user(user_info*info);voidinput_user(user_info*info);voidupdate_user(user*p);voiddelet_user(user*p);/?用戶登錄,返回用戶類型?//?新增一個(gè)用戶?//?查找ー個(gè)ッ/?調(diào)用將用戶信息保存到文件函數(shù),給出提示信息?//?從內(nèi)存中清楚用戶鏈表信息ッ/?將用戶信息保存到文件?//?得到用戶鏈表的最后一個(gè)節(jié)點(diǎn)ッ/?得到用戶節(jié)點(diǎn)p的前ー個(gè)節(jié)點(diǎn)?//?從用戶鏈表中按用戶名查找一個(gè)用戶信息ッ/?顯示ー個(gè)用戶信息?//?輸入一個(gè)用戶信息?//?從鏈表中刪除ー個(gè)用戶信息?//?更新一個(gè)用戶信息ッ六、程序處理流程6-1查找書目及用戶流程圖6-2管理員用戶流程圖七、改進(jìn)或增加功能模塊說明.引用graphics.h使用繪圖函數(shù)增加huatu()函數(shù)繪制程序啟動(dòng)界面使程序啟動(dòng)動(dòng)感時(shí)尚增加各個(gè)界面美化字符畫(字符畫見源程序)voidhuatu()(initgraph(640,400);〃初始イ匕屏幕setcolor(WHITE);〃設(shè)置顏色setbkcolor(BLACK);setfont(50I0,"隸書ッ;//設(shè)置字體outtextxy(80,50,"安陽工學(xué)院);outtextxy(80,100,"圖書管理系統(tǒng)歡迎您!り;〃輸出setfont(25,〇,"隸書ッ;outtextxy(50,370,"正在進(jìn)入,請(qǐng)稍后……");setcolor(WHITE);inti,j;for(i=50,j=320;i<=550;i++)(line(i,j,i,j+20);Sleep(5);}setcolor(WHITE);setfont(25,〇,"隸書ッ;outtextxy(50,370," ");setfont(32,〇,"隸書)outtextxy(88,260,"就緒!請(qǐng)按任意鍵進(jìn)入 ");getch();closegraph();〃關(guān)閉繪圖).增加各個(gè)界面美化字符畫(字符畫見源程序).修改部分BUG使系統(tǒng)更加完美。ハ、程序測(cè)試.測(cè)試系統(tǒng)能否正確顯示菜單選項(xiàng)執(zhí)行程序后,得到的界面如圖8-1所示,該圖顯示啟動(dòng)頁(yè)面。安陽工學(xué)院圖書管理系統(tǒng)歡迎您!就緒!請(qǐng)按任意鍵進(jìn)入...圖8-1啟動(dòng)界面
2登陸界面啟動(dòng)界面結(jié)束后按任意鍵進(jìn)入系統(tǒng)首先要登陸系統(tǒng),然后根據(jù)提示進(jìn)行操作田田田田曹萬雪
田田田田曹萬雪
穩(wěn)走千里路1M-M>請(qǐng)強(qiáng)入用戶名:admin>請(qǐng)輸入密碼:123圖8-2登陸界面。圖書管理系統(tǒng)圖書管理用戶管理圖書管理用戶管理圖圖圖圖圖除存翦圖圖圖圖圖除存翦查豊戶用用用聶存暫保678<9>退出系統(tǒng),請(qǐng)選擇要進(jìn)行的操作:.圖8-3管理員操作主菜単.新增圖書信息輸入1可進(jìn)行新增圖書操作用戶可根據(jù)要求進(jìn)行相關(guān)操作輸入結(jié)束后可按y或者n選擇下?操作圖書管理系統(tǒng)用戶管理圖書管理戶戶戶用用用蜀存暫保<9>退出系統(tǒng)ョユユmm
圖圖圖圖圖
wk除存
翦查霍露
實(shí)式22為度2墨為大度大最長(zhǎng)0y<?結(jié)器2089握幫>:39數(shù)嚴(yán)>:101222為度2曩為度最大度營(yíng)大最長(zhǎng)進(jìn):名W^BN數(shù)圖:名^^BN數(shù)圖要出IsUSiIsi擇圖入入入入入入添圖入入入入入入添請(qǐng)新請(qǐng)請(qǐng)請(qǐng)請(qǐng)請(qǐng)黨新請(qǐng)請(qǐng)請(qǐng)請(qǐng)請(qǐng)噎曇取出會(huì)取:36別曇義曾取:30ぉ>nr〇y<?圖8-4輸出學(xué)生信息.瀏覽圖書信息選擇2可以瀏覽圖書<9>退出系統(tǒng)圖書管理 用戶管理圖書管理系統(tǒng)>請(qǐng)選擇要進(jìn)行西餐作:2<9>退出系統(tǒng)圖書管理 用戶管理圖書管理系統(tǒng)>請(qǐng)選擇要進(jìn)行西餐作:2戶戶戶用用用賞存保678除存翦查那>>>>>12345<<<<<圖圖圖圖圖;書名; 作者!! c語言程序設(shè)計(jì); 譚浩強(qiáng);: 數(shù)據(jù)結(jié)構(gòu): 嚴(yán)蔚敏;I c語看課程設(shè)計(jì); 梁旭;〉再次瀏覽圖書嗎?3orn>:圖8-5瀏覽圖書5,o查找圖書界面圖書管理系統(tǒng)>>查找圖書找找查找查M>索查期SB查查社日<1出書歩険按悽陵<6>返回王菜單請(qǐng)選擇要進(jìn)行的操作:圖8-6查找圖書主菜單圖書管理系統(tǒng)>>查找圖書找找找查嘉查期SB查查社日<1名號(hào)<6>返回王菜單達(dá)體罪行的操作:1>請(qǐng)播入?茗く最大長(zhǎng)度為20〉:程序:c諳言程序設(shè)計(jì)?社:清華大學(xué)出版社頁(yè)數(shù):368>ggiy!本圖書…>維線查找嗎?<yorn>圖8-7顯示査詢結(jié)果。5.刪除圖書選擇4輸入將要?jiǎng)h除的圖書的書輸入y號(hào)即可將該圖書刪除圖書管理系統(tǒng)用戶管理圖書管理用戶管理圖書管理戶戶戶
用用用
聶存
暫保
678
<<<<9>戶戶戶
用用用
聶存
暫保
678
<<<<9>退出系統(tǒng)圖圖圖圖圖^0^除存翦查豊
>>>>>
12345
<<<<<ー〉>請(qǐng)選擇要進(jìn)行的操作:4>冊(cè)験圖書ーー請(qǐng)輸入ISBNく最大長(zhǎng)度為20):9787121092268:c語言課程設(shè)計(jì):梁旭社:黃明等日期:2011-8ISBN:9787121092268頁(yè)數(shù):329>確認(rèn)刪除嗎?<9 n圖8-8刪除圖書操作.保存圖書<9>退出系統(tǒng)圖書管理系統(tǒng)>請(qǐng)選擇要進(jìn)任的操作:5>保存圖書成如籬意鍵返回…<9>退出系統(tǒng)圖書管理系統(tǒng)>請(qǐng)選擇要進(jìn)任的操作:5>保存圖書成如籬意鍵返回…戶戶戶用用用雪存疊保12345:15^除存查圖圖圖圖圖圖書管理用戶管理圖8-9保存圖書操作.新增用戶在管理員狀態(tài)可以增加用戶輸入用戶名、密碼,保存用戶即可如果該用戶名已經(jīng)被注冊(cè)將提示已經(jīng)存在詢問是否并重新輸入圖書管理系統(tǒng)圖書管理 用戶管理圖書管理系統(tǒng)圖書管理 用戶管理圖圖圖圖圖一?^除存芻查?戶戶戶用用用會(huì)存暫保<9>退出系統(tǒng)請(qǐng)選擇要迦]的操作:6?新増用戶值息...請(qǐng)窺入用盧茬錄大長(zhǎng)度為I?!?郝智盛請(qǐng)輸入密碼憑大長(zhǎng)席為!0:>12345請(qǐng)輸人用戶類型是首理良]是普通用戶)。,用機(jī)郝智蜃已存在建新瑜入嗎?<yorn>:圖8-10新增用戶操作.查找用戶678<<<戶戶戶用用用鬟存暫保除存賣查豊>>>>>12345くくくくく圖圖圖圖圖7長(zhǎng)一、、“一,,ヽ?く,.,ノヽ—678<<<戶戶戶用用用鬟存暫保除存賣查豊>>>>>12345くくくくく圖圖圖圖圖7長(zhǎng)一、、“一,,ヽ?く,.,ノヽ—->?く(乍??/<**施M:、/<_>nimヽ,;行息名進(jìn)夸要戶用擇用人選里請(qǐng)圖8-11查找用戶操作.普通用戶界面普通用戶只提供瀏覽圖書、査找圖書的權(quán)利圖書管理系統(tǒng)車書圖圖キ圖器圖圖找查查書翁查期BMォ查查社日Is匡號(hào)揖出書日夜安生還女>>>>>>123456くくくくくく.\/?./<><>\*/<>.:\\ー〉,//<<7>退出系統(tǒng)>請(qǐng)選擇要進(jìn)行的操作:圖8-12普通用戶操作九、程序設(shè)計(jì)過程中遇到的問題及解決過程.對(duì)程序整體理解,但在設(shè)計(jì)過程中,細(xì)節(jié)問題處理不當(dāng),造成程序不能運(yùn)行或者運(yùn)行錯(cuò)誤,并且,對(duì)某一部分的程序不能獨(dú)立設(shè)計(jì)出來。對(duì)此問題的解決是參考了《c程序設(shè)計(jì)課程設(shè)計(jì)》上的參考程序,完成了設(shè)計(jì),但是不是ー味的照搬,對(duì)參考程序進(jìn)行了修改和添加。增加了按成績(jī)區(qū)間查詢的查詢方式,增加了按總成績(jī)排序的排序方式。.在組建工程的時(shí)候,將各個(gè)程序分給小組成員,兩個(gè)人設(shè)計(jì)ー個(gè)模塊,但是出現(xiàn)了連接錯(cuò)誤,各個(gè)模塊之間也出現(xiàn)了輸入上的錯(cuò)誤,致使程序不能運(yùn)行。對(duì)于各個(gè)模塊逐一檢查,添加修改,最終使各個(gè)模塊錯(cuò)誤消除,同時(shí)連接錯(cuò)誤也自行解決。.在剛開始程序設(shè)計(jì)的時(shí)候,不了解什么是組建工程,什么是模塊,對(duì)于程序設(shè)計(jì)本身也有不理解的地方,不知道該從何下手。解決方法:先看《c程序設(shè)計(jì)課程設(shè)計(jì)》,了解怎樣組建工程,理解每個(gè)模塊的作用,弄清楚參考程序上的邏輯順序以及如何設(shè)計(jì)等問題,然后再進(jìn)行課程設(shè)計(jì)。十、課程設(shè)計(jì)心得及體會(huì)對(duì)于第一次做課程設(shè)計(jì)的我來說,這次的課程設(shè)計(jì)是一次既讓人痛苦又讓人開心的事情。開始的時(shí)候根本不清楚課程設(shè)計(jì)要設(shè)計(jì)什么,不知道到底怎樣設(shè)計(jì),因?yàn)槠綍r(shí)所寫的C程序都是一些簡(jiǎn)單而且基本的C程序,根本不是解決實(shí)際情況,符合客戶要求的工程程序,所以覺得無從下手,覺得很困難,甚至沒有…個(gè)思路,而且對(duì)于組建工程,構(gòu)建模塊等工作無法理解。這些情況都使自己陷入了苦惱的深淵。后來,聽從輔導(dǎo)老師的意見,從《C程序設(shè)計(jì)課程設(shè)計(jì)》開始,?點(diǎn)點(diǎn)了解怎樣組建エ程,怎么樣構(gòu)建模塊,對(duì)于每個(gè)模塊應(yīng)該怎么樣進(jìn)行設(shè)計(jì),邏輯思維是什么,然后開始構(gòu)建。在設(shè)計(jì)過程中一直都有錯(cuò)誤存在,困難重重。遇到困難就開始用大量的時(shí)間進(jìn)行修改以及整理,理出思路。最終將工程調(diào)試成功,添加模塊成功,而這些成功的瞬間是最快樂最開心的時(shí)刻。而且通過這次課程設(shè)計(jì)我學(xué)會(huì)了好多東西,覺得自己設(shè)計(jì)的東西更加接近實(shí)際的程序要求。知道團(tuán)隊(duì)合作的重要性,知道怎樣使團(tuán)隊(duì)ー起合作構(gòu)建程序??偟膩碚f,我獲益匪淺。十ー、參考文獻(xiàn)[1]梁旭等.《C程序設(shè)計(jì)課程設(shè)計(jì)(第2版)》電子工業(yè)出版社,2011[2]劉振安等.C程序設(shè)計(jì)課程設(shè)計(jì),機(jī)械工業(yè)出版社,2007[3]譚浩強(qiáng).C程序設(shè)計(jì)(第四版),清華大學(xué)出版社,2011十二、源程序//說明:系統(tǒng)必須帶有繪圖頭文件才能編譯下面附上頭文件graphics.h〃引入畫圖頭文件graphics.h#pragmaonce#ifhdefWINVER#defineWINVER0x0400 //SpecifiesthattheminimumrequiredplatformisWindows95/NT4.#endif#ifhdef_WIN32_WINNT#defineWIN32WINNT0x0500 //SpecifiesthattheminimumrequiredplatformisWindows95/NT4.#endif#ifhdef_WIN32_WINDOWS#defineWIN32WINDOWS0x0410//SpecifiesthattheminimumrequiredplatformisWindows98.#endif#ifdefined(UNICODE)&&(_MSC_VER>1200)#pragmacomment(lib,"graphicswu.lib")#elif!defined(UNICODE)&&{_MSC_VER>1200)#pragmacomment(lib,,,graphicsw.libH)#elifdefined(UNICODE)#pragmacomment(lib,ngraphicsu.lib")#elif!defined(UNICODE)#pragmacomment(lib,ngraphics.lib")#endif#include<windows.h>#include<tchar.h>/Z為了兼容BorlandC++3.!而做的無意義定義#defineDETECT0#defineVGA0#defineVGAHI0/Z繪圖環(huán)境初始化參數(shù)#defineSHOWCONSOLE1 //進(jìn)入圖形模式時(shí),保留控制臺(tái)的顯示/Z顏色#defineBLACK0#defineBLUE0xA80000#defineGREENOxOOA8OO#defineCYAN0xA8A800#defineREDOxOOOOA8#defineMAGENTA0xA800A8#defineBROWN0x0054A8#defineLIGHTGRAY0xA8A8A8#defineDARKGRAY0x545454#defineLIGHTBLUE0xFC5454#defineLIGHTGREEN0x54FC54#defineLIGHTCYAN0xFCFC54#defineLIGHTRED0x5454FC#defineLIGHTMAGENTA0xFC54FC#defineYELLOW0x54FCFC#defineWHITEOxFCFCFC//定義顏色轉(zhuǎn)換宏#defineBGR(color)((((color)&OxFF)?16)|((color)&OxFFOOFFOO)|(((color)&OxFFOOOO)?16))
/Z填充模式#defineNULL_FILL1//不填充#defineSOLIDFILL2/Z用指定顏色完全填充#defineBDIAGONAL_FILL31111I填充(普通一組)#defineCROSS_FILL4//+++填充#defineDIAGCROSS_FILL5//xxX填充#defineDOT_FILL6H...填充#defineFDIAGONAL_FILL7//\\\填充#defineHORIZONTAL_FILL8//—填充#defineVERTICAL_FILL9//|||填充#defineBDIAGONAL2FILL1011111填充(密集一組)#defineCROSS2_FILL11//+++填充#defineDIAGCROSS2FILL12//XXX填充#defineDOT2_FILL13H...填充#defineFDIAG0NAL2_FILL14//\\\填充#defineHORIZONTAL2_FILL15//—填充#defineVERTICAL2_FILL16//|||填充#defineBDIAGONAL3_FILL1711111填充(粗線ー組)#defineCROSS3_FILL18//+++填充#defineDIAGCROSS3_FILL19//XXX填充#defineDOT3_FILL20II...填充#defineFDIAG0NAL3FILL21//\\\填充
#defineH0RIZ0NTAL3_FILL22//defineVERTICAL3_FILL23#defineH0RIZ0NTAL3_FILL22//defineVERTICAL3_FILL23#defineINTERLEAVE_FILL#definePATTERN_FILL25/Z繪圖模式相關(guān)函數(shù)//—填充//|||填充24//xxx填充(十分密)/Z用指定圖案填充HWNDinitgraph(intWidth,intHeight,intFlag=NULL);/Z初始化圖形環(huán)境HWNDinitgraph(int*gdriver,int*gmode,char*path);/Z兼容BorlandC++3.1的重載,默認(rèn)640x480voidclosegraph(); 〃關(guān)閉圖形環(huán)境/Z繪圖環(huán)境設(shè)置voidcleardevice(); /Z清屏voidsetcliprgn(HRGNhrgn); 〃設(shè)置當(dāng)前繪圖設(shè)備的裁剪區(qū)voidclearcliprgn(); /Z清除裁剪區(qū)的屏幕內(nèi)容voidgetlinestyle(int*plinestyle,WORD*pupattem=NULL,int*pthickness=NULL);/Z獲取當(dāng)前線形voidsetlinestyle(intlinestyle,WORDupattem=NULL,intthickness=1); /Z設(shè)置當(dāng)前線形voidgetfillstyle(COLORREF*pcolor,int*ppattem=NULL,char*pupattem=NULL); /Z獲取填充類型voidsetfillstyle(COLORREFcolor,intpattern=SOLIDFILL,constchar*pupattern=NULL);/Z設(shè)置填充類型voidsetorigin(intx,inty); //設(shè)置坐標(biāo)原點(diǎn)voidgetaspectratio(float*pxasp,float*pyasp);/Z獲取當(dāng)前縮放因子voidsetaspectratio(floatxasp,floatyasp); /Z設(shè)置當(dāng)前縮放因子〃設(shè)置繪圖位操作模式voidsetwritemode(intmode);
〃設(shè)置繪圖位操作模式voidgraphdefaults();COLORREFgetcolor();voidgraphdefaults();COLORREFgetcolor();voidsetcolor(COLORREFcolor);COLORREFgetbkcolor();voidsetbkcolor(COLORREFcolor);voidsetbkmode(intiBkMode);/Z重置所有繪圖設(shè)置為默認(rèn)值/Z獲取當(dāng)前繪圖前景色/Z設(shè)置當(dāng)前繪圖前景色/Z獲取當(dāng)前繪圖背景色/Z設(shè)置當(dāng)前繪圖背景色〃設(shè)置背景混合模式/Z顏色模型轉(zhuǎn)換函數(shù)COLORREFRGBtoGRAY(COLORREFrgb);voidRGBtoHSL(COLORREFrgb,float*H,float*S,float*L);voidRGBtoHSV(COLORREFrgb,float*H,float*S,float*V);COLORREFHSLtoRGB(floatH,floatS,floatL);COLORREFHSVtoRGB(floatH,floatS,floatV);/Z繪圖函數(shù)COLORREFgetpixel(intx,inty);voidputpixel(intx,inty,COLORREFcolor);voidmoveto(intx,inty);/Z繪圖函數(shù)COLORREFgetpixel(intx,inty);voidputpixel(intx,inty,COLORREFcolor);voidmoveto(intx,inty);voidmoverel(intdx,intdy);voidline(intxl,intyl,intx2,inty2);voidlinerel(intdx,intdy);voidlineto(intx,inty);voidrectangle(intleft,inttop,intright,intbottom);/Z獲取點(diǎn)的顏色/Z畫點(diǎn)/Z移動(dòng)當(dāng)前點(diǎn)(絕對(duì)坐標(biāo))/Z移動(dòng)當(dāng)前點(diǎn)(相對(duì)坐標(biāo))/Z畫線//畫線(至相對(duì)坐標(biāo))/Z畫線(至絕對(duì)坐標(biāo))/Z畫矩形/Z/Z畫圓/Z畫橢圓voidcirclc(intx,inty,intradius);voidellipse(intleft,inttop,intright,intbottom);voidarc(intleft,inttop,intright,intbottom,doublestangle,doubleendangle);/Z畫橢圓弧(起始角度和終止角度為弧度制)
/Z畫填充圓/Z畫填充圓voidfillellipse(intleft,inttop,intright,intbottom); //畫填充橢圓voidpie(intleft,inttop,intright,intbottom,doublestangle,doubleendangle);//畫填充橢圓扇形(起始角度和終止角度為弧度制)voidbar(intleft,inttop,intright,intbottom); /Z畫無邊框填充矩形//畫有邊框三維填充矩形//畫有邊框三維填充矩形voiddrawpoly(intnumpoints,constint*polypoints);/Z畫多邊形voidfillpoly(intnumpoints,constint*polypoints);//畫填充的多邊形voidfloodfill(intx,inty,intborder);//voidfloodfill(intx,inty,intborder);//文字相關(guān)函數(shù)voidouttext(LPCTSTRstr);voidouttext(TCHARc);voidouttextxy(intx,inty,LPCTSTRstr);voidouttextxy(intx,inty,TCHARc);inttextwidth(LPCTSTRstr);inttextwidth(TCHARc);inttextheight(LPCTSTRstr);inttextheight(TCHARc);//填充區(qū)域//在當(dāng)前位置輸出字符串//在當(dāng)前位置輸出字符//在指定位置輸出字符串//在指定位置輸出字符/Z獲取字符串占用的像素寬/Z獲取字符占用的像素寬/Z獲取字符串占用的像素高/Z獲取字符占用的像素高intdrawtext(LPCTSTRstr,RECT*pRect,UINTuFormat);//在指定區(qū)域內(nèi)以指定格式輸出字符串intdrawtext(TCHARc,RECT*pRect,UINTuFormat);//在指定區(qū)域內(nèi)以指定格式輸出字符voidsetfbnt(intnHeight,intnWidth,LPCTSTRIpszFace);voidsetfbnt(intnHeight,intnWidth,LPCTSTRIpszFace,intnEscapement,intnOrientation,intnWeight,boolbltalic,boolbUnderline,boolbStrikeOut);
voidsetfbnt(intnHeight,intnWidth,LPCTSTRIpszFace,intnEscapement,intnOrientation,intnWeight,boolbltalic,boolbUnderline,boolbStrikeOut,BYTEfbCharSet,BYTEfbOutPrecision,BYTEfbClipPrccision,BYTEfbQuality,BYTEfbPitchAndFamily);voidsetfbnt(constLOGFONT*font);〃設(shè)置當(dāng)前字體樣式voidgetfont(LOGFONT*font);/Z獲取當(dāng)前字體樣式classIMAGE(private:HBITMAPm_hBmp;HDCm_hMemDC;intmWidth,mHeight;intm_MemCurX; /Z當(dāng)前點(diǎn)X坐標(biāo)intmMemCurY; /Z當(dāng)前點(diǎn)Y坐標(biāo)floatm_data[6];COLORREFmColor;/Z當(dāng)前顏色COLORREFm_BkColor; /Z當(dāng)前背景顏色DWORD*m_pBuffer; /y繪圖區(qū)的內(nèi)存struct{int linestyle;WORDupattem;/Z自定義線形int thickness;}mLineType; /Z線形struct{intpattern;charupattem[8];//自定義填充類型intcolor;}m_FillType; /Z填充類型virtualvoidSetDefault(); /Z設(shè)置為默認(rèn)狀態(tài)public:IMAGE(intwidth=0,intheight=0); 〃創(chuàng)建圖像IMAGE(constIMAGE&img);/Z拷貝構(gòu)造函數(shù)IMAGE(constIMAGE&img);/Z拷貝構(gòu)造函數(shù)IMAGE&operator=(constIMAGE&img); /Z賦值運(yùn)算符重載函數(shù)virtual~IMAGE();virtualvoidResize(intwidth,intheight);/Z調(diào)整尺寸};voidloadimage(IMAGE*pDst!mg,LPCTSTRplmgFile,intnWidth=0,intnHeight=0,boolbResize=false);/Z從圖片文件獲取圖像(bmp/jpg/gif/emf/wmf)voidloadimagc(IMAGE*pDst!mg,LPCTSTRpRcsType,LPCTSTRpRcsNamc,intnWidth=0,intnHeight=0,boolbResize=false);/Z從資源文件獲取圖像(bmp/jpg/gif/emf/wmf)voidsaveimage(LPCTSTRplmgFile,IMAGE*plmg=NULL);/Z保存圖像/Z從當(dāng)前繪/Z從當(dāng)前繪圖設(shè)備獲取圖像voidputimage(intdstX,intdstY,constIMAGE*pSrcImg,DWORDdwRop=SRCCOPY);/Z繪制圖像到屏幕voidputimage(intdstX,intdstY,intdstWidth,intdstHeight,constIMAGE*pSrc!mg,intsrcX,intsrcY,DWORDdwRop=SRCCOPY);/Z繪制圖像到屏幕(指定寬高)voidResize(IMAGE*plmg,intwidth,intheight);/Z調(diào)整繪圖設(shè)備的大小/Z獲取繪圖設(shè)備的顯存指針/Z獲取當(dāng)前繪圖設(shè)備/Z獲取繪圖設(shè)備的顯存指針/Z獲取當(dāng)前繪圖設(shè)備〃設(shè)置當(dāng)前繪圖設(shè)備/Z獲取繪圖設(shè)備句柄(HDC)IMAGE*GetWorkingImage();voidSetWorkingImage(IMAGE*plmg=NULL);HDCGetImageHDC(IMAGE*plmg=NULL);/Z其它函數(shù)intgetwidth(); /Z獲取繪圖區(qū)寬度intgetheight();/Z獲取繪圖區(qū)高度intgetx(); /Z獲取當(dāng)前x坐標(biāo)intgety();/Z獲取當(dāng)前intgety();/Z獲取當(dāng)前y坐標(biāo)voidBeginBatchDraw();//開始批量繪制voidFlushBatchDraw();〃執(zhí)行未完成的繪制任務(wù)voidFlushBatchDraw(intleft,inttop,intright,intbottom);〃執(zhí)行指定區(qū)域內(nèi)未完成的繪制任務(wù)voidEndBatchDraw();II結(jié)束批量繪制,并執(zhí)行未完成的繪制任務(wù)voidEndBatchDraw(intleft,inttop,intright,intbottom);/Z結(jié)束批量繪制,并執(zhí)行指定區(qū)域內(nèi)未完成的繪制任務(wù)HWNDGetHWnd(); /Z獲取繪圖窗口句柄(HWND)TCHAR*GetEasyXVer(); /Z獲取EasyX當(dāng)前版本/Z獲取用戶輸入boolInputBox(LPTSTRpString,intnMaxCount,LPCTSTRpPrompt=NULL,LPCTSTRpTitle=NULL,LPCTSTRpDefault=NULL,intwidth=0,intheight=0,boolbOnlyOK=true);structMOUSEMSGUINTuMsg;/Z當(dāng)前鼠標(biāo)消息boolmkCtrl;//Ctr!鍵是否按下boolmkShift;//Shift鍵是否按下boolmkLButton;/Z鼠標(biāo)左鍵是否按下boolmkMButton;/Z鼠標(biāo)中鍵是否按下boolmkRButton;/Z鼠標(biāo)右鍵是否按下shortx;/Z當(dāng)前鼠標(biāo)X坐標(biāo)shorty;/Z當(dāng)前鼠標(biāo)y坐標(biāo)shortwheel;/Z鼠標(biāo)滾輪滾動(dòng)值(120的倍數(shù))};boolMouseHit();/Z檢查是否存在鼠標(biāo)消息MOUSEMSGGetMouseMsgO;/Z獲取ー個(gè)鼠標(biāo)消息。如果沒有,就等待voidFlushMouseMsgBuffer(); 〃清空鼠標(biāo)消息緩沖區(qū)〃以下是源程序文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#defineMAXBOOKNAME20#include"conio.h"include"graphics.hッノ引入畫圖頭文件#defineMAXPUBLISHER20#defineMAXDATE10#defineMAXAUTHOR20#defineMAXJSBN20typedefstructbookinfb{charbook_name[MAXBOOKNAME];charauthor[MAX_AUTHOR];charpublisher[MAX_PUBLISHER];charpub_date[MAX_DATE];charISBN[MAXJSBN];intpages;}book_infb;typedefstructbook{bookinfbbi;structbook*next;}book;voidinit_book();voidload_books();voidadd_book();voidview_book();voiddelete_book();voidsave_books();voidclear_books();voidsearch_book_by_name();voidsearch_book_by_author();voidsearch_book_by_publisher();voidsearch_book_by_pubdate();voidsearch_book_by_isbn();intfindstr(char*source,char*str);voidsave_books_to_file();book*get_last_book();book*get_previous_book(book*p);voidinput_book(book_infb*info);voidshow_book(book_info*info);#defineMAX_USERNAME10#defineMAX_PASSWORD10typedefenumUSERTYPE(ADMIN=0,USER}USER_TYPE;typedefstructuserinfo{charusemamc[MAX_USERNAME];charpassword[MAX_PASSWORD];USERTYPEusertype;Juserinfo;typedefstructuser(userinfoui;structuser*next;}user;voidinit_user();voidload_users();USERTYPElogin();voidadd_user();voidsearch_user();voidsave_users();voidclear_users();voidsave_users_to_file();user*get_last_user();user*get_previous_user(user*p);user*find_user(char*name);voidshow_user(userinfo*info);voidinput_user(user_info*info);voiddelete_user(user*p);voidupdate_user(user*p);voidshowadmin_menu();voidshow_search_book_menu();voidshow_user_menu();voidadmin_exit();voiduser_exit();#defineBOOKFILE"books.dafbook*first_book=NULL;//book結(jié)構(gòu)體鏈表的頭結(jié)點(diǎn)voidaddbook。//增添圖書信息(chartry_again=,Y,;book*p=NULL;book*new_book=NULL;while(try_again==,Y|||try_again=-y,){new_book=(book*)malloc(sizeof(book));〃倉(cāng)リ建一個(gè)newbookmemset(new_book,0,sizeoRbook));〃初始化newbooknew_book->next=NULL;primf(">新增圖書…ヽバ);input_book(&(new_book?>bi));〃調(diào)用函數(shù)inputbook。為newbook賦值p=get」ast_book();〃調(diào)用get_last_book(),取得鏈表中最后一個(gè)節(jié)點(diǎn),賦值給pif(p==NULL)〃如果鏈表為空(first_book=new_book;〃將new_book賦值給頭結(jié)點(diǎn)}else{p?>next=new_book;〃將p連接到最后ー個(gè)節(jié)點(diǎn)之后}printf(”>繼續(xù)添加圖書嗎?(yorn)H);getchar();try_again=getchar();)}voidview_book()〃瀏覽圖書信息(book*p=NULL;charinput=tY*;intcount=0;while(input=,Y,||input=,y,)(count=0;p=first_book;prin氓”+ +\n“);printf(M!書名 I 作者printf(M+ F\nH);while(p!=NULL)(printfi(,,|%20s|%21s|\n',,p->bi.book_name,p->bi.author);printff+ +\n");count++;if{count=5)(count=0;printR”>顯示下ー頁(yè)嗎?(yorn):H);getchar();input=getchar();if(input!=,Y,&&input!=y)(break;))p=p->next;}printf(つ再次瀏覽圖書嗎?(yorn):M);getchar();input=getchar();))voidsearch_book_by_name()〃按書名查找圖書信息{book*p=NULL;chars[MAX_BOOK_NAME]={0};charinput=,Y,;intcount=0;inti=0;print心>査找圖書??An”);while(input=,Y,||input=y)count=0;p=first_book;//p指向第一個(gè)節(jié)點(diǎn)memset(s,〇,MAX_BOOK_NAME);〃清空sprintff》請(qǐng)輸入書名(最大長(zhǎng)度為%d):n,MAX_BOOK_NAME);scanf(M%sH,s);while(p!=NULL)//p不為空時(shí),調(diào)用findstr函數(shù)查找書名中是否包含輸入的字符串sJ這里實(shí)現(xiàn)了模糊查找(if{findstr(p->bi.book_name,s)!=-1){show_bo0k(&(p.>bi));//顯示查至り的圖書信息count-H-;)p=p->next;}ifi(count=0){printf(ッ沒有找到圖書%s.繼續(xù)查找嗎?(yorn):M,s);getchar();input=getchar();continue;}printf(">共找到%d本圖書count);printff》繼續(xù)查找嗎?(yorn)n);getchar();input=getchar();)}voidsearch_book_by_author()//按作者查找圖書信息(book*p=NULL;chars[MAX_AUTHOR]={O};〃作者信息charinput=Y;intcount=0;printf(">査找圖書..An”);while(input=,Y,||input=y)(count=0;p=first_book;//p指向第一個(gè)節(jié)點(diǎn)memset(s,0,MAX_AUTHOR);printff>請(qǐng)輸入作者(最大長(zhǎng)度為%d):",MAX一AUTHOR);scanff'%s”,s);while(p!=NULL)//p不為空時(shí),調(diào)用findstr函數(shù)查找數(shù)名中是否包含字符串s(ifi(findstr(p->bi.author,s)!=-l){show_book(&(p->bi));count-H-;)p=p->next;ifi(count=0){printf(ワ沒有找到作者為%s的圖書,繼續(xù)查找嗎?(yorn):",s);getchar();input=getchar();continue;)printff〉共找到%d本圖書...\n",count);printf(">繼續(xù)查找嗎?(yorn):");getchar();input=getchar();}voidsearch_book_by_publishei?〇//按出版社查找圖書信息{book*p=NULL;chars[MAX_PUBLISHER]={0};charinput=Y;intcount=0;printf(">査找圖書...\n”);while(input=rY,||input=y)(count=0;p=first_book;memset(s,〇,MAXAUTHOR);printf(">請(qǐng)輸入出版社(最大長(zhǎng)度為%d):M,MAX_PUBLISHER);scanfifn%sM,s);while(p!=NULL)(if{findstr(p->bi.publisher,s)!=-l){show_book(&(p->bi));count-H-;p=p->next;)ifi(count==0){printf("ガ殳有找到出版社為%s的圖書.繼續(xù)查找嗎?(yorn):",s);getchar();input=getchar();continue;}prin氓"〉共找到%d本圖書..An",count);prin-"〉繼續(xù)査找嗎?(yorn):");getchar();input=getchar();})voidsearch_book_by_pubdate()〃按出版日期查找圖書信息(book*p=NULL;chars[MAX_DATE]={0};〃出版日期charinput=fY';intcount=0;inti=0;while(input=*Y,||input=,y')(count=0;p=first_book;memset(s,O,MAX_DATE);primf(">請(qǐng)輸入出版日期(最大長(zhǎng)度為%d):",MAX_DATE);scanff'%s”,s);while(p!=NULL){if(findstr(p->bi.pub_date,s)!=-1)(show_book(&(p->bi));count++;)p=p->next;if(count==0)(printf(">沒有找到出版日期為%s的圖書.繼續(xù)查找嗎?(yorn):",s);getchar();input=getchar();continue;}primf(">共找至リ%d本圖書count);printR”>繼續(xù)查找嗎?(yorn):M);getchar();input=getchar();)voidsearch_book_by_isbn()〃按ISBN查找圖書信息(charinput=*Y,;charisbn[MAX_ISBN]={0};book*p=NULL;book*result=NULL;while(input=rY,||input=y)printff〉請(qǐng)輸入ISBN(最大長(zhǎng)度為%d):",MAX_ISBN);scanf("%s”,isbn);p=first_book;//p指向第一個(gè)節(jié)點(diǎn)result=NULL;while(p!=NULL)〃在圖書鏈表中查找輸入的ISBN是否存在{if(strcmp(p->bi.ISBN,isbn)=O)(result=p;break;}p=p->next;}if(result!=NULL)printf(”査找到圖書..An”);show_book(&(result->bi));//ifflshowbook顯示查找到的圖書信息}else{printf(?沒有找到ISBN為%s的圖書An”,isbn);)printfC繼續(xù)査找嗎?(yorn)”);getchar();input=getchar();}}voiddelete_book()〃刪除圖書(charinput=*Y*;charisbn[MAX_ISBN]={0};book*p=NULL;book*result=NULL;while(input-Y,||input=y)printf("刪除圖書…\n");printff請(qǐng)輸入ISBN(最大長(zhǎng)度為%d):",MAX_ISBN);scanf(,t%s",isbn);p=first_book;result=NULL;while(p!=NULL)|if(strcmp(p->bi.ISBN,isbn)=O)(result=p;break;)p=p->next;|if(resu!t!=NULL)(show_book(<fe(result->bi));printf(ワ確認(rèn)刪除嗎?(yorn):");getchar();input=getchar();ifi(input=,Y,||input=y){if(get_previous_book(p)=NULL)first_book=p->next;elsegct_previous_book(p)->next=p->next;free(p);printf("正在刪除……り;Sleep(lOOO);printf(H\n刪除成功\n\n");}}else{printf(ワ沒有找到ISBN為%s的圖書An”,isbn);)primf(">繼續(xù)刪除其他圖書嗎?(yorn):H);getchar();input=getchar();}voidsave_books()〃保存圖書(save_books_to_file();prin氓?保存圖書成功!按任意鍵返回…”);getchar();getchar();)voidsave_books_to_file()(FILE*fp=fopen(BOOK_FlLE,"wbn);book*p=first_book;while(p!=NULL){fwrite(&(p->bi),sizeof(book_info),1,fp);fseek(fp,O,SEEK_END);p=p->next;}fclose(fp);)voidinit_book()(FILE*fp=NULL;fp=fopen(BOOK_FILE,MrH);if(m=NULL)〃如果文件不存在{m=fbpen(BOOK_FILEJw”);//創(chuàng)建文件if師==NULL){printff不能創(chuàng)建文件,按任意鍵退出.,);getchar();exit(O);}}fclose(fp);)voidload_books()〃加載圖書信息book*b=NULL;book*last=NULL;FILE*fp=NULL;intcount=0;b=(book*)malloc(sizeof(book));memset(b,〇,size0f(book));//初始化bb->next=NULL;巾=fopen(BOOK_FILEJrb)〃打開圖書文件while(什ead(&(b->bi),sizeof(book_info),1,fp)=1)〃從文件中逐個(gè)讀出圖書信息(iRfirst_book==NULL)〃如果讀取的是第一個(gè)節(jié)點(diǎn),即第一本書(first_book=b;〃將頭節(jié)點(diǎn)指向b}else{last=get」ast_book();〃否則找到鏈表中最后一個(gè)圖書節(jié)點(diǎn),即最后一本書last?>next=b;〃將b連接到最后一個(gè)節(jié)點(diǎn)之后}count-H-;fseek(fp,count*sizcof(book_infb),SEEK_SET);〃將文件指針指到下一本書b=(book*)malloc(sizeof(book));memset(b,0,sizeofl(book));b->next=NULL;}free(b);b=NULL;fclose(fp);}voidclear_books()〃清除圖書鏈表(book*p=NULL;while(flrst_book!=NULL)〃鏈表不為空if(first_book->next!=NULL)〃如果鏈表中有兩本以上的書p=first_book;first_book=first_book->next;//$k結(jié)點(diǎn)向后移一位frce(p);//釋放原來的頭結(jié)點(diǎn)p=NULL;}else{free(first_book);first_book=NULL;intfindstr(char*source,char*str)〃查找字符串(intpos="l;inti=0;intj=O;intm=strlen(source);intn=strlen(str);if(m==01|n=0||m<n)//str長(zhǎng)度為〇,或者str長(zhǎng)度比source長(zhǎng)的情況(retum(pos);}if(m==n)//str和source長(zhǎng)度相等的情況{if(strcmp(source,str)=O){retum(O);}else{retum(-l);}}foF(i=0;iv(m-n);i++){pos=i;fbr(j=O;j<n;j++)(ifi(source[i-^]!=str[j])(pos=-1;break;}}if(pos!=-l){break;})retum(pos);)book*get」ast_book0〃取得鏈表中最后一個(gè)節(jié)點(diǎn)(book*p=first_book;if(p==NULL)(retum(p);)while((p!=NULL)&&(p->next!=NULL))(p=p->next;}retum(p);}voidinput_book(book_info*info)〃輸入圖書信息(prin氓”〉請(qǐng)輸入書名(最大長(zhǎng)度為%d):'\MAX_BOOK_NAME);scanf("%s”,infb?>book_name);printfC>請(qǐng)輸入作者(最大長(zhǎng)度為%d):",MAX_AUTHOR);scanf(M%sn,infb->author);printff〉請(qǐng)輸入出版社(最大長(zhǎng)度為%d):",MAX-PUBLISHER);scanf("%s",infb->publisher);printf(">請(qǐng)輸入出版日期(最大長(zhǎng)度為%d):",MAX_DATE);scanf(M%sM,infb->pub_date);printf(">請(qǐng)輸入ISBN(最大長(zhǎng)度為%d):",MAXISBN);scanf("%s",infb->ISBN);printR"》請(qǐng)輸入頁(yè)數(shù):");scanf("%d”,&(infb->pages));}voidshow_book(book_info*info)//顯示圖書信息(printグ \nw);printR”書名:%s\n”,infb?>book_name);printff作者:%s\n”,infb?>author);printff出版社:%s\rT,infb?>publisher);printfi("出版日 :%s\n",info->pub_date);printf(" \nM);printf("ISBN:%s\n",infd->ISBN);printf("頁(yè)數(shù):%d\n",infb?>pages);printf("\n");}book*get_previous_book(book*p)〃取得圖書節(jié)點(diǎn)p的前ー個(gè)節(jié)點(diǎn)(book*previous=first_book;while(previous!=NULL)|ifi(previous->next=p){break;}previous=previous->next;)retum(previous);)#defineUSERFILEHuser.datHuser*first_user=NULL;〃結(jié)構(gòu)體鏈表的頭結(jié)點(diǎn)voidadd_user()〃新增用戶(chartryagain-Y^user*p=NULL;user*new_user=(user*)manoc(sizeofi(user));〃創(chuàng)建一個(gè)節(jié)點(diǎn)newuserwhile(try_again==,Y|||try_again=-y,){memset(new_user,0,sizeofl[user));〃初始化new_usernew_user->next=NULL;printf(">新增用戶信息..An”);input_user(&(new_user?>ui));〃調(diào)用函數(shù)inpueuserQ為newuser賦值p=finduser(new_user->ui.username);ifi(p=NULL){p=gct_last_user();//調(diào)用函數(shù),取鏈表中最后一個(gè)節(jié)點(diǎn),賦值給pp->next=new_user;break;}printR”>用戶^^抵]已存在.重新輸入嗎?(yorn):",new_user->ui.usemame);getchar();try_again=getchar();ifi(try_again!=rY,&&try_again!=y)(free(newuser);}}}voidsearchuser。//査找用戶(charinput_char='Y';charusemame[MAX_USERNAME]={0};user*p=NULL;while(input_char=='Y*||input_char==,y,)printf(ワ查找用戶信息..An");primf(">請(qǐng)輸入用戶名(最大長(zhǎng)度為%d):",MAXUSERNAME);scanfi("%s",username);p=find_user(username);〃調(diào)用函數(shù),查找用戶是否存在,若存在,賦值給Pif(p=NULL)〃該用戶不存在{printf(ッ未找到用戶:%s的信息.繼續(xù)查找嗎?(yorn):",username);getchar();input_char=getchar();continue;)show_user(&(p?>ui));〃顯示該用戶信息printf(”>查找成功!按d鍵刪除該用戶,按u鍵更新該用戶信息,按其他鍵返回!”);getchar();input_char=getchar();i式inputchar==,d|||input_char=*D,)deleteuser(p);}elseifi(input_char='u,||input_char=='U'){updateuser(p);)printf(M>searchanother?(yorn):M);getchar();input_char=getchar();)}voiddclete_user(user*p)〃刪除用戶信息(charinput_char=N;user*previous=NULL;printf(?確定要?jiǎng)h除用戶[%$]嗎?(yorn):",p->ui.usemame);getchar();input_char=getchar();if(input_char=,Y,|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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度冷鏈物流專業(yè)司機(jī)招聘及服務(wù)質(zhì)量保障協(xié)議
- 花椒種植與加工2025年度分紅合作合同
- 2025年度砂石運(yùn)輸工程專項(xiàng)合同
- 2025年度電子元器件抵押融資合同
- 二零二五年度美甲店形象設(shè)計(jì)與品牌推廣合同
- 二零二五年度汽車報(bào)廢注銷合同范本
- 2025年美容院轉(zhuǎn)讓合同附帶美容院加盟連鎖區(qū)域保護(hù)與市場(chǎng)拓展
- 二零二五年度高空作業(yè)吊裝搬運(yùn)應(yīng)急預(yù)案合同
- 二零二五年度商務(wù)賓館資產(chǎn)租賃與經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同
- 農(nóng)業(yè)機(jī)械供應(yīng)合同
- 婦女節(jié)女性健康知識(shí)講座關(guān)愛女性健康主題宣教課件
- 2024年浙江省煙草專賣局(公司)管理類崗位招聘筆試真題
- 廣東省惠州市惠東縣2022年小升初語文試卷(學(xué)生版+解析)
- 《木蘭詩(shī)》歷年中考古詩(shī)欣賞試題匯編(截至2024年)
- 智能建筑監(jiān)理例會(huì)會(huì)議記錄
- 2024年安徽省高職院校單招《職測(cè)》參考試題庫(kù)(含答案)
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 《冠心病》課件(完整版)
- DZ/T 0462.3-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第3部分:鐵、錳、鉻、釩、鈦(正式版)
- 上海市四年級(jí)數(shù)學(xué)綠色指標(biāo)測(cè)試卷
- 注塑機(jī)液壓系統(tǒng)
評(píng)論
0/150
提交評(píng)論