版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、蘇州科技大學(xué)二一六 二一七學(xué)年第一學(xué)期電子與信息工程系課程設(shè)計報告書課程名稱: 圖書信息系統(tǒng) 班 級: _ 電子1612班_ 學(xué) 號: 16200106231_ 姓 名: 張立進_ 指導(dǎo)教師: 任建平_ 二一七年三月1. 題目:圖書信息系統(tǒng)的設(shè)計與實現(xiàn)2.功能:(1)每一條記錄包括一個圖書編號,圖書名,作者名,出版社等。(2)圖書信息瀏覽功能:完成全部圖書信息記錄的顯示和瀏覽,包括排序后、修改后、插入后、刪除后信息改變的瀏覽。(3)圖書信息錄入功能:完成對“圖書編號,圖書名,作者名,出版社”信息的錄入。(4)圖書信息修改功能:對圖書信息進行修改并保存。(5)圖書信息查詢功能:通過輸入圖書編號查
2、找該圖書,并顯示該圖書所有信息。(6)圖書信息插入功能:通過輸入某本圖書編號進行圖書信息的插入并保存。(7)圖書信息刪除功能:完成刪除圖書的信息的功能。(8)圖書信息排序功能:按圖書編號對圖書進行從小到大重新排序。 (9)圖書信息幫助功能:能夠給用戶提供所有函數(shù)的幫助功能,并作相應(yīng)得介紹。 3.要求:(1)整個系統(tǒng)均用C語言實現(xiàn);(2)利用指針、鏈表來實現(xiàn)圖書信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計;(3)系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入,保存、讀取基本功能;(4)系統(tǒng)的各個功能模塊都用函數(shù)的形式來實現(xiàn);(5)可以將圖書信息保存在文件中。(6)可以將圖書信息從文件中讀取出來。4.設(shè)計內(nèi)容:整個系統(tǒng)除了主函
3、數(shù)外,另外還有13個函數(shù),包括主函數(shù)在內(nèi),以實現(xiàn)9大功能:圖書信息瀏覽功能,圖書信息錄入功能,圖書信息修改功能,圖書信息查詢功能, 圖書信息插入功能,圖書信息刪除功能,圖書信息排序功能,圖書信息幫助功能,退出系統(tǒng)功能。其功能流程圖如下所示:stuct book結(jié)構(gòu)體void help()幫助void allinformation()圖書信息瀏 覽主函數(shù)mainmainmenuvoidinput()圖書信息錄入void editbook()圖書信息修改void querybook()圖書信息查詢void deletebook()圖書信息刪除void insertbook() 圖書信息插入void
4、 sortbook() 圖書信息排序 圖1 主菜單選擇功能流程圖各個函數(shù)的詳細設(shè)計說明分別如下:4.1創(chuàng)建主函數(shù)void main()該函數(shù)通過選擇各選項,完成相應(yīng)的功能,當選擇退出選項時,退出循環(huán),具體的選擇項有:【1】圖書信息瀏覽功能,【2】圖書信息錄入功能,【3】圖書信息修改功能,【4】圖書信息查詢功能, 【5】圖書信息插入功能,【6】圖書信息刪除功能,【7】圖書信息排序功能,【8】圖書信息幫助功能,【9】退出系統(tǒng)功能。4.2結(jié)構(gòu)體struct定義了一個圖書信息的結(jié)構(gòu)體,包括 char author20;char bookname20;char publisher20;int num;等
5、。操作流程: 1進入主界面選擇圖書信息瀏覽 2輸出所有已存儲的所有圖書信息 3退回主界面 4.3編寫瀏覽數(shù)據(jù)記錄函數(shù) void allinformation()該函數(shù)可以通過選擇相應(yīng)的功能對已經(jīng)輸入并保存的所有的圖書信息進行瀏覽,并且退出后還能保存記錄,以備下次瀏覽時信息沒有丟失。操作流程: 1進入主界面選擇圖書信息瀏覽 2輸出所有已存儲的所有圖書信息 4.4編寫錄入數(shù)據(jù)記錄函數(shù)inputbook()該函數(shù)可以添加新的圖書信息,并且在退出后可以自動保存,當重新瀏覽所有圖書信息時,新添加的圖書信息也在其中,且通過if (y!=1)來判別是1錄入,0不錄入,來實現(xiàn)是否繼續(xù)錄入的功能。操作流程: 1
6、進入錄入界面 2輸入相關(guān)信息(圖書編號、名字、作者名、出版單位)保存退出。 4.5編寫修改數(shù)據(jù)記錄函數(shù)editbook()該函數(shù)可以完成對已有的圖書信息“圖書編號,圖書名,作者名,出版社”進行重新修改并加以保存,實現(xiàn)圖書信息的修改,為以后的保存函數(shù),瀏覽函數(shù),查詢函數(shù),排序函數(shù),刪除函數(shù),修改函數(shù)等功能的實現(xiàn)提供了基礎(chǔ)。操作流程: 1進入修改界面 2修改所要修改的圖書的編號、作者名等相關(guān)信息。 4.6編寫查詢數(shù)據(jù)記錄函數(shù)querybook()該函數(shù)運用for語句實現(xiàn)對圖書編號信息的查找輸出,并顯示到屏幕上,實現(xiàn)圖書信息的查找功能。操作流程: 1進入查詢界面 2通過輸入圖書編號輸出顯示指定圖書匹
7、配信息 4.7編寫插入數(shù)據(jù)記錄函數(shù)insertbook()通過void insertbook()插入函數(shù)來實現(xiàn)插入,先清屏system("cls");然后通過輸入插入前圖書編號后進行新圖書信息的輸入最終圖書信息插入功能,退出后自動保存可以再次瀏覽。操作流程: 1進入刪除界面 2輸入所要刪除的圖書編號后自動刪除。 4.8編寫刪除數(shù)據(jù)記錄函數(shù)deletebook() 該函數(shù)通過void deletebook()刪除函數(shù)來實現(xiàn)圖書信息的刪除,通過輸入圖書編號查找到該圖書之后刪除。退出后再次瀏覽所有圖書信息時便看不到已刪除的圖書信息。操作流程: 1進入插入界面 2輸入所要插入位置的
8、圖書編號,然后插入新圖書的相關(guān)信息。 4.9編寫數(shù)據(jù)記錄排序函數(shù) void sortbook()該函數(shù)定義了i,j運用冒泡法對圖書信息進行排序,對圖書的編號按照從小到大的順序來排序的。最好顯示已排序好的的圖書信息。操作流程: 1進入插入界面 2輸入所要插入位置的圖書編號,然后插入新圖書的相關(guān)信息。 3退回主界面4.10編寫幫助函數(shù)void help()該函數(shù)是簡單的幫助功能,介紹了各個模塊的功能,使用戶快速了解該系統(tǒng)的功能作用。具體代碼如下:void help()printf("t|幫助|n"); printf(" 下方顯示的是您所需的幫助信息:n");
9、printf(" n"); printf(" 如果選擇1,則進入第一個選項(1).圖 書 信 息 瀏 覽:完成全部圖書信息記錄的顯示和瀏覽,包括排序后、修改后、插入后、刪除后信息改變的瀏覽。n");printf(" 如果選擇2,則進入第二個選項(2).圖 書 信 息 錄 入:完成對圖書號,圖書名,作者名,出版社信息的錄入。n");printf(" 如果選擇3,則進入第三個選項(3).圖 書 信 息 修 改:對圖書信息進行修改并保存。n"); printf(" 如果選擇4,則進入第四個選項(4).圖 書 信
10、 息 查 詢:通過輸入圖書編號查找該圖書,并顯示該圖書所有信息。n");printf(" 如果選擇5,則進入第五個選項(5).圖 書 信 息 插 入:通過輸入某本圖書編號進行圖書信息的插入并保存。n");printf(" 如果選擇6,則進入第六個選項(6).圖 書 信 息 刪 除:完成刪除圖書的信息的功能n"); printf(" 如果選擇7,則進入第八個選項(7).圖 書 文 件 排 序:按圖書編號對圖書進行從小到大重新排序。n");printf(" 如果選擇9,則進入第九個選項(8).幫 助 功 能:提供一些幫
11、助給用戶使用,以備更好的使用。n");printf(" 如果選擇0,則進入第零個選項(9).退 出 系 統(tǒng):用來退出系統(tǒng),以備下次再使用。n");printf("nn 請按任何鍵返回,謝謝!n");fflush(stdin); getchar();5. 調(diào)試分析 在此次的C語言程序設(shè)計中,我的程序開始有很多的錯誤,例如error C2440: '=' : cannot convert from 'int' to 'int 10',是我忽略不能把整型轉(zhuǎn)換成數(shù)組。插入功能出現(xiàn)插入信息后卻瀏覽不到,后來
12、在插入后面加了一段保存文件的代碼后,插入功能才得以實現(xiàn),還有因為我的粗心把寫文件寫成了讀文件導(dǎo)致刪除功能無法實現(xiàn)。經(jīng)過我和其他同學(xué)反復(fù)的檢查反復(fù)的修改,最終完成了。6. 源程序#include<stdio.h> #include<stdlib.h> #include<conio.h>#include<string.h> #define NULL 0#define a 100int now=0;struct book char author20; /*作者名*/ char bookname20; /*圖書名*/ char publisher20;
13、/*出版單位*/char day100;/*出版時間*/float money;/*價格*/ int num; /*圖書編號*/;struct book ba; /*系統(tǒng)主菜單*/void mainmenu() FILE *fp1,*fp2; int i; system("cls"); printf ("n溫馨提示:為保證您的操作得到保存,請按正常順序退出系統(tǒng)_n"); printf("nn"); printf("tt +n"); printf("tt | | 歡迎使用圖書信息管理系統(tǒng) | | n&quo
14、t;); printf("tt | | n"); printf("tt | | n"); printf("tt | 1圖書信息瀏覽 | n"); printf("tt | | n"); printf("tt | 2圖書信息錄入 | n"); printf("tt | | n"); printf("tt | 3圖書信息修改 | n"); printf("tt | | n"); printf("tt | 4圖書信息查詢 | n&q
15、uot;); printf("tt | | n"); printf("tt | 5圖書信息插入 | n"); printf("tt | | n"); printf("tt | 6圖書信息刪除 | n"); printf("tt | | n"); printf("tt | 7圖書信息排序 | n"); printf("tt | | n"); printf("tt | 8幫助 | n"); printf("tt | | n&quo
16、t;); printf("tt | 9退出系統(tǒng) | n"); printf("tt | | n"); printf("tt +n"); printf ("請輸入您的選擇:");/*library.txt里面讀出now的值*/ if(fp2=fopen("D:library.txt","rb")!=NULL) fscanf(fp2,"%d",&now); fclose(fp2); /*b.txt里面讀出一組數(shù)據(jù)的值*/ if(fp1=fopen(&q
17、uot;D:b.txt","rb")!=NULL) for(i=0;i<now;i+) fread(&bi,sizeof(struct book),1,fp1); fclose(fp1); /*圖書信息瀏覽*/void allinformation() int i; char turn;printf("t|圖書信息瀏覽|n"); printf("瀏覽所有圖書信息n"); printf("圖書編號t圖書名tt作者名tt出版單位tt出版時間tt價格nn"); for(i=0;i<now;i
18、+) printf("%d tt%s tt%s tt%s tt%s tt%s nn",bi.num,bi.bookname,bi.author,bi.publisher bi.day bi.money); printf("t按任意鍵返回主菜單."); /*返回主菜單*/ turn=getch(); mainmenu();/*圖書信息錄入*/void inputbook() printf("t|圖書信息錄入|n");int i=now; FILE *fp1,*fp2; char turn,judge;doprintf("請輸入
19、添加第%d本圖書的信息:n",i+1);printf ("n請輸入圖書名:n"); scanf("%s",bi.bookname); printf ("n請輸入圖書編號:n"); scanf("%d",&bi.num); printf ("n請輸入作者名:n"); scanf("%s",bi.author); printf ("n請輸入出版單位:n"); scanf("%s",bi.publisher); printf
20、 ("n請輸入出版時間:n"); scanf("%s",bi.day);printf ("n請輸入價格:n"); scanf("%s",bi.money);i+; now=i;/*library.txt里面寫入now的值*/ if(fp2=fopen("D:library.txt","wb")!=NULL) fprintf(fp2,"%d",now); fclose(fp2); printf("是否繼續(xù)添加?(y/n)n"); judg
21、e=getch(); while(judge!='n');/*book.txt里面寫入一組數(shù)據(jù)的值*/ if(fp1=fopen("D:b.txt","wb")!=NULL) for(i=0;i<now;i+) fwrite(&bi,sizeof(struct book),1,fp1); fclose(fp1); elseprintf("can not open the filen"); printf("t請按任意鍵返回."); /*返回主菜單*/ turn=getch(); main
22、menu();/*圖書信息修改*/ void editbook() FILE *fp1; int i,e_num,j;char e_author10,e_publisher10,e_bookname10,judge,turn;struct book ebook;printf("t|圖書信息修改|n");doprintf("請輸入需要修改的圖書編號n"); scanf("%d",&ebook.num); for(i=0;i<now;i+) if(ebook.num=bi.num)/*如果編號相同,說明圖書存在,可以進行修改
23、*/ printf("n圖書編號:n"); scanf("%d",&e_num); printf("n圖書名:n"); scanf("%s",e_bookname); printf("n作者名:n"); scanf("%s",e_author); printf("n出版單位:n"); scanf("%s",e_publisher);printf("n出版時間:n"); scanf("%s"
24、,e_day);printf("n價格:n"); scanf("%s",e_money); bi.num=e_num; strcpy(bi.bookname,e_bookname); strcpy(bi.author,e_author); strcpy(bi.publisher,e_publisher);strcpy(bi.publisher,e_day);strcpy(bi.publisher,e_mony); printf("n 圖書信息修改成功,請繼續(xù)選擇!n"); printf("nn"); break;
25、if(i=now)printf("沒有此圖書n");printf("是否繼續(xù)修改下本圖書?(y/n)n");judge=getch(); /*b.txt里面寫入一組數(shù)據(jù)的值*/ if(fp1=fopen("D:b.txt","wb")!=NULL) for(j=0;j<now;j+) fwrite(&bj,sizeof(struct book),1,fp1); fclose(fp1); else printf("can not open the filen"); while(jud
26、ge!='n');printf("t按任意鍵返回主菜單."); turn=getch();mainmenu(); /*圖書信息查詢*/void querybook() int number,flag=1,i;char judge,turn;printf("t|圖書信息查詢|n");printf("請輸入要查詢的圖書編號: ");scanf("%d",&number);for(i=0;i<now;i+)if(number=bi.num) flag=0;printf("圖書編號t
27、圖書名tt作者名tt出版單位tt出版時間tt價格nn");printf("%d tt%s tt%s tt%s tt%s t%s nn",bi.num,bi.bookname,bi.author,bi.publisher .bi.day .bi.money );break; if (flag!=0)printf("不能找到該圖書信息!");printf("t按任意鍵返回主菜單."); turn=getch();mainmenu();/*圖書信息插入*/void insertbook() FILE *fp2,*fp1;int i
28、,j,h;char turn,judge;struct book ib;printf("t|圖書信息插入|n");do h=now;printf("請輸入插入之前的圖書編號n");scanf("%d",&ib.num);for(i=0;i<now;i+)if(ib.num=bi.num) /如果編號相同,說明圖書存在,進行插入;now+;for(j=now-2;j>=i;j-)bj+1=bj;printf ("n請輸入圖書名:n"); scanf("%s",bi.bookna
29、me); printf ("n請輸入圖書編號:n"); scanf("%d",&bi.num); printf ("n請輸入作者名:n"); scanf("%s",bi.author); printf ("n請輸入出版單位:n"); scanf("%s",bi.publisher); printf ("n請輸入出版時間n"); scanf("%s",bi.day); printf ("n請輸入價格:n");
30、scanf("%s",bi.money); break;if(i=h) printf("沒有本圖書n"); printf("是否繼續(xù)插入?(y/n)n");judge=getch(); while(judge!='n');/*library.txt里面讀出now的值*/ if(fp2=fopen("D:library.txt","wb")!=NULL) fprintf(fp2,"%d",now); fclose(fp2); /*b.txt里面讀出一組數(shù)據(jù)的值*
31、/ if(fp1=fopen("D:b.txt","wb")!=NULL) for(i=0;i<now;i+) fwrite(&bi,sizeof(struct book),1,fp1); fclose(fp1); printf("t按任意鍵返回主菜單."); turn=getch(); mainmenu();/*圖書信息刪除*/ void deletebook() int number;char turn;int t=now;int i;FILE *fp2,*fp1;system("cls"); /
32、*清屏*/printf("t|圖書信息刪除|n");printf("n 請輸入要刪除的圖書編號: ");scanf("%d",&number);for (i=0;i<now;i+)if(number=bi.num)for(;i<now-1;i+)strcpy(bi.bookname,bi+1.bookname);bi.num=bi+1.num;strcpy(bi.publisher,bi+1.publisher);strcpy(bi.author,bi+1.author);printf("n 刪除圖書文件
33、成功!n");now-;break;if(i=t)printf("n 對不起!文件不能找到!n");/*library.txt里面讀出now的值*/ if(fp2=fopen("D:library.txt","wb")!=NULL) fprintf(fp2,"%d",now); fclose(fp2); /*b.txt里面讀出一組數(shù)據(jù)的值*/ if(fp1=fopen("D:b.txt","wb")!=NULL) for(i=0;i<now;i+) fwrit
34、e(&bi,sizeof(struct book),1,fp1); fclose(fp1); elseprintf("can not open the filen");printf("t按任意鍵返回主菜單."); turn=getch(); mainmenu();/*圖書信息排序*/void sortbook() int i,j; char turn; struct book cb;printf("t|圖書信息排序|n"); for(j=0;j<now-1;j+) for(i=0;i<now-1-j;i+) if(
35、bi.num>bi+1.num) cb=bi; bi=bi+1; bi+1=cb; printf("圖書排序(按照圖書編號從小到大排序)n"); printf(" 編號tt圖書名稱tt圖書作者tt圖書出版社tt出版時間tt價格n"); for(i=0;i<now;i+) printf(" %dtt%sttt%sttt%sttt%sttt%snn",bi.num,bi.bookname,bi.author,bi.publisher,bi.day ,bi.money); printf("t按任意鍵返回主菜單.&quo
36、t;); turn=getch(); mainmenu();/*幫助*/void help()printf("t|幫助|n"); printf(" 下方顯示的是您所需的幫助信息:n");printf(" n"); printf(" 如果選擇1,則進入第一個選項(1).圖 書 信 息 瀏 覽:完成全部圖書信息記錄的顯示和瀏覽,包括排序后、修改后、插入后、刪除后信息改變的瀏覽。n");printf(" 如果選擇2,則進入第二個選項(2).圖 書 信 息 錄 入:完成對圖書號,圖書名,作者名,出版社信息的錄入。
37、n");printf(" 如果選擇3,則進入第三個選項(3).圖 書 信 息 修 改:對圖書信息進行修改并保存。n"); printf(" 如果選擇4,則進入第四個選項(4).圖 書 信 息 查 詢:通過輸入圖書編號查找該圖書,并顯示該圖書所有信息。n");printf(" 如果選擇5,則進入第五個選項(5).圖 書 信 息 插 入:通過輸入某本圖書編號進行圖書信息的插入并保存。n");printf(" 如果選擇6,則進入第六個選項(6).圖 書 信 息 刪 除:完成刪除圖書的信息的功能n"); prin
38、tf(" 如果選擇7,則進入第八個選項(7).圖 書 文 件 排 序:按圖書編號對圖書進行從小到大重新排序。n");printf(" 如果選擇9,則進入第九個選項(8).幫 助 功 能:提供一些幫助給用戶使用,以備更好的使用。n");printf(" 如果選擇0,則進入第零個選項(9).退 出 系 統(tǒng):用來退出系統(tǒng),以備下次再使用。n");printf("nn 請按任何鍵返回主菜單,謝謝!n"); getchar();/*結(jié)束*/*主程序*/void main() int n;mainmenu();scanf("%d",&n);while(n)switch(n)case 1:system("cls");allinformation();break;case 2:system("cls");inputbook();break;cas
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版離婚協(xié)議書起草、公證、執(zhí)行全程服務(wù)合同2篇
- 孝感圍堰施工方案
- 2025版天津二手房買賣合同(含裝修改造權(quán)及公共設(shè)施使用)3篇
- 二零二五年公關(guān)公司危機公關(guān)顧問聘用協(xié)議3篇
- 2025版家政服務(wù)與家庭宴會籌備合同范本3篇
- 2024年固廢處理項目調(diào)研分析報告
- 2024木屑生產(chǎn)加工企業(yè)-原料采購合作協(xié)議書3篇
- 2025年中國艾灸盒行業(yè)市場運營現(xiàn)狀及投資規(guī)劃研究建議報告
- 2025年度個人商鋪買賣合同示范文本3篇
- 2024其他食品零售行業(yè)分析報告
- 學(xué)前兒童健康教育活動設(shè)計智慧樹知到期末考試答案章節(jié)答案2024年云南國防工業(yè)職業(yè)技術(shù)學(xué)院
- 門診敘事護理課件
- 福建省廈門市翔安區(qū)2023-2024學(xué)年八年級上學(xué)期期末語文試題
- 村廟修建合同
- (完整word版)咨詢服務(wù)合同范本
- 城市軌道交通的智能監(jiān)控與預(yù)警系統(tǒng)
- 《人工智能課件-基礎(chǔ)入門》
- 骨科手術(shù)的術(shù)中應(yīng)急處理與糾正
- 漁業(yè)安全與事故預(yù)防
- GB/T 16462.1-2023數(shù)控車床和車削中心檢驗條件第1部分:臥式機床幾何精度檢驗
- 通用電子嘉賓禮薄
評論
0/150
提交評論