C語言圖書管理系統(tǒng)程序設(shè)計報告_第1頁
C語言圖書管理系統(tǒng)程序設(shè)計報告_第2頁
C語言圖書管理系統(tǒng)程序設(shè)計報告_第3頁
C語言圖書管理系統(tǒng)程序設(shè)計報告_第4頁
C語言圖書管理系統(tǒng)程序設(shè)計報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄33444556.1718222323 26一、設(shè)計任務(wù)書1.目的1)復(fù)習(xí)、鞏固C語言的基礎(chǔ)知識,進一步加深對C語言的理解和掌握。2)課程設(shè)計為學(xué)生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉學(xué)生的分析解決實際問題的能力。提高學(xué)生適應(yīng)實際,實踐編程的能力。3)培養(yǎng)學(xué)生在項目開發(fā)中團隊合作精神、創(chuàng)新意識及能力。2.要求:1)對系統(tǒng)進行功能模塊分析、控制模塊分析正確,符合課題要求,實現(xiàn)相應(yīng)功能;可以加以其他功能或修飾,使程序更加完善、合理。2)系統(tǒng)設(shè)計要實用,編程簡練,可用,功能全面。3)說明書、流程圖要清楚。4)記錄設(shè)計情況

2、(備查,也為編寫設(shè)計說明書作好準(zhǔn)備)。5)要求采用模塊化程序設(shè)計方法,及鋸齒型書寫格式,要求上機調(diào)試通過和按設(shè)計報告格式。6)設(shè)計上交內(nèi)容:設(shè)計報告一份(按格式書寫);源程序一份,能編譯成可執(zhí)行文件并能正常運行。二、本組課題及本人任務(wù)課題:圖書信息管理系統(tǒng)設(shè)計圖書信息包括:登錄號、書名、作者名、分類號、出版單位、出版時間、價格等。試設(shè)計一圖書信息管理系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作。2.圖書信息錄入功能(圖書信息用文件保存)輸入。3.圖書信息瀏覽功能輸出。4.查詢和排序功能:(至少一種查詢方式)算法。a. 按書名查。b.按作者名查詢。本人任務(wù):負責(zé)設(shè)計和編寫圖書信息管理系統(tǒng)的修

3、改圖書信息部分。三、程序功能簡介 本系統(tǒng)是以visual C+ 6.0 環(huán)境下用C語言開發(fā)的一個圖書管理系統(tǒng)。本系統(tǒng)具有圖書信息錄入、瀏覽、刪除、修改、查找(包括按書名、作者查找)功能。其中圖書信息包括登錄號、書名、作者名、分類號、出版單位、出版時間、價格,并且對信息以文件形式儲存。另外本系統(tǒng)具備實用性的同時代碼邏輯謹慎清晰易懂,且界面美觀。四、主體內(nèi)容1設(shè)計分析本系統(tǒng)共分為一個主頁面模塊(主函數(shù)部分),五個功能模塊(功能函數(shù))分別為圖書信息錄入、圖書信息瀏覽、圖書信息查詢、圖書信息刪除、圖書信息修改。設(shè)計時應(yīng)該先寫好主函數(shù)、定義好全局變量和功能函數(shù),再對五個功能函數(shù)進行設(shè)計。在每個功能函數(shù)和

4、主函數(shù)應(yīng)中加入控制條件使用戶可以隨時退出系統(tǒng),并在用戶輸入指令錯誤的時候給予提醒和退出選項。小組中的五個人分別承擔(dān)一個功能模塊進行設(shè)計。并在每個人設(shè)計完成后通過主函數(shù)進行鏈接調(diào)試正確后方為完成。2程序結(jié)構(gòu)(流程圖)系統(tǒng)運行選擇功能1.信息錄入鍵入信息2.信息瀏覽返回主菜單返回主菜單3.信息查詢按書名查找按作者查找返回主菜單輸入書名輸入作者信息存在?是否輸出信息返回主菜單4.信息刪除輸入刪出信息代號輸出刪除后的信息返回主菜單5.信息修改輸入修改信息代號修改信息存在?是信息修改否返回主菜單輸出修改后的信息6.退出系統(tǒng)3各模塊的功能及程序說明A、錄入模塊:本模塊主要執(zhí)行信息錄入功能。B、瀏覽模塊:本

5、模塊主要是執(zhí)行把已有信息輸出瀏覽功能。C、查詢模塊:本模塊主要是執(zhí)行按書名和按作者名查找圖書信息的功能。D、刪除模塊:本模塊主要執(zhí)行刪除圖書信息的功能。E、修改模塊(本人設(shè)計模塊):本模塊主要執(zhí)行圖書信息修改功能。在用戶選擇該功能后。首先,系統(tǒng)會彈出已存在信息列表并讓用戶選擇所要修改的信息項目。然后,當(dāng)用戶選定要修改的信息后會彈出信息目錄,用戶需按順序依次修改信息內(nèi)容。最好當(dāng)所有信息項目都修改完成之后,按回車鍵會在窗口上輸出修改后的內(nèi)容。4. 源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#i

6、nclude<conio.h>#define MAX 100struct Studentint num;/*登錄號*/char name100;/*書名*/char author100;/*作者名*/char fn100;/*分類號*/char place100;/*出版單位*/char day100;/*出版時間*/float money;/*價格*/stuMAX;main()/*主函數(shù)*/void Input();/*輸入*/void Display();/*輸出*/void Find();/*查找*/void Modify();/*刪除*/void Change();/*修改

7、*/int n; for(;)printf("n"); printf("n"); printf(" n"); printf(" 歡迎來到圖書信息管理系統(tǒng) n"); printf(" n"); printf(" n");printf(" 主菜單 n");printf(" n"); printf(" 1.圖書信息錄入 n"); printf(" n");printf(" 2.圖書信息瀏覽 n

8、"); printf(" n");printf(" 3.圖書信息查詢 n"); printf(" n");printf(" 4.圖書信息刪除 n"); printf(" n");printf(" 5.圖書信息修改 n"); printf(" n");printf(" 6.退出系統(tǒng) n"); printf(" n"); printf("nn"); printf("請輸入選擇項(1

9、-6):"); scanf("%d",&n); printf("nnnn"); if(n>0&&n<7)switch(n) case 1:Input();break; case 2:Display();break; case 3:Find();break; case 4:Modify();break; case 5:Change();break; case 6:printf("n"); printf(" n"); printf(" 謝謝使用! n")

10、; printf(" 再見! n"); printf(" n"); printf("n"); exit(0); else printf("n"); printf(" n"); printf(" 輸入錯誤! n"); printf(" 請退出! n"); printf(" n"); printf("n"); break;void Find()/*查找*/ FILE *fp;int i;int choose,t;char

11、 ans100; doprintf("1.按書名查找n");printf("2.按作者名查找n");printf("返回主菜單(其他數(shù)字)n");scanf("%d",&choose);if(choose=1)printf("輸入所查書名:n");scanf("%s",ans);t=-1;if(choose=1)for(i=0;i<MAX;i+) if(strcmp(ans,)=0) t=i; fp=fopen("student&qu

12、ot;,"rb");for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf("%d %s %s %s %s %s %fn",stut.num,,stut.author,stut.fn,stut.place,stut.day,stut.money);if(t=-1) printf("不存在該信息n");else if(choose=2)printf("輸入所查作者名:n");scanf("%s",ans);

13、t=-1;if(choose=2)for(i=0;i<MAX;i+)if(strcmp(ans,stui.author)=0) t=i; fp=fopen("student","rb");for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf("%d %s %s %s %s %s %fn",stut.num,,stut.author,stut.fn,stut.place,stut.day,stut.money);if(t=-1) pri

14、ntf("不存在該信息n");else return;while(1);void Display()/*輸出*/FILE *fp; int i; fp=fopen("student","rb"); printf("n"); printf(" 圖書列表n"); printf("-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); for(i=0;fread(&stu

15、i,sizeof(struct Student),1,fp)=1;i+)printf("%6d %8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp);void Input()/*輸入*/FILE *fp;int n;fp=fopen("student","ab+"); for(n=0;n<MAX;n+)printf("n=%d 輸入序號n(當(dāng)輸入n=-1時

16、,返回),n=",n+); scanf("%d",&n);if(n=-1) fclose(fp);return;elseprintf("請輸入登錄號 書名 作者名 分類號 出版單位 出版時間 價格n");scanf("%d%s%s%s%s%s%f",&stun.num,,stun.author,stun.fn,stun.place,stun.day,&stun.money); fwrite(&stun,sizeof(struct Student),1,fp);fclose(f

17、p);void Modify()/*刪除*/FILE *fp;int i,flag,n,s,j; fp=fopen("student","rb+"); rewind(fp); printf(" 圖書列表n"); printf("-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(

18、"%6d %8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,stui.place,stui.day,stui.money); printf("n"); n=i;printf("輸入待刪除圖書號:n");scanf("%d",&s);for(i=0,flag=1;flag&&i<n;i+)if(s=stui.num)for(j=i;j<n-1;j+)stuj.num=stuj+1.num; strc

19、py(,stuj+1.name); strcpy(stuj.author,stuj+1.author); strcpy(stuj.fn,stuj+1.fn); strcpy(stuj.place,stuj+1.place);strcpy(stuj.day,stuj+1.day);stuj.money=stuj+1.money;flag=0;if(!flag)n=n-1;else printf("沒有此號n");fp=fopen("student","wb");for(i=0;i<n;i+)fwrite(&

20、;stui,sizeof(struct Student),1,fp); fclose(fp);fp=fopen("student","r"); printf(" 圖書列表n"); printf("-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); for(i=0;i<n;i+) fread(&stui,sizeof(struct Student),1,fp); printf("%6d

21、%8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,stui.place,stui.day,stui.money); printf("n"); fclose(fp);void Change()/*修改*/ FILE *fp; int i,num,n; int flag=0; fp=fopen("student","rb"); printf("n"); printf(" 圖書列表n"); printf(&q

22、uot;-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf("%6d %8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp); printf("請輸入要修改的

23、圖書號:"); scanf("%d",&num); for(i=0;i<=MAX;i+) if(stui.num=num) printf(" 圖書列表n"); printf("-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); printf("%6d %8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,s

24、tui.place,stui.day,stui.money); printf("-nn"); n=i; flag=1; break; if(flag=0)printf("n"); printf(" 輸入錯誤!n"); printf(" 請返回!n"); printf("n"); return; printf("nnn"); fp=fopen("student","rb+"); fseek(fp,n*sizeof(struct Stude

25、nt),0); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); scanf("%d%s%s%s%s%s%f",&stun.num,,stun.author,stun.fn,stun.place,stun.day,&stun.money); fwrite(&stui,sizeof(struct Student),1,fp); fclose(fp); fp=fopen("student","rb"); printf(" 圖書列表n&qu

26、ot;); printf("-n"); printf("登錄號 書名 作者名 分類號 出版單位 出版時間 價格n"); printf("-n"); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf("%6d %8s %8s %8s %8s %8s %8.2fn",stui.num,,stui.author,stui.fn,stui.place,stui.day,stui.money); printf("-n

27、n"); fclose(fp);5操作方法(流程)第一步:雙擊打包好的.exe程序,打開程序。第二步:根據(jù)窗口提示內(nèi)容作出選擇。第三步:根據(jù)彈出的二級菜單作出選擇。第四步:根據(jù)所選內(nèi)容進行相應(yīng)的操作。第五步:操作完畢,根據(jù)提示返回主菜單會直接退出該系統(tǒng)。6試驗結(jié)果A、圖書信息錄入:數(shù)據(jù)輸入:數(shù)據(jù)輸出:B、圖書信息瀏覽輸入數(shù)據(jù):數(shù)據(jù)輸出:C、圖書信息查詢輸入數(shù)據(jù):輸出數(shù)據(jù):D、圖書信息刪除:輸入數(shù)據(jù):輸出數(shù)據(jù):E、圖書信息修改輸入數(shù)據(jù):輸出數(shù)據(jù):F、系統(tǒng)退出輸入數(shù)據(jù):數(shù)據(jù)輸出:7設(shè)計體會。在這一周的程序設(shè)計實習(xí)當(dāng)中并不是一帆風(fēng)順的。剛開始到電腦面前聽完老師講了一大堆,我根本就不知道要做

28、什么,用什么做。 我并沒有被眼前的一點小困難所擊倒,我相信困難總是有辦法解決的。于是開始的兩天我就在網(wǎng)上找各種相關(guān)的文章、視頻。剛開始我就只是看著網(wǎng)上的東西照貓畫虎的做一些小程序,慢慢的通過這些模仿我也漸漸的懂了一些東西。通過兩天的原始知識積累后,我開始嘗試著按照自己的想法做了一些小系統(tǒng)。起初會出現(xiàn)很多問題,不是這兒少了就是那錯了。在這樣那樣的錯誤中我明白編程是一件很嚴謹?shù)氖?,容不得半點錯誤,一步走錯,全盤皆輸!在出現(xiàn)錯誤時我通常是上網(wǎng)搜索相關(guān)的答案,聽聽大家的想法,往往一個問題的解決方法是多種多樣的,各自有其精妙之處。有的解決方法淺顯易懂,但是易出現(xiàn)漏洞;有的復(fù)雜難懂,但是邏輯緊密,無絲毫破

29、綻。編程是一門邏輯的游戲,一但了解其游戲規(guī)則,便發(fā)現(xiàn)樂趣無窮。有時候自己有很多的想法,但由于自己的水平有限不能很好地實現(xiàn),每到那時候我就有一種強烈的愿望想要把問題解決,做出自己想的東西。一但解決了問題,那種快樂非親身經(jīng)歷者不能感受! 說實話,在網(wǎng)上雖然信息很多,但是會讓人暈了頭腦,做起來也不是那么容易的。也許我的程序比起別人的來說可能會有些許不足,但是那個個代碼都是出自我手,每一寸屏幕都是我自己的想法,都是我自己的。我覺得不成功沒關(guān)系,重要的是要有自己努力成功的心,而要成功光是抄襲別人的是不行的,得拿出自己的東西,自己的創(chuàng)新,要敢于嘗試! 王杰 2013.7.9七、附錄1.流程圖主頁面:信息錄

30、入:信息瀏覽:信息查詢:信息刪除:信息修改:系統(tǒng)退出:2.主要過程列表A、程序開頭定義:#include<stdio.h>:#include是編譯預(yù)處理指令,就是在編譯前將stdio.h這個文件里的函數(shù)都添加到你寫的cpp文件中。#include<string.h>:在編譯前C語言里面關(guān)于字符數(shù)組的函數(shù)定義的頭文件,就是在編譯前將stdio.h這個文件里的函數(shù)都添加到你寫的cpp文件中。#include<stdlib.h>:在編譯前將stdlib.h這個文件里的函數(shù)都添加到你寫的cpp文件中。#include<conio.h>:在編譯前將coni

31、o.h這個文件里的函數(shù)都添加到你寫的cpp文件中。#define MAX 100:#define 就是在編譯器編譯之前對代碼進行字符串替換,即是把MAX換成100.B、struct Student:結(jié)構(gòu)體,定義的結(jié)構(gòu)體是整個程序的共用體,即是該結(jié)構(gòu)體可在每個模塊中不從新定義就使用。C、main()主函數(shù)模塊主要變量、函數(shù):void Input():自定義輸入函數(shù)。void Display():自定義輸出函數(shù)。void Find():自定義查找函數(shù)。void Modify():自定義刪除函數(shù)。void Change():自定義修改函數(shù)。for():循環(huán)函數(shù)。switch():選擇函數(shù),判斷用戶輸入的數(shù)字進行功能選擇。exit():退出循環(huán)函數(shù)。D、void Input()輸入模塊主要變量、函數(shù):FILE *fp:聲明fp是指針,用來指向FILE類型的對象。fopen(): fopen函數(shù)用來打開一個文件。printf():輸出函數(shù),以程序員規(guī)定數(shù)據(jù)類型把數(shù)據(jù)輸出到窗口上。scanf():輸入函數(shù),以程序員規(guī)定的的數(shù)據(jù)類型輸入數(shù)據(jù)。if()else:條件判斷函數(shù)。fclose():關(guān)閉文件的函數(shù),功能為關(guān)閉打開的文件,以防止數(shù)據(jù)丟失。fwrite():向文件寫入一個數(shù)據(jù)塊。sizeof():以字節(jié)形式給出了其操作數(shù)的存儲大小。for():循環(huán)函數(shù)。E、voi

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論