




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計報告課程名稱C 語言程序設(shè)計課題名稱圖書借閱管理系統(tǒng)專業(yè)機(jī)械設(shè)計班級15 機(jī)械二班學(xué)號2015030220姓名指導(dǎo)教師2016年 6 月 14日西安理工大學(xué)高科學(xué)院課程設(shè)計任務(wù)書課程名稱課題C 語言程序設(shè)計圖書借閱管理系統(tǒng)專業(yè)班級網(wǎng)絡(luò)工程 1002 班學(xué)生姓名學(xué)號201003120224指導(dǎo)老師唐北平、陳淑紅、譚小蘭審批任務(wù)書下達(dá)日期 2011 年 6 月 20 日任務(wù)完成日期 2011 年 7 月 03 日2一、設(shè)計內(nèi)容與設(shè)計要求1設(shè)計內(nèi)容: 對一個有 N 本圖書的圖書館,通過該系統(tǒng)實現(xiàn)對該班級學(xué)生的基本信息進(jìn)行錄入、顯示、修改、刪除、保存等操作的管理。(1)、本系統(tǒng)采用一個包含 N
2、個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:書號、書名、作者、出版社、出版日期、單價、是否借出等。(2)、本系統(tǒng)顯示這樣的菜單:a. 圖書基本信息錄入b. 圖書基本信息顯示c. 圖書基本信息刪除d. 圖書基本信息修改e. 圖書基本信息查詢(按書號查詢、書名等)g.退出系統(tǒng)(3)、執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。2設(shè)計要求: 掌握結(jié)構(gòu)化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。1. 設(shè)計正確,方案合理。2. 界面友好,使用方便。3. 程序精煉,結(jié)構(gòu)清晰。4. 設(shè)計報告 5000 字以上,含程序設(shè)計說明,用戶使用說
3、明,源程序清單及程序框圖。5. 上機(jī)演示。6. 按學(xué)號順序選課題號,并在規(guī)定的時間內(nèi)獨自完成相關(guān)課題的C 源程序編寫、調(diào)整和運行。源程序及編譯生成各文件均保存在軟盤中;7. 按本任務(wù)書的要求, 按附錄的要求編寫 課程設(shè)計報告(Word 文檔格式)。并用 A4 的復(fù)印紙打印并裝訂;二、進(jìn)度安排第十八 周星期 1 8時 00分11時 30分星期 2 14時00分18時 15分星期 3 8時 00分11時 30分星期 4 8時 00分11時 30分3第十九 周星期 1 8時 00分11時 30分星期 2 14時00分18時 15分4三、課程設(shè)計報告1. 程序設(shè)計準(zhǔn)備做系統(tǒng)前,首先,自己詳細(xì)看了C 程
4、序設(shè)計(教科書),基本自學(xué)會了文件的相關(guān)內(nèi)容,理解了相關(guān)函數(shù)的用法和作用;另,上網(wǎng)查詢了很多相關(guān)資料,還有找了很多相關(guān)的系統(tǒng), 都詳細(xì)的看了一遍, 加深了對 C 的理解以及對文件的相關(guān)內(nèi)容進(jìn)一步理解。 學(xué)習(xí)了 C 語言的內(nèi)容,圖書信息管理系統(tǒng)有助于C語言學(xué)習(xí)的進(jìn)一步鞏固,在本系統(tǒng)可以增強(qiáng)對指針、文件、函數(shù)、結(jié)構(gòu)體變量等基本知識的進(jìn)一步理解。 另外圖書信息管理系統(tǒng)也是學(xué)校常用的基本系統(tǒng)之一,它有助于學(xué)校對圖書館書籍的基本管理。2. 程序設(shè)計說明根據(jù)題目要求, 應(yīng)當(dāng)把圖書信息用結(jié)構(gòu)體形式輸入, 再定義一個全局變量和文件指針進(jìn)行整個程序的運行, 然后把圖書信息送到文件中去, 所以應(yīng)該提供下個結(jié)構(gòu)體和
5、文件的輸入等操作:在程序中需要實現(xiàn)圖書信息錄入,瀏覽,查詢,刪除和修改等功能的操作, 所以需要建立相應(yīng)的模塊來實現(xiàn): 另外還需提供選擇菜單實現(xiàn)功能,在運行時達(dá)到所要求的目的。3. 程序的主要功能圖書管理在生活中運用非常廣泛,因此需要用許多的程序來對它們進(jìn)行管理。圖書借閱管理系統(tǒng)是對圖書信息的基本管理,它包括:圖書信息的錄入、圖書信息的顯示、圖書信息的刪除、圖書信息的修改、圖書信息的查詢。通過編譯一個 C 語言函數(shù),其中包含一個主函數(shù), 多個子函數(shù), 主函數(shù)調(diào)用其余的子函數(shù)實現(xiàn)人們能夠簡易、快捷的了解并找到自己所學(xué)要的信息的功能。1、圖書基本信息錄入:對新到圖書館的圖書的信息(編號、書名、出版社
6、、作者、價格)進(jìn)行錄入。2、圖書基本信息顯示:顯示已被錄入圖書的所有信息。3、圖書基本信息刪除:通過輸入書名,判斷此圖書是否存在,若存在,則刪除該圖書所有信息,若不存在則提示用戶重新輸入圖書書名。4、圖書基本信息修改:通過輸入書名,判斷此圖書是否存在,若不存在則提示用戶重新輸入圖書書名,若存在,則可對圖書各項信息進(jìn)行修改。5、圖書基本信息查詢:將所有圖書信息包括編號、書名、出版社、作者、價格等顯示在屏幕上。56、退出系統(tǒng):即退出圖書借閱管理系統(tǒng)。使用模塊化編程的方法每項功能有一個或多個函數(shù)組合來完成,其中菜單選項模塊對應(yīng)如下:圖書基本信息錄入 => void insert()圖書基本信息
7、顯示 => void print()圖書基本信息刪除 => void del()圖書基本信息修改 => void modify()圖書基本信息查詢 => void find()這份代碼中各個變量的定義如下:num圖書編號name書名author作者pub出版社where出版日期count單價四 . 功能模塊的劃分1. 主函數(shù)模塊根據(jù)圖書館信息管理系統(tǒng)的要求, 可設(shè)計一個主函數(shù), 及定義多個用戶自定義函數(shù)。在主函數(shù)中定義全局變量, 即是在函數(shù)外部定義的變量, 其不屬于某一個函數(shù),而屬于一個源程序文件,在整個程序內(nèi)可以多次被引用。62. 圖書基本信息顯示模塊當(dāng)用戶選擇圖書基
8、本信息顯示時,程序會將所有圖書信息列出。3.圖書基本信息輸入模塊在程序開始運行, 創(chuàng)建文件庫時, 調(diào)動此模塊, 提示用戶輸入新的圖書編號(編號為 0 時結(jié)束輸入),然后繼續(xù)輸入圖書書名,作者,出版社,出版日期,單價等信息。結(jié)束輸入時提示用戶圖書輸入完成4.圖書基本信息查詢模塊用戶先選擇圖書查詢方式 (按書名查找或按書號查找) 輸入圖書書名或書號后,查找出該圖書是否存在,若存在,則顯示該圖書信息,若不存在則提示用戶無此圖書信息。75.圖書基本信息刪除模塊用戶輸入所要刪除的圖書書名,先查找該圖書是否存在, 若存在,則刪除該圖書所有信息,若不存在則提示無此圖書信息。86.圖書基本信息錄入模塊首先輸入
9、圖書錄入的編號(不為0)判斷是否有重復(fù)的編號,若有,則提示用戶該書已存在,若無則繼續(xù)錄入書名、作者、出版社、單價。97.圖書基本信息修改模塊用戶輸入要修改的書名,判斷該書是否存在,若不存在,則提示用戶無此圖書信息;若存在,則提示用戶選擇修改項目, 然后提示用戶圖書信息修改完成。8. 讀文件模塊在運行該程序時,程序會自動檢測是否存在圖書信息,若存在,則會顯示圖書信息,若不存在,則會提示用戶創(chuàng)建文件庫,錄入圖書信息。109. 文件保存模塊當(dāng)用戶對圖書信息有錄入,修改,刪除等操作時,程序會自動保存操作和新的圖書信息。五 . 主要功能的實現(xiàn)程序運行流程:但每個模塊運行完即會回到主函數(shù),然后選擇其他或退
10、出。11六 . 程序調(diào)試1.第一次運行程序時,庫文件不存在圖書信息,于是錄入圖書信息。圖書編號書名作者出版社出版日期單價1英語張三人民教育出版社2011.06302.主界面。123.在主界面選擇1,開始錄入新的圖書信息。圖書編號書名作者出版社出版日期單價2數(shù)學(xué)李四高等教育出版社2011.06284.在主界面選擇 2,查詢圖書信息,按 1 或 2 分別選擇按書名或書號查詢。(以英語為例)13選擇 2,按書號查找,輸入書號:1,即可查詢圖書英語所有信息。選擇 1,按書名查找,輸入書名:英語,即可獲得圖書英語所有信息。145.在主界面選擇 3,對圖書資料進(jìn)行刪除(以數(shù)學(xué)為例) ,在后續(xù)圖書信息顯示時
11、無數(shù)學(xué)圖書信息。6.在主界面選擇 4,對圖書進(jìn)行修改(以英語為例,修改圖書作者,將作者更換為王五),在后續(xù)圖書基本信息顯示時,作者不將是張三,而是王五。157.在主界面選擇 5,圖書基本信息顯示,此時圖書信息經(jīng)過刪除和修改,和初始信息不同。16七. 總結(jié)通過為期一周的課程設(shè)計,對 C 語言這門課程有了更深一步的了解。它是計算機(jī)程序設(shè)計的重要理論技術(shù)基礎(chǔ), 在我們網(wǎng)絡(luò)工程專業(yè)的學(xué)習(xí)中占據(jù)著十分重要的地位。自己 C 語言編程的能力有了提高,特別是在文件、指針、數(shù)組、函數(shù)和結(jié)構(gòu)體方面有了很大提高, 另外還學(xué)習(xí)了課本沒有講到的知識, 學(xué)會了使用模塊化編程的簡單方法,另外在對話框的編程要求美觀、方面也有
12、了體會。循環(huán)是 C 語言的重要方法,也是本程序的靈魂,它在本程序中既有“穿針引線”的作用,也起到了對數(shù)據(jù)進(jìn)行分析、存貯、讀取等重要的作用,本程序在使用循環(huán)過程中對循環(huán)進(jìn)行了多方法的應(yīng)用也是一個“亮點”,它使程序變得結(jié)構(gòu)合理,通俗易懂,也降低了程序的難度。以后要對這種方法進(jìn)行深刻的體會。數(shù)組在程序中有著很重要的作用, 對數(shù)據(jù)的貯存、輸入、讀取起著很重要的作用,本程序幾乎所有數(shù)據(jù)都以數(shù)組進(jìn)行輸入、 貯存、讀取方便了對數(shù)據(jù)的處理和輸入,數(shù)組的的使用在本程序中有很大的好處。函數(shù)是實現(xiàn)模塊化編程的基礎(chǔ), 它使程序變得方面易懂, 對修改起了很大作用,降低了編程的難度, 一個函數(shù)就是一個功能, 它使各個功能
13、之間有了一定的獨立性,但也有了一定的聯(lián)系性, 一個函數(shù)的錯誤,不會導(dǎo)致整個程序的失敗 (主函數(shù)除外),對函數(shù)的良好應(yīng)用時在本程序中又以深刻的體會,有了很大提高。結(jié)構(gòu)體的使用, 為本程序提供了很大方便, 也提高了程序的可讀性, 結(jié)構(gòu)數(shù)組方便了對數(shù)據(jù)的管理。這個程序的結(jié)構(gòu)大體是從網(wǎng)絡(luò)上借鑒的, 但是大部分功能模塊與任務(wù)要求不同,只能自己修改,最后終于調(diào)試通過,同時也使我們知道,要學(xué)好這門課程,僅學(xué)習(xí)書本上的知識是不夠的, 還要有較強(qiáng)的實踐能力。 因為我們學(xué)習(xí)知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。同時提高了自己對編程的興趣, 使自己對編程有了更深的理解, 體會
14、到編程的樂趣。17八附件原代碼清單及注釋#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N sizeof(struct book)#definePT"%-5d%10s%6s%6s%8s%3dn",p->num,p->name,p->author,p->pub,p->where,p->countstruct book /*圖書信息 */int num;/*書號 */char name10
15、;/*書名 */char where10;/*出版日期 */char author15;/*作者 */char pub20;/*出版社 */int count;/*單價 */struct book *next;void find1 (struct book *p0);void find2 (struct book *p0);/* 輸出模塊 */void print(struct book *p0)struct book *p;system("cls");p=p0->next;printf("nn圖書信息表 ");printf("nn圖書編
16、號 -圖書名稱 - 作者 -出版社 -出版日期18- 單價 nn"); while(p!=NULL)printf(PT);p=p->next;getch();/輸入任意值返回system("cls");/* 輸入模塊 */struct book *creat()struct book *head,*p1,*p2;int i=0;head=p2=(struct book *)malloc(N);/分配新的內(nèi)存給 p2head->next=NULL;printf("nntt錄入圖書信息 ");printf("n-")
17、;while(1) p1=(struct book *)malloc(N);printf("n請輸入圖書編號 ( 書號 0 為結(jié)束 ): ");scanf("%d",&p1->num);if(p1->num!=0)printf("nn書名 作者 出版社出版日期單價 nnn");scanf("%s%s%s%s%d",p1->name,p1->author,p1->pub,p1->where,&p1->count); p2->next=p1;p2=p1;i
18、+;19elsebreak;p2->next=NULL;free(p1);printf("n-");printf("ntt%d種書錄入完畢 ",i);getch();system("cls");return head;/* 查找模塊 */void find(struct book *p0)int v;system("cls");printf("1.按書名查找 nnn");printf("2.按書號查找 n");scanf("%d",&v);s
19、witch(v)case 1 : find1(p0);break;case 2:find2(p0);break;default: ;void find1 (struct book *p0)system("cls");char name10;int flag=1;20struct book *p;p=p0->next;printf("請輸入要查找的書名: n");scanf("%s",&name);for(p=p0;p;p=p->next)if(strcmp(p->name,name)=0)printf(&qu
20、ot;nn圖書編號 -圖書名稱 - 作者 -出版社 -出版日期 - 單價 nn");printf(PT);flag=0;break;if(flag) printf("n暫無此圖書信息 n");/當(dāng) flag=1 時執(zhí)行g(shù)etch();void find2 (struct book *p0)system("cls");int num;int flag=1;struct book *p;p=p0->next;printf("請輸入要查找的書號: n");scanf("%d",&num);for(
21、p=p0;p;p=p->next)if(p->num=num)printf("nn圖書編號 -圖書名稱 - 作者 -出版社 -出版日期 - 單價 nn"); printf(PT);21flag=0;break;if(flag) printf("n暫無此圖書信息 n");getch();/* 刪除模塊 */void del(struct book *p0)system("cls");char name10;int flag=1;struct book *p;p=p0;printf("請輸入要刪除的書名: n&quo
22、t;);scanf("%s",name);while(p!=NULL)if(strcmp(p->name,name)=0)p0->next=p->next;/后續(xù)結(jié)點連接到前驅(qū)結(jié)點之后free(p);printf("t該書資料已刪除 .");flag=0;break;p0=p;p=p->next;if(flag)printf("nt無此圖書信息。 ");getch();22system("cls");/* 錄入模塊 */void insert(struct book *p0)struct b
23、ook *p;system("cls");p=(struct book *)malloc(N);while(1)printf("n請輸入要錄入的圖書編號( 書號 0 為退出 ): ");scanf("%d",&p->num);if(p->num!=0)if(p0->next!=NULL&&p0->next->num=p->num) /找到重號p=p->next;free(p);printf("t該書已存在 ");elseprintf("nn
24、 書名 作者 出版社 出版日期 單價 nnn"); scanf("%s%s%s%s%d",p->name,p->author,p->pub,p->where,&p->count); p->next=p0->next;p0->next=p;printf("t已成功錄入 .");elsebreak;23getch();system("cls");/* 修改模塊 */void modify(struct book *p0)system("cls");cha
25、r name10;int flag=1;int choice;struct book *p;p=p0->next;printf("請輸入要修改的書名: nn");scanf("%s",name);while(p!=NULL&&flag=1)if(strcmp(p->name,name)=0)printf("nt請選擇要修改的項: ");printf("nt1.修改圖書編號 n");printf("nt2.修改圖書出版日期 n");printf("nt3.修改
26、圖書作者 n");printf("nt4.修改圖書出版社 n");printf("nt5.修改圖書單價 n");scanf("%d",&choice);switch(choice)case 1: printf("n 請輸入新的圖書編號 :"); scanf("%d",p->num); break;24case 2: printf("n請輸入新的圖書出版日期:");scanf("%s",p->where); break;case
27、 3: printf("n請輸入新的圖書作者 :");scanf("%s",p->author); break;case 4: printf("n請輸入新的圖書出版社 :");scanf("%s",p->pub); break;case 5: printf("n請輸入新的圖書單價 :");scanf("%d",p->count); break;printf("nt該項已成功修改。 nt新的圖書信息: ");printf("nn圖
28、書編號 -圖書名稱 - 作者 -出版社 -出版日期 - 單價 nn");printf(PT);flag=0;p0=p;p=p0->next;if(flag)printf("nt暫無此圖書信息。 ");getch();system("cls");/* 讀文件 */struct book *read_file()int i=0;struct book *p,*p1,*head=NULL;25FILE *fp;if(fp=fopen("library.txt","rb")=NULL)/ 以只讀的方式打開文
29、件printf("nnt*庫文件不存在,請創(chuàng)建!*");getch();return NULL;head=(struct book *)malloc(N);p1=head;head->next=NULL;printf("n已有圖書信息: ");printf("nn圖書編號 -圖書名稱 - 作者 -出版社 -出版日期- 單價 nn"); while(!feof(fp)p=(struct book *)malloc(N);while(fscanf(fp,"%d%s%s%s%s%d",&p->num,
30、p->name,p->author,p->pub,p->where,&p->count)!=EOF)printf(PT);i+;p1->next=p;p1=p;p1->next=NULL;fclose(fp);printf("n共種 %d 圖書信息 ",i);printf("nnn文件中的信息以正確讀出。按任意鍵返回。");getch();system("cls");26return (head);/* 保存文件 */void save(struct book *head)FILE *
31、fp;struct book *p;fp=fopen("library.txt","wb");/以只寫方式打開二進(jìn)制文件if(fp=NULL)/打開文件失敗printf("n=>打開文件失敗 !n");getch();return ;elsefor(p=head->next;p!=NULL;p=p->next)fprintf(fp,"%d %s %s %s %s %dn",p->num,p->name,p->author,p->pub,p->where,p->count);fclose(fp);printf("nt保存文件成功 !n");void main()struct book *head=NULL;int choice=1;h
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021學(xué)年上海復(fù)旦附中高一(下)期中英語試題及答案
- 離思五首其一:古代詩詞情感解讀教案
- 小學(xué)演講活動方案
- 酒店承包經(jīng)營協(xié)議書
- 銀行貸款審批實務(wù)問題
- 公交公司售卡活動方案
- 公交開通活動方案
- 技術(shù)開發(fā)保密與成果共享協(xié)議條款修訂
- 公眾號贈書活動方案
- 敘事作文小家中的大道理400字11篇范文
- 2024屆江蘇省徐州市、南通市等2地高三第二次調(diào)研測試語文試題
- 智能化立體停車樓項目分析報告
- 超聲檢查健康宣教課件
- 廣西創(chuàng)業(yè)擔(dān)保貸款培訓(xùn)課件
- 2024屆江蘇省南京市聯(lián)合體數(shù)學(xué)七年級第二學(xué)期期末監(jiān)測試題含解析
- 《現(xiàn)場改善技巧》課件
- 國開電大《人文英語3》一平臺機(jī)考總題庫珍藏版
- 玻璃隔斷墻施工方案
- Python GUI設(shè)計:tkinter菜鳥編程
- 新家庭如何塑造人
- 2024屆新高考數(shù)學(xué)熱點沖刺復(fù)習(xí)“三新”背景下如何提高成績+以《數(shù)列》為例淺談教材使用
評論
0/150
提交評論