東華大學C語言課設圖書借閱系統(tǒng)_第1頁
東華大學C語言課設圖書借閱系統(tǒng)_第2頁
東華大學C語言課設圖書借閱系統(tǒng)_第3頁
東華大學C語言課設圖書借閱系統(tǒng)_第4頁
東華大學C語言課設圖書借閱系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

圖書借閱系統(tǒng)目錄目錄………………………1第一章、C語言課程設計的目的………2第二章、總體設計(程序設計組成框圖、流程圖)…2(一)、系統(tǒng)功能分析…………21、設計圖書借閱系統(tǒng),使之能提供以下功能2、管理員操作系統(tǒng)3、查詢方式(二)、程序設計組成框圖、流程圖……………31、本程序的最大框架設計2、本程序的次級框架設計第三章、設計設計思路…………………6(一)、函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關系描述………………6第四章、調(diào)試與測試分析………………7(一)、使用軟件:………………71、Visualc++6.02、超級屏捕專業(yè)版(試用版)(二)、調(diào)試結(jié)果…………………71、系統(tǒng)主界面2、功能菜單3、管理員密碼修改界面4、圖書信息錄入菜單5、圖書查詢菜單、源程序代碼及調(diào)試結(jié)果詳細表單……………12(一)、程序源代碼……………12(二)、錯誤分析報告…………26第六章、心得體會………28第一章、C語言課程設計的目的1、課程設計是對學生進行實踐操作訓練的重要環(huán)節(jié),通過課程設計加深對本課程基本知識的理解和提高本課程基本知識的應用能力。2、掌握本課程工程設計的主要內(nèi)容、步驟和方法。3、提高操作能力,學會應用有關資料進行程序設計的方法。4、提高獨立分析問題、解決問題的能力,逐步增強設計訓練。5、學生要認真讀教材,閱讀有關規(guī)范、設計手冊等資料,獨立按時完成任務。6、掌握程序設計邏輯與設計報告單的格式書寫。在《C語言程序設計》這門課程將要結(jié)束之時,我們已經(jīng)學習了C語言的語句、程序結(jié)構(gòu)(順序、選擇、循環(huán))。對函數(shù)的使用、指針的概念、結(jié)構(gòu)體的應用有了詳細的學習。在此基礎上,結(jié)合老師的指導,完成此課程設計。第二章、總體設計(程序設計組成框圖、流程圖)(一)、系統(tǒng)功能分析1、設計圖書借閱系統(tǒng),使之能提供以下功能A、管理員操作系統(tǒng)B、圖書信息錄入功能——輸入C、圖書信息瀏覽功能——輸出D、圖書信息查詢功能——算法E、圖書借閱辦理功能——算法2、管理員操作系統(tǒng)A、修改密碼(密碼用文件保存)B、圖書錄入C、圖書查看D、圖書信息修改3、查詢方式A、按書名查詢B、按書號查詢C、顯示全部已借閱的圖書D、顯示全部未被借閱的圖書書籍參數(shù)具體包括圖書編號、圖書名稱、單價、作者、出版社、存在狀態(tài)六個方面的信息(二)、程序設計組成框圖、流程圖1、本程序的最大框架設計設計如下:2、本程序的次級框架設計(1)、用戶框架(2)、管理員系統(tǒng)(3)、檢索系統(tǒng)(4)、程序的部分流程圖修改密碼模塊流程:圖書查詢模塊流程:圖書信息修改流程:第三章、詳細設計思路一、函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關系描述1、#include<stdio.h>提供與程序編寫有關的函數(shù)信息,例如對輸入輸出函數(shù)的聲明和宏的定義、全局量的定義等,是系統(tǒng)提供的文件名。2、#include<stdlib.h>包含了庫函數(shù)之后就可以使用很多應用運算,類型轉(zhuǎn)換,程序環(huán)境處理等了,比如可以使用sin,cos這些函數(shù)。stdlib.h里面定義了五種類型、一些宏和通用工具函數(shù)。類型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函數(shù)如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。3、#

include

<string.h>

string是C標準庫中聲明的一個字符串類型,用來定義字符串變量。4、mymaninmenu()是主菜單函數(shù),通過它可以連接到adm()和user()函數(shù),adm()又連了四個函數(shù)input()、modify()、show_all_book()、alter_password(),user()連接了兩個函數(shù)search()和borrow()。5、結(jié)構(gòu)體比如structbook{ longnum; charname[20]; floatprice; charauthor[100]; charpublish[100]; intstatus;};就是一個用戶自己建立的結(jié)構(gòu)體類型。所謂結(jié)構(gòu)體就是,C語言允許用戶建立又不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu)。6、C語言的函數(shù)兼有其它語言中的函數(shù)和過程兩種功能,從這個角度看,又可把函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩種。(1)有返回值函數(shù)此類函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個執(zhí)行結(jié)果,稱為函數(shù)返回值。如數(shù)學函數(shù)即屬于此類函數(shù)。由用戶定義的這種要返回函數(shù)值的函數(shù),必須在函數(shù)定義和函數(shù)說明中明確返回值的類型。(2)無返回值函數(shù)此類函數(shù)用于完成某項特定的處理任務,執(zhí)行完成后不向調(diào)用者返回函數(shù)值。這類函數(shù)類似于其它語言的過程。由于函數(shù)無須返回值,用戶在定義此類函數(shù)時可指定它的返回為“空類型”,空類型的說明符為“void”。7.

C語言提供了極為豐富的庫函數(shù),這些庫函數(shù)又可從功能角度作以下分類。(1)字符類型分類函數(shù)(2)轉(zhuǎn)換函數(shù)(3)目錄路徑函數(shù)(4)診斷函數(shù)(5)圖形函數(shù)(6)輸入輸出函數(shù)(7)接口函數(shù)(8)字符串函數(shù)(9)內(nèi)存管理函數(shù)(11)日期和時間函數(shù)(12)進程控制函數(shù)(13)其它函數(shù)第四章、測試與調(diào)試一、使用軟件1、Visualc++6.02、超級屏捕專業(yè)版(試用版)二、調(diào)試結(jié)果管理員模式信息錄入:修改密碼:客戶模式:圖書信息查看:圖書借閱:圖書信息修改查找已被借閱的圖書查找未被借閱的圖書按書號查找按書名借閱取消借閱退出系統(tǒng)第五章、源程序代碼及調(diào)試結(jié)果詳細表單一、程序源代碼:#include<stdio.h>//標準輸入輸出函數(shù)庫#include<string.h>//字符串函數(shù)庫#include<stdlib.h>//標準函數(shù)庫#include<conio.h>//屏幕操作函數(shù)庫intN;//書本的個數(shù)charpass[7]="123456";//定義密碼位于全局變量structbook//圖書信息{ longnum;//圖書編號 charname[20];//圖書名稱 floatprice;//圖書單價 charauthor[100];//圖書作者 charpublish[100];//圖書出版社 intstatus;//圖書存在狀態(tài)}em[100];voidinput()//建立圖書信息庫{ charch; inti; system("cls");//清屏 printf("\n\n\t*************************************************************\n"); printf("\t******************歡迎來到圖書信息錄入界面!******************\n"); printf("\t*************************************************************\n"); printf("\t請輸入要錄入的數(shù)量:\n"); scanf("%d",&N); for(i=0;i<N;i++) { printf("\t請輸入第%d本圖書編號\n",i+1); scanf("%d",&em[i].num); printf("\t請輸入第%d本圖書名稱\n",i+1); scanf("%s",em[i].name); printf("\t請輸入第%d本圖書單價\n",i+1); scanf("%f",&em[i].price); printf("\t請輸入第%d本圖書作者\n",i+1); scanf("%s",em[i].author); printf("\t請輸入第%d本圖書出版社\n",i+1); scanf("%s",em[i].publish); printf("\t第%d本圖書是否已被借閱已被借閱請輸入1,未被借閱請輸入0\n",i+1); scanf("%d",&em[i].status); printf("\t--------------------------------------------------------------\n"); printf("\t您已成功錄入%d本書!\n",i+1); printf("\t==============================================================\n");ch=getch(); } printf("\n\t錄入完畢!謝謝!按任意鍵返回…\n"); getch();}intmymaninmenu()//主菜單{ intx; printf("\n\n\t**************************************************************\n"); printf("\t******************歡迎來到圖書借閱系統(tǒng)!***********************\n\n"); printf("\t------------------------請選擇模式----------------------------\n\n"); printf("\t----------------------1.管理員模式----------------------------\n\n"); printf("\t----------------------2.客戶模式------------------------------\n\n"); printf("\t----------------------3.退出系統(tǒng)------------------------------\n"); printf("\n\t*************************************************************\n"); printf("請輸入您的選擇:\n"); scanf("%d",&x); returnx;}intmimayanzheng()//管理員密碼驗證{ FILE*fp1;//將密碼保存于一個文件中 if((fp1=fopen("mima.txt","r+"))==NULL) fp1=fopen("mima.txt","w+"); else{fp1=fopen("mima.txt","r+"); fscanf(fp1,"%s",pass);} fclose(fp1); { charpassword0[7]; printf("\n"); printf("\n\n\t**************************************************************\n"); printf("\t--------------------------------------------------------------\n\n"); printf("\t歡迎使用管理員模式!\n");printf("\t==============================================================\n\n"); printf("\t請輸入管理員密碼:\n"); scanf("%s",password0); if(strcmp(pass,password0)==0)//比較輸入的密碼與全局變量中的密碼是否相同 return1;//返回值為1 else { intj=2;//密碼最多輸入三次 do { j--; printf("密碼錯誤!請重新輸入:\n"); scanf("%s",password0);if(strcmp(pass,password0)==0) { return1; break; } elsecontinue; }while(j>0); printf("對不起,您的輸入次數(shù)已到!\n"); return0;//密碼錯誤,返回值為0 } }}voidalter_password(){ FILE*fp1;//打開密碼文件 fp1=fopen("mima.txt","w+"); { charpass1[7],pass2[7],pass3[7]; printf("\n");printf("\t==============================================================\n\n"); printf("\t修改密碼\n\n");printf("\t==============================================================\n\n"); printf("\n"); printf("\t請輸入原始密碼:\n"); scanf("%s",pass1); while(1) { if(strcmp(pass1,pass)==0) { printf("\n\t請輸入新密碼:\n"); scanf("%s",pass2); printf("\n\t請再輸入一次:\n"); scanf("%s",pass3); if(strcmp(pass2,pass3)==0) { printf("\n\t修改密碼成功!請牢記密碼,按任意鍵返回…\n"); fprintf(fp1,"%s",pass2);//將新密碼保存到文件中 fclose(fp1);//關閉文件 getch();break; } else { printf("\t輸入兩次密碼不相同,修改失敗!按任意鍵返回…\n"); getch(); break; } } else { printf("\t密碼錯誤!您不能修改密碼!按任意鍵返回…\n"); getch(); break; } } }}intadm()//管理員模式{ intnum; printf("\n\n\t**************************************************************\n"); printf("\t--------------------------------------------------------------\n\n"); printf("\t歡迎使用管理員模式!\n");printf("\t==============================================================\n\n");printf("\t----------------------請選擇您需要的選項----------------------\n\n"); printf("\t--------------------1.圖書信息錄入----------------------------\n\n"); printf("\t--------------------2.圖書信息修改----------------------------\n\n"); printf("\t--------------------3.圖書信息查看----------------------------\n\n"); printf("\t--------------------4.修改密碼--------------------------------\n\n"); printf("\t--------------------5.返回上一步--------------------------------\n\n"); printf("\t**************************************************************\n\n"); printf("\t選擇選項:\n"); scanf("%d",&num); returnnum;}intuser()//客戶模式{ intnum; printf("\n\n\t**************************************************************\n"); printf("\t--------------------------------------------------------------\n\n"); printf("\t歡迎使用客戶模式!\n");printf("\t==============================================================\n\n");printf("\t----------------------請選擇您需要的選項----------------------\n\n"); printf("\t--------------------1.查看圖書信息----------------------------\n\n"); printf("\t--------------------2.借閱圖書--------------------------------\n\n"); printf("\t--------------------3.返回上一步--------------------------------\n\n"); printf("\t**************************************************************\n\n"); printf("\t選擇選項:\n"); scanf("%d",&num); returnnum;}voidshow_all_book()//查看所有圖書{ inti; if(N==0)//如果沒有錄入信息,N為0,顯示無信息庫 { printf("\n\n\t\t現(xiàn)無信息庫!\n"); } else { printf("\n\n\t\t所有圖書信息如下:\n"); for(i=0;i<N;i++) { printf("\n\n\t\t------------------------------------------------------\n");printf("\t\t圖書編號---圖書名稱---圖書單價---圖書作者---圖書出版社\n");printf("\t\t%-10d%-10s%-10.2f%-10s%-10s%-10s\n",em[i].num,em[i].name,em[i].price,em[i].author,em[i].publish);printf("\t\t圖書狀態(tài)\n"); if(em[i].status==0) printf("\t\t未被借閱\n"); else printf("\t\t已被借閱\n"); } } printf("\n\n\t\t請按任意鍵退出,謝謝!\n"); getch();}voidsearch1(){ if(N==0) { printf("\n\n\t\t現(xiàn)無信息庫!\n"); printf("\n\t\t按任意鍵返回…\n"); getch(); } else { inti,k=0; for(i=0;i<N;i++) { if(em[i].status==1) { printf("\n\n\t\t------------------------------------------------------\n");printf("\t\t圖書編號---圖書名稱---圖書單價---圖書作者---圖書出版社\n");printf("\t\t%-10d%-10s%-10.2f%-10s%-10s%-10s\n",em[i].num,em[i].name,em[i].price,em[i].author,em[i].publish); k++;//若沒有圖書被借出,k=0,顯示沒有任何書借出 } } if(k==0) printf("\n\n\t\t現(xiàn)在還沒有任何書借出!\n"); printf("\t按任意鍵返回…\n"); getch(); }}voidsearch2(){ if(N==0) { printf("\n\n\t\t現(xiàn)無信息庫!\n"); printf("\n\t\t按任意鍵返回…\n"); getch(); } else { inti,k=0; for(i=0;i<N;i++) { if(em[i].status==0) { printf("\n\n\t\t------------------------------------------------------\n");printf("\t\t圖書編號---圖書名稱---圖書單價---圖書作者---圖書出版社\n");printf("\t\t%-10d%-10s%-10.2f%-10s%-10s%-10s\n",em[i].num,em[i].name,em[i].price,em[i].author,em[i].publish); k++; } } if(k==0) printf("\n\n\t\t所有圖書都已被借出!\n"); printf("\t按任意鍵返回…\n"); getch(); }}voidsearch3(){ intbook_num,i,k=0; printf("\t----------------------------------------------------\n\n"); printf("\t--------------------按書號查看----------------------\n\n"); printf("\t----------------------------------------------------\n\n"); printf("\t請輸入要查詢的書號:\n"); scanf("%d",&book_num); for(i=0;i<N;i++) { if(em[i].num==book_num) { if(k==0) { printf("\n\n\t\t------------------------------------------------------\n");printf("\t\t圖書編號---圖書名稱---圖書單價---圖書作者---圖書出版社\n");printf("\t\t%-10d%-10s%-10.2f%-10s%-10s%-10s\n",em[i].num,em[i].name,em[i].price,em[i].author,em[i].publish); if(em[i].status==0) printf("\t\t未被借閱\n"); else printf("\t\t已被借閱\n"); k++; } } } if(k==0) printf("\t不存在此書!\n"); printf("\t按任意鍵返回…\n"); getch();}voidsearch4(){ inti,k=0; charbook_name[20]; printf("\t----------------------------------------------------\n\n"); printf("\t--------------------按書名查看----------------------\n\n"); printf("\t----------------------------------------------------\n\n"); printf("\t請輸入要查詢的書名:\n"); scanf("%s",book_name); for(i=0;i<N;i++) { if(strcmp(em[i].name,book_name)==0) { if(k==0) { printf("\n\n\t\t------------------------------------------------------\n");printf("\t\t圖書編號---圖書名稱---圖書單價---圖書作者---圖書出版社\n");printf("\t\t%-10d%-10s%-10.2f%-10s%-10s%-10s\n",em[i].num,em[i].name,em[i].price,em[i].author,em[i].publish); if(em[i].status==0) printf("\t\t未被借閱\n"); else printf("\t\t已被借閱\n"); k++; } } } if(k==0) printf("\t不存在此書!\n"); printf("\t按任意鍵返回…\n"); getch();}voidsearch(){ intnum; do { system("cls"); printf("\n\n\t*******************歡迎來到圖書查閱界面!**********************\n"); printf("\t--------------------------------------------------------------\n\n");printf("\t==============================================================\n\n");printf("\t----------------------請選擇您需要的選項----------------------\n\n"); printf("\t--------------------1.查閱已被借閱的圖書----------------------\n\n");printf("\t--------------------2.查閱未被借閱的圖書----------------------\n\n"); printf("\t--------------------3.按書號查詢------------------------------\n\n"); printf("\t--------------------4.按書名查詢------------------------------\n\n"); printf("\t--------------------5.返回上一步--------------------------------\n\n"); printf("\t**************************************************************\n\n"); printf("\t選擇選項:\n"); scanf("%d",&num); switch(num) { case1:system("cls");search1();break; case2:system("cls");search2();break; case3:system("cls");search3();break; case4:system("cls");search4();break; } }while(num!=5);}voidborrow1(){ intnum; inti,k=0; printf("\t\t----------------------------------------------------\n\n"); printf("\t\t--------------------按書號借閱----------------------\n\n"); printf("\t\t----------------------------------------------------\n\n"); printf("\t請輸入要借閱的書號:\n"); scanf("%d",&num); for(i=0;i<N;i++) if(em[i].num==num&&em[i].status!=1) { intj; printf("確定借閱?確定請按1,取消請按0\n"); scanf("%d",&j); if(j==1) { printf("借閱成功!請按時歸還!\n"); em[i].status=1;//圖書狀態(tài)改變 } elseif(j==0) printf("借閱已取消!\n"); k++;//被借出或沒有該圖書k=0 } if(k==0) printf("\t無此書或已被借出!\n"); printf("\t按任意鍵返回…\n"); getch(); system("cls");}voidborrow2(){ charbook_name[20]; inti,k=0; printf("\t----------------------------------------------------\n\n"); printf("\t--------------------按書名借閱----------------------\n\n"); printf("\t----------------------------------------------------\n\n"); printf("\t請輸入要借閱的書名:\n"); scanf("%s",book_name); for(i=0;i<N;i++) if(strcmp(em[i].name,book_name)==0&&em[i].status!=1) { intj; printf("確定借閱?確定請按1,取消請按0\n"); scanf("%d",&j); if(j==1) { printf("借閱成功!請按時歸還!\n"); em[i].status=1;//圖書狀態(tài)改變 } elseif(j==0) printf("借閱已取消!\n"); k++;//被借出或沒有該圖書k=0 } if(k==0) printf("\t無此書或已被借出!\n");printf("\t按任意鍵返回…\n"); getch(); system("cls");}voidborrow(){ intnum; do { printf("\n\n\t*******************歡迎來到圖書借閱界面!**********************\n"); printf("\t--------------------------------------------------------------\n\n");printf("\t==============================================================\n\n");printf("\t----------------------請選擇您需要的選項----------------------\n\n"); printf("\t--------------------1.按書號借閱------------------------------\n\n"); printf("\t--------------------2.按書名借閱------------------------------\n\n"); printf("\t--------------------3.返回上一步--------------------------------\n\n"); printf("\t**************************************************************\n\n"); printf("\t選擇選項:\n"); scanf("%d",&num); switch(num) { case1:system("cls");borrow1();getch();break; case2:system("cls");borrow2();getch();break; } }while(num!=3);}voidmodify()//修改圖書信息{ charname[20]; intflag=1; intchoice;printf("\t==============================================================\n\n"); printf("\t請輸入要修改的圖書名稱:\n"); scanf("%s",name); { inti; for(i=0;i<N;i++) { if(strcmp(em[i].name,name)==0) { printf("\t==============================================================\n\n"); printf("\n\t選擇要修改的項目:\n"); printf("\t\t--------1.修改圖書編號\n\n"); printf("\t\t--------2.修改圖書單價\n\n"); printf("\t\t--------3.修改圖書作者\n\n"); printf("\t\t--------4.修改圖書出版社\n\n"); printf("\t\t--------5.修改圖書存在狀態(tài)\n\n"); printf("\t==============================================================\n\n"); printf("\t選擇選項:\n"); scanf("%d",&choice); switch(choice) { case1: { printf("\n\t\t--------請輸入新的圖書編號:\n"); scanf("%d",&em[i].num); break; } case2: { printf("\n\t\t--------請輸入新的圖書單價:\n"); scanf("%f",&em[i].price); break; } case3: { printf("\n\t\t--------請輸入新的圖書作者:\n"); scanf("%s",em[i].author); break; } case4: { printf("\n\t\t--------請輸入新的圖書出版社:\n"); scanf("%s",em[i].publish); break; } case5: { printf("\n\t\t--------請輸入新的圖書存在狀態(tài):\n"); scanf("%d",&em[i].status); break; } } flag=0; printf("\t==============================================================\n\n"); printf("\n\t該項已成功修改!\n\t\n"); printf("\t==============================================================\n\n"); printf("\t-----------------------按任意鍵退出---------------------------\n\n"); } } if(flag) printf("\n\t\t對不起!暫無此書信息!\n"); getch(); system("cls"); }}voidmain(){ intx,x2,s; do { system("cls"); x=mymaninmenu(); switch(x) { case1: system("cls"); s=mimayanzheng();//密碼驗證 do { if(s==1)//密碼正確 {system("cls");//清屏 x2=adm();//管理員界面返回值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論