




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、CbrinIdm ILllljrrity n 1 n<rnMiCim Techno top工程實(shí)踐1項(xiàng)目報(bào)告設(shè)計(jì)題目C語言圖書管理系統(tǒng)學(xué)生姓名楊偉學(xué)號2013051243所在學(xué)院計(jì)算機(jī)學(xué)院年級班級13級6班指導(dǎo)教師李莉麗2014年 6 月成都信息工程學(xué)院 計(jì)算機(jī)學(xué)院目錄1 問題描述 02 開發(fā)環(huán)境 03 功能分析 04 項(xiàng)目設(shè)計(jì) 04.1 程序結(jié)構(gòu)設(shè)計(jì) 04.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 14.3 主要算法 25 程序運(yùn)行及調(diào)試 56 總結(jié) 117 主要源代碼 12參考文獻(xiàn) 571 問題描述圖書管理系統(tǒng)作為一個應(yīng)用軟件將為學(xué)校的老師和學(xué)生提供一個與學(xué)校圖 書館圖書以及個人信息進(jìn)行交互的平臺。 根據(jù)系
2、統(tǒng)界面的提示信息,操作者就可 以對圖書信息進(jìn)行查詢,借閱,還書,登陸個人賬戶則可以個人賬戶信息,管理 員通過登陸管理員賬戶可以整理和修改書籍和學(xué)生信息。2 開發(fā)環(huán)境ViSual C+ 6.03功能分析角色1:管理員序號功能描述備注1書籍借閱2書籍歸還賬戶狀態(tài)有提示3查詢書籍信息能按書名、作者、編號查找4修改賬戶密碼5修改學(xué)生數(shù)據(jù)僅管理員有此權(quán)限6修改圖書數(shù)據(jù)僅管理員有此權(quán)限7查詢賬戶狀態(tài)會提示還書角色2:學(xué)生序號功能描述備注1書籍借閱2書籍歸還賬戶狀態(tài)有提示3查詢書籍信息能按書名、作者、編號查找4修改賬戶密碼7查詢賬戶狀態(tài)會提示還書4項(xiàng)目設(shè)計(jì)4.1程序結(jié)構(gòu)設(shè)計(jì)進(jìn)入退出管理員普通賬戶管理權(quán)限修改
3、數(shù)據(jù)庫借還書查詢賬戶修改賬戶查詢書籍圖學(xué)書生信信息息* 一修全改部密顯碼4.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序中用到的特殊數(shù)據(jù)結(jié)構(gòu)(非標(biāo)準(zhǔn)C的基本數(shù)據(jù)類型)存儲學(xué)生數(shù)據(jù)的結(jié)構(gòu)體:typedef StruCt in formatio nChar bookNum10;Char bookNam50;Char bookAut20; float bookPri;int status;StrUCt in formatio n *n ext; i nfo;存儲圖書數(shù)據(jù)的結(jié)構(gòu)體: typedef StrUCt Stude ntChar StUNam20;Char nu mber10;Char PaSSKey20; int b
4、orrowSta;Char key;StrUCt StUde nt *n ext; stude ntDat;4.3主要算法(1)查詢書籍函數(shù):fin dBo開始ChaiSeChaiSe"-1_顯示所有按書名按作者按編號r01 r返回結(jié)束(2) 登錄函數(shù):CheCkACC開始有無數(shù)據(jù)Y賬號密碼N帳號、密碼輸入數(shù)據(jù)檢查賬戶l存入文件VW登錄結(jié)束(3) 更改書籍函數(shù):Cha ngeBo開始ChOiSeChOiSe1E2340更改編號更改狀態(tài)刪除書籍增添書籍返回結(jié)束(4) 刪除書籍函數(shù):delBook開始編號刪除Y繼續(xù)?N存入文件結(jié)束(5)添加書籍信息函數(shù):addBook5程序運(yùn)行及調(diào)試(1
5、)進(jìn)入系統(tǒng)開始輸入書信息排序插入鏈表Y繼續(xù)? AN存入文件結(jié)束(2) 創(chuàng)建數(shù)據(jù) ”UU§£VIVD邸kltjpT程實(shí)SJ目QK)箭代碼DEbugLibnryMErgE"糸統(tǒng)登錄 1 1 s組 1運(yùn)創(chuàng)用名號碼一 =Hs 苜開入入入入存 ½tsss學(xué)數(shù)亠是否繼續(xù)?“ Or 0)CUsersVIVDesktopT 程實(shí)!S (OK)3fDebugLibraryTl anag e,. - o g¾S¾w? “. ; mi磁丐 J心九據(jù)號;S;SU - sl B.®®® wt佳冃住冃成3 1 ¢-居 :
6、恚數(shù)0>glEr5VIVDwlctopI 程實(shí)蹉類目(OK)VH 代碼DFbugLibrryM 引帖 gw.-口汽湖號蹩札退出系統(tǒng)i 1=磯L列叫 4 3 3 1 g有亠l 還還還還 (- < < 次次次次 2it再耳 >:主冃主耳土冃 B 0.'入入入入 <2碩興S制 碼碼碼碼碼 SBi(3) 主菜單Frr:tkersVlVD?SktOPMSUSH(K)HG6Debg1 ibraryManag. - El一'T1與還書I 一4.&汪銷登錄.iV 乩逅回L級彙單注* -I-一- esj請選擇:(4) 實(shí)現(xiàn)的主要功能 “C:UsersVIVD
7、esktopI程實(shí)踐類目(OK)X游代碼DebugLibraryManag."I書籍信息I I編號;書名a B作者;價(jià)恪狀態(tài);I 1a aB A! 33.00!15a 2a bI B! 32.00! 2 !B I3B CB C! 44.00!2 I!4!dSD! 54.00!1 S!*!E! 22 湘! 2 !1寵畛找Jg單L "C:UsersVIVDesktopVl程實(shí)n n <ha目(OK)誦代碼 DebugLibmryM.;查詢書籍!/3-、s- 級 找上 杳同 找號返 查編0. H 息杳一作4. f 皐3. 所技 示2.S5 注銷登錄請選擇:更改書籍更改書籍編
8、號2¾ 4.S Z -返回丄級 5注銷登錄輸人選擇更改學(xué)生數(shù)據(jù):- 土-刪除學(xué)圭一- 4添加學(xué)生- 3越-返旦上級菜單3諳輸人=1C :M Kfl r VTV D PS kto 叭 丁琨室瞼 目(05Debgl i bra ryMana ge.6總結(jié)首先說說系統(tǒng)運(yùn)用的原理,主要是是圖書數(shù)據(jù)和學(xué)生數(shù)據(jù)的動態(tài)存儲與調(diào)用,通過函數(shù)之間的相互調(diào)用實(shí)現(xiàn)系統(tǒng)各級菜單的層次遞進(jìn)。操作者運(yùn)行系統(tǒng)時(shí)需要先檢查是否存在相應(yīng)的 數(shù)據(jù)文件,如果沒有則說明系統(tǒng)首次運(yùn)行,待初 始化數(shù)據(jù)后,需要建立針對圖書數(shù)據(jù)和學(xué)生數(shù)據(jù)的兩個不同的獨(dú)立鏈表,并且將鏈表數(shù)據(jù)存儲到文件中,隨后向各個函數(shù)傳入鏈表首地址(首地址固定),
9、根據(jù)各個函數(shù)功能的不同,如果需要更改學(xué)生或者圖書數(shù)據(jù),則直接通過對鏈表的刪除、增加和查詢實(shí)現(xiàn)對學(xué)生信息以及圖書信息的訪問、修改和調(diào)用操作。隨后系統(tǒng)將修改后的鏈表數(shù)據(jù)再次存入 固定文件中,操作者每次運(yùn)行系統(tǒng)時(shí),重 復(fù)以上對鏈表和文件的操作,以此實(shí)現(xiàn)外界和系統(tǒng)存儲數(shù)據(jù)的動態(tài)交互,提高系統(tǒng)運(yùn)行效率。另外圖書數(shù)據(jù)和學(xué)生數(shù)據(jù)都以結(jié)構(gòu)體數(shù)據(jù)塊的形式存儲,以便于操作。這個圖書管理系統(tǒng)幾乎里面所有的東西都是 C語言課程所講的,比如說鏈表 的創(chuàng)建、刪除、排序、添加,結(jié)構(gòu)體的正確使用,文件的創(chuàng)建、存儲、讀取,指 針的操作,函數(shù)之間參數(shù)的傳遞等等。在開始著手完成整個系統(tǒng)之前,我先寫出 了所有會用到的函數(shù)聲明,同時(shí)根
10、據(jù)系統(tǒng)的各級之間嵌套關(guān)系和調(diào)用關(guān)系確定了 所有必須用到的和需要傳遞的參數(shù),甚至預(yù)先還畫出了流程圖,我覺得這樣的話 思路會比較清晰,而不是寫一點(diǎn)代碼,再想想會用到的東西。雖然這樣,最后我 還是發(fā)現(xiàn)了代碼存在一些問題,因?yàn)閷懨總€函數(shù)時(shí)沒有單獨(dú)調(diào)試,到最后還是稍 顯麻煩,同時(shí)也是因?yàn)閷訉忧短椎脑颍?導(dǎo)致一個地方改動的話,很多地方都要 稍加改動,這些以后都可以稍加注意,可以提高自己的工作速率。對于自己著手的這個圖書管理系統(tǒng),我覺得功能實(shí)現(xiàn)的還是比較完善的,本 參照一個真正的系統(tǒng)的使用情況, 我對多方面都進(jìn)行了考慮, 也從用戶自身的角 度來對代碼進(jìn)行了相應(yīng)的優(yōu)化, 比如每個一些函數(shù)結(jié)束之后會自動彈出功
11、能菜單 來提示操作者接下來可能要執(zhí)行的各種操作, 還有就是如果用戶某一項(xiàng)操作沒有 成功之后, 會清楚地提示讓用戶做出正確的選擇, 而不是程序死在一個地方或是 毫無提示信息。 不過仍然有一些東西我覺得還有點(diǎn)欠缺, 函數(shù)之間的嵌套關(guān)系導(dǎo) 致了很多函數(shù)需要傳入更多的參數(shù)、 系統(tǒng)從鏈表讀取數(shù)據(jù)之后是以二進(jìn)制的形式 來存入文件中的, 這樣雖然在數(shù)據(jù)量大的情況下能夠提高程序的運(yùn)行效率, 但是 操作者卻不能像修改TXT文件那樣直接在文件中修改數(shù)據(jù),管理員要想更改數(shù)據(jù) 還必須在運(yùn)行系統(tǒng)之后調(diào)用相應(yīng)的系統(tǒng)功能函數(shù)來實(shí)現(xiàn)更改操作, 這樣的話在數(shù) 據(jù)量巨大的情況下略顯繁瑣。7 主要源代碼#include <s
12、tdio.h>#include <string.h>#include <stdlib.h>#include <malloc.h>#define STU sizeof(studentDat)#define BOK sizeof(info)#define stuNUM 10#define boNUM 10typedef struct informationchar bookNum10;char bookNam50;char bookAut20;float bookPri;int status;struct information *next;info;ty
13、pedef struct studentchar stuNam20;char number10;char passKey20; int borrowSta;char key;struct student *next;studentDat;/系統(tǒng)初級主菜單/登錄賬號界面 /載入學(xué)生數(shù)據(jù) /載入圖書數(shù)據(jù)void sysMenu ();void choMenu (); studentDat *loadStu();Info *loadBo();void menuFir (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit); /
14、主要功能界面void borRet (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit); /借還書界面void findBo (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit);/查詢書籍 studentDat *creatStu ();/創(chuàng)建學(xué)生數(shù)據(jù)Info *creatInfo();/創(chuàng)建圖書數(shù)據(jù)void stuDat(studentDat *Shead, char stuNumber);/學(xué)生狀態(tài)信息void checkAcc (ch
15、ar stuNumber, studentDat *Shead, info *Bhead, char manaLimit);/登錄賬戶檢查void bottowBo (char number, info *Bhead, studentDat *Shead, char manaLimit); /借書系統(tǒng)/全部顯示void returnBo (char number, info *Bhead, studentDat *Shead, char manaLimit); /還書系統(tǒng)void print (info *Bhead);void changeDat (info *Bhead, studentD
16、at *Shead, char manaLimit, char stuNumber); /更改系統(tǒng)數(shù)據(jù)voiddelStu(info*Bhead, studentDat *Shead, charmanaLimit, char stuNumber);/刪除學(xué)生voidaddStu(info*Bhead,studentDat*Shead,charmanaLimit, char stuNumber);/增添學(xué)生voiddelBook(info*Bhead,studentDat*Shead,charmanaLimit, char stuNumber);/刪除書籍voidaddBook (info*Bh
17、ead,studentDat*Shead,charmanaLimit, char stuNumber);/增添書籍 void changeBo (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber);/更改圖書數(shù)據(jù) void changeStu (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber);/更改學(xué)生數(shù)據(jù)void changeAcc (char stuNumber, studentDat *Shead, info *Bhead, char
18、 manaLimit);void checkNam (info *Bhead); void checkNum (info *Bhead); void checkAut (info *Bhead);Int system(const char *string);int main(void)sysMenu (); return 0;void sysMenu ()/更改賬戶密碼/按書名查找 /按編號查找 /按作者查找 /清屏操作/系統(tǒng)初級菜單int choise1;printf("n歡迎使用圖書管理系統(tǒng)n");printf(" n");printf("
19、-n");printf(" -1.進(jìn)入系統(tǒng) | 0.退出系統(tǒng)-n");printf("-n");printf(" n");printf("n請選擇 : ");scanf("%d", &choise1);while (choise1 != 0)if (choise1 = 1)system("cls");choMenu ( );elseprintf(" 輸入數(shù)據(jù)有誤 !請重輸 : "); scanf("%d", &
20、choise1);if (choise1 = 0)exit(0);/登錄賬號界面void choMenu ()int choise2;char manaLimit, number10;studentDat *Shead;info *Bhead;printf("n 系統(tǒng)登錄 n"); printf(" n");printf(" -n");printf(" - 1.管理員登錄-n");printf(" -2.普通賬號登錄-n");printf(" -0.退出系統(tǒng)-n");prin
21、tf(" -n");printf(" n");printf(" 請選擇 : ");scanf("%d", &choise2);while (choise2 != 0)if (choise2 = 1)manaLimit = '1'checkAcc (number, Shead, Bhead, manaLimit);elseif(choise2 = 2)manaLimit = '0'checkAcc (number, Shead, Bhead, manaLimit);elsepr
22、intf(" 輸入數(shù)據(jù)有誤 !請重輸 : "); scanf("%d", &choise2);exit(0);/載入學(xué)生數(shù)據(jù)studentDat *loadStu()int n;FILE *fp;studentDat *head, *p1, *p2;fp = fopen("Account.dat", "rb+");n = 0;p1 = p2 = (studentDat *)malloc(STU);fread(p1, STU, 1, fp);head = NULL;while (!feof(fp)if (n
23、= 0)head = p1;n = n + 1;elsep2-> next = p1;p2 = p1;p1 = (studentDat *)malloc(STU); fread(p1, STU, 1, fp);p2-> next = NULL;fclose (fp);return head;/載入圖書數(shù)據(jù)Info *loadBo()FILE *fp;info *head, *p1, *p2;int n;fp = fopen("bookInfo.dat", "rb+"); n = 0;p1 = p2 = (info *)malloc(BOK);
24、 fread(p1, BOK, 1, fp);head = NULL;while (!feof(fp)if (n = 0)head = p1;n = n + 1;elsep2-> next = p1;p2 = p1;p1 = (info *)malloc(BOK); fread(p1, BOK, 1, fp);p2-> next = NULL; fclose(fp);return head;void menuFir (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit) /主要功能界面int choise2;
25、printf("|功能 菜單 |n")printf("n");printf("-n");printf("-1.查詢書籍信息-n");printf("-2.借書與還書-n");printf("-3.個人賬戶狀態(tài)-n");printf("-4.修改賬戶信息-n");printf("-5.修改數(shù)據(jù)【權(quán)限】-n");printf("-0.返回上級菜單-n");printf("-6.注銷登錄-n");pri
26、ntf("-n");printf("n");printf("注:“1”- yes“0”- no n");printf("n請選擇 :n");scanf("%d", &choise2); if (choise2 = 6)exit(0);while (choise2 != 0)if (choise2 = 1)system("cls");findBo (Bhead, stuNumber, Shead, manaLimit);if (choise2 = 2)system(&q
27、uot;cls");borRet (Bhead, stuNumber, Shead, manaLimit);if (choise2 = 3)system("cls");stuDat(Shead, stuNumber);if (choise2 = 4)system("cls");changeAcc (stuNumber, Shead, Bhead, manaLimit);if (choise2 = 5)if (manaLimit = '0')system("cls");printf(" 很抱歉,你沒有
28、管理權(quán)限 ! 系統(tǒng)返回登錄界面 n");choMenu ( );elsesystem("cls");changeDat(Bhead, Shead, manaLimit, stuNumber);if (choise2 = 6)exit(0);printf("nnn");printf("|功能 菜單 |n");printf("n");printf("-n"printf("-1.查詢書籍信息-n");printf("-2.借書與還書-n");print
29、f("-3.個人賬戶狀態(tài)-n");printf("-4.修改賬戶信息-n");printf("-5.修改數(shù)據(jù)【權(quán)限】-n");printf("-0.返回上級菜單-n");printf("-6.注銷登錄-n");printf("-n");printf("n");printf("注:“1”- yes“ 0” -no n" );printf("n請選擇 : ");scanf("%d", &cho
30、ise2); system("cls");choMenu ();manaLimit)void borRet (info *Bhead, char stuNumber, studentDat *Shead, char/借還書界面int choise4;printf("n|借書與還書 | n");printf(" n");printf(" -n");printf(" -1.書籍借閱-n");printf(" -2.書籍歸還-n");printf(" -0.返回上級菜單-
31、n");printf(" -n");printf(" n");printf("n 請選擇 :n");scanf("%d", &choise4);while (choise4 != 0)if (choise4 = 1)system("cls");bottowBo (stuNumber, Bhead, Shead, manaLimit);if (choise4 = 2)system("cls");returnBo (stuNumber, Bhead, Shead
32、, manaLimit);system("cls");menuFir (stuNumber, Shead, Bhead, manaLimit);void findBo (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit)/查詢書籍int choise3;printf("n | 查詢書籍 | n"); printf(" n");printf(" -n");printf(" -1.顯示所有信息-n");printf(&quo
33、t; -2.按書名查找-n");printf(" -3.按作者查找-n");printf(" -4.按編號查找-n");printf(" -0.返回上級菜單-n");printf(" -5.注銷登錄-n");printf(" -n");printf(" n");printf("n 請選擇 :n");scanf("%d", &choise3);if (choise3 = 5)exit(0);while (choise3
34、!= 0)if (choise3 = 1)system("cls"); print(Bhead);if (choise3 = 2)system("cls"); checkNam (Bhead);if (choise3 = 3)system("cls");checkAut (Bhead);if (choise3 = 4)system("cls"); checkNum (Bhead);if (choise3 = 5)exit(0);printf("nnnn");printf("n"
35、;);printf("-n");printf("-1.顯示所有信息-n");printf("-2.按書名查找-n");printf("-3.按作者查找-n");printf("-4.按編號查找-n");printf("-0.返回上級菜單-n");printf(" -5.注銷登錄-n");printf(" -n");printf(" n");printf("n 請選擇 : ");scanf(&quo
36、t;%d", &choise3);system("cls");menuFir (stuNumber, Shead, Bhead, manaLimit);/創(chuàng)建學(xué)生數(shù)據(jù)studentDat *creatStu ()FILE *fp;int choise, n;studentDat *Shead, *p1, *p2;studentDat *p;printf(" 現(xiàn)在開始創(chuàng)建學(xué)生數(shù)據(jù) :(第一位默認(rèn)為管理者 )n"); n = 0;p1 = p2 = (studentDat *)malloc(STU); printf(" 請輸入使用
37、者數(shù)據(jù) :n");printf(" 請輸入姓名 : "); scanf("%s", p1-> stuNam);printf(" 請輸入學(xué)號 : "); scanf("%s", p1-> number);printf(" 請輸入密碼 : "); scanf("%s", p1-> passKey);p1-> borrowSta = 0;p1-> key = '1'Shead = NULL;while (1)if (n = 0
38、)Shead = p1;n+;elsep2-> next = p1;p2 = p1;printf(" 成功存儲一組數(shù)據(jù) !, 是否繼續(xù) ?(1 or 0)n"); scanf("%d", &choise);if (choise = 0)break;p1 = (studentDat *)malloc(STU);printf(" 請輸入姓名 : ");scanf("%s", p1-> stuNam);printf(" 請輸入學(xué)號 : ");scanf("%s"
39、, p1-> number);printf(" 請輸入密碼 : ");scanf("%s", p1-> passKey);p1-> borrowSta = 0;p1-> key = '0'p2-> next = NULL;fp = fopen("Account.dat", "wb"); p = Shead;while (p != NULL)fwrite(p, STU, 1, fp);p = p-> next;fclose(fp);return Shead;/創(chuàng)建圖
40、書數(shù)據(jù)Info *creatInfo()FILE *fp;int n, choise;info *Bhead, *p1, *p2, *p3; system("cls");printf(" 現(xiàn)在開始創(chuàng)建圖書數(shù)據(jù) :n"); n = 0;p1 = p2 = (info *)malloc(BOK); strcpy(p1-> bookNum, "NULL"); strcpy(p1-> bookNam, "NULL"); strcpy(p1-> bookAut, "NULL");p1-&
41、gt; bookPri = 0;p1-> status = 0;Bhead = NULL;while (1)if (n = 0)Bhead = p1;elsep2-> next = p1;p2 = p1;printf(" 成功存儲一組數(shù)據(jù) !, 是否繼續(xù) ?(1 or 0)n"); scanf("%d", &choise);if (choise = 0)break;n = n + 1;p1 = (info *)malloc(BOK);printf(" 請輸入圖書數(shù)據(jù) :n");printf(" 請輸入書籍
42、編號 : ");scanf("%s", p1-> bookNum);printf(" 請輸入書名 : ");scanf("%s", p1-> bookNam);printf(" 請輸入作者 : ");scanf("%s", p1-> bookAut);printf(" 請輸入書籍價(jià)格 : ");scanf("%f", &p1-> bookPri);printf(" 請輸入存儲狀態(tài) : ");sc
43、anf("%d", &p1-> status);p2-> next = NULL;fp = fopen("bookInfo.dat", "wb+");p3 = Bhead;while (p3 != NULL)fwrite(p3, BOK, 1, fp);p3 = p3-> next;fclose(fp);return Bhead;void stuDat(studentDat *Shead, char stuNumber)/ 學(xué)生狀態(tài)信息printf(" 你的個人賬戶信息如下 : n");p
44、rintf("n|賬戶 信息 | n");printf(" n");printf(" | 姓名 | 學(xué)號 | 密碼 | 借閱狀態(tài) | 權(quán)限 | n") for (Shead; Shead != NULL; Shead = Shead-> next)if (strcmp(Shead-> number, stuNumber) = 0)printf(" | %s | %s | % s | %d | %c |", Shead-> stuNam, Shead-> number, Shead->
45、passKey, Shead-> borrowSta, Shead-> key);if (Shead-> borrowSta != 0)printf("n 你有 %d 本書未還 , 請盡快歸還 !n", Shead-> borrowSta);void checkAcc (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit)/登錄賬戶檢查FILE *fp;char manaAcc10, manaKey20;int mark = 0;studentDat *checkStu;if
46、(fp = fopen("Account.dat", "rb") = NULL)fp = fopen("Account.dat", "wb+");printf(" 系統(tǒng)首次運(yùn)行 , 需要進(jìn)行初始化 , 請按提示信息完成操作 !n");Shead = creatStu ();Bhead = creatInfo ();system("cls");printf(" 系統(tǒng)初始化完成 ! 下面是系統(tǒng)主菜單 :nnnn");menuFir (manaAcc, Shea
47、d, Bhead, manaLimit);elsefp = fopen("Account.dat", "rb+");printf(" 請輸入你的賬號及密碼 :n");printf(" 賬號 : ");scanf("%s", manaAcc);printf("n");printf(" 密碼 (20 位以下 ): ");scanf("%s", manaKey);while(!feof(fp)checkStu = (studentDat *)
48、malloc(STU); fread(checkStu, STU, 1, fp);if (strcmp(checkStu-> number, manaAcc) = 0)if (strcmp(checkStu-> passKey, manaKey) = 0) && (checkStu-> key = manaLimit)system("cls");printf(" 登錄成功 !n");Shead = loadStu();Bhead = loadBo(); menuFir (manaAcc, Shead, Bhead, ma
49、naLimit);if (strcmp(checkStu-> passKey, manaKey) = 0)if (checkStu-> key != manaLimit)system("cls");printf(" 登錄權(quán)限信息有誤 , 系統(tǒng)自動返回上級菜單 n"); choMenu ( );elsewhile (strcmp(checkStu-> passKey, manaKey) != 0)mark+;if (mark > 4)system("cls");printf(" 身份驗(yàn)證出錯 !系統(tǒng)強(qiáng)制
50、退出 n");exit(0);mark);printf(" 密碼輸入有誤 !請?jiān)俅屋斎?(還有 %d 次機(jī)會 ): ", 5 - scanf("%s", manaKey);if (checkStu-> key != manaLimit)system("cls");printf(" 登錄權(quán)限信息有誤 ! 系統(tǒng)自動返回上級菜單 n");choMenu ( );if (checkStu-> key = '1')manaLimit = '1'elsemanaLimit
51、= '0'system("cls");printf(" 登錄成功 !n");Shead = loadStu();Bhead = loadBo();menuFir (manaAcc, Shead, Bhead, manaLimit); system("cls");printf(" 賬號不存在 ! 系統(tǒng)自動返回上級菜單 n"); choMenu ();voidmanaLimit)bottowBo (char number, info *Bhead, studentDat *Shead, char/借書系
52、統(tǒng)FILE *fp;char borrowNum10;info *boHead = Bhead;studentDat *stuHead = Shead;int mark = 0, choise;while (1)printf(" 請輸入想要借閱的書籍編號 : ");scanf("%s", borrowNum);for (boHead; boHead != NULL; boHead = boHead-> next)if (strcmp(boHead-> bookNum, borrowNum) = 0)if (boHead-> status
53、 - 1 < 0)printf(" 對不起 , 此書暫存量為零 !n");printf(" 是否想要返回上級菜單 ?(1 or 0): ");scanf("%d", &choise);if (choise = 1) borRet (Bhead, number, Shead, manaLimit);bottowBo (number, Bhead, Shead, manaLimit);elseboHead-> status = boHead-> status - 1; printf(" 借書成功 !n&
54、quot;);mark+;if(mark = 0)printf(" 對不起 , 數(shù)據(jù)庫中無法查到這本書的數(shù)據(jù) ! n");printf(" 是否想要返回上級菜單 ?(1 or 0): ");scanf("%d", &choise);if (choise = 1)borRet (Bhead, number, Shead, manaLimit);fp = fopen("Account.dat", "wb+");stuHead = Shead;for (stuHead; stuHead !=
55、NULL; stuHead = stuHead-> next)if (strcmp(stuHead-> number, number) = 0)stuHead-> borrowSta = stuHead-> borrowSta + 1;fwrite(stuHead, STU, 1, fp);fclose (fp);fp = fopen("bookInfo.dat", "wb+");boHead = Bhead;for (boHead; boHead != NULL;boHead = boHead-> next) fwrite
56、(boHead, BOK, 1, fp);fclose(fp);printf(" 還想要繼續(xù)借書操作嗎 ?(1 or 0)n"); scanf("%d", &choise);if (choise = 0)borRet (Bhead, number, Shead, manaLimit);void returnBo (char number, info *Bhead, studentDat *Shead, char manaLimit) /還書系統(tǒng)FILE *fp;char returnNum10; info *boHead = Bhead; studentDat *stuHead = Shead; int mark = 0, choise;while (1)for (stuHead; stuHead != NULL; stuHead = stuHead-> next)if (strcmp(stuHead-> number, number) = 0)if (stuHead-> borrowSta = 0)!n");printf(" 你沒有任何書籍需要?dú)w還 , 系統(tǒng)自動返回上級菜單 borRet (Bhead, number, Shead, mana
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 器材鑒定報(bào)告范文
- 2025年度洗浴中心員工職業(yè)發(fā)展支持雇傭合同
- 二零二五年度電商平臺圣誕節(jié)促銷合作協(xié)議
- 2025年度自建房項(xiàng)目房屋獨(dú)家代理銷售合同
- 二零二五年度房產(chǎn)銷售風(fēng)險(xiǎn)評估合同
- 沈陽正規(guī)聘用總經(jīng)理2025年度職位聘用與薪酬待遇合同
- 二零二五年度挖掘機(jī)械安全責(zé)任保險(xiǎn)合作協(xié)議
- 二零二五年度信息技術(shù)部門經(jīng)理層崗位聘任及培訓(xùn)合同
- 二零二五年度撫養(yǎng)權(quán)變更及子女撫養(yǎng)費(fèi)支付調(diào)整合同
- 二零二五年度化工機(jī)械買賣合作協(xié)議
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 數(shù)學(xué)-廣東省2025年深圳市高三年級第一次調(diào)研考試(深圳一模)試題和答案
- 學(xué)校裝飾裝修工程施工方案
- 2025屆東方電氣集團(tuán)校園招聘正式開啟筆試參考題庫附帶答案詳解
- DeepSeek科普學(xué)習(xí)解讀
- 第一單元第2課《生活之美》課件-七年級美術(shù)下冊(人教版)
- 第2課唐朝建立與“貞觀之治”課件-七年級歷史下冊(統(tǒng)編版)
- 2025年中國秸稈發(fā)電行業(yè)市場前瞻與投資預(yù)測分析報(bào)告
- 智研咨詢發(fā)布:2025年中國減速器行業(yè)市場現(xiàn)狀及投資前景分析報(bào)告
- 2025年七下道德與法治教材習(xí)題答案
- 部編2024版歷史七年級下冊第二單元第12課《宋元時(shí)期經(jīng)濟(jì)的繁榮》檢測卷
評論
0/150
提交評論