




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 報 告課程名稱 C語言程序設計 課題名稱 圖書借閱管理系統(tǒng) 專 業(yè) 機械設計 班 級 15機械二班 學 號 姓 名 指導教師 2016年 6 月 14日西安理工大學高科學院課 程 設 計 任 務 書課程名稱 C語言程序設計 課 題 圖書借閱管理系統(tǒng) 專業(yè)班級 網(wǎng)絡工程1002班 學生姓名 學 號 指導老師 唐北平、陳淑紅、譚小蘭審 批 任務書下達日期 2011 年 6 月20 日任務完成日期 2011 年 7 月 03 日一、設計內容與設計要求1設計內容:對一個有N本圖書的圖書館,通過該系統(tǒng)實現(xiàn)對該班級學生的基本信息進行錄入、顯示、修改、刪除、保存等操作的管理。(1)、本系統(tǒng)采
2、用一個包含N個數(shù)據(jù)的結構體數(shù)組,每個數(shù)據(jù)的結構應當包括:書號、書名、作者、出版社、出版日期、單價、是否借出等。(2)、本系統(tǒng)顯示這樣的菜單:a. 圖書基本信息錄入b. 圖書基本信息顯示c. 圖書基本信息刪除d. 圖書基本信息修改e. 圖書基本信息查詢(按書號查詢、書名等) g. 退出系統(tǒng)(3)、執(zhí)行一個具體的功能之后,程序將重新顯示菜單。2設計要求:掌握結構化程序設計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。1. 設計正確,方案合理。2. 界面友好,使用方便。3. 程序精煉,結構清晰。4. 設計報告5000字以上,含程序設計說明,
3、用戶使用說明,源程序清單及程序框圖。5. 上機演示。6. 按學號順序選課題號,并在規(guī)定的時間內獨自完成相關課題的C源程序編寫、調整和運行。源程序及編譯生成各文件均保存在軟盤中;7. 按本任務書的要求,按附錄的要求編寫課程設計報告(Word文檔格式)。并用A4的復印紙打印并裝訂; 二、進度安排第 十八 周 星期1 8時00分11時30分星期2 14時00分18時15分 星期3 8時00分11時30分 星期4 8時00分11時30分 第 十九 周 星期1 8時00分11時30分星期2 14時00分18時15分三、課程設計報告1.程序設計準備做系統(tǒng)前,首先,自己詳細看了C程序設計(教科書),基本自學
4、會了文件的相關內容,理解了相關函數(shù)的用法和作用;另,上網(wǎng)查詢了很多相關資料,還有找了很多相關的系統(tǒng),都詳細的看了一遍,加深了對C的理解以及對文件的相關內容進一步理解。學習了C語言的內容,圖書信息管理系統(tǒng)有助于C語言學習的進一步鞏固,在本系統(tǒng)可以增強對指針、文件、函數(shù)、結構體變量等基本知識的進一步理解。另外圖書信息管理系統(tǒng)也是學校常用的基本系統(tǒng)之一,它有助于學校對圖書館書籍的基本管理。2.程序設計說明根據(jù)題目要求,應當把圖書信息用結構體形式輸入,再定義一個全局變量和文件指針進行整個程序的運行,然后把圖書信息送到文件中去,所以應該提供下個結構體和文件的輸入等操作:在程序中需要實現(xiàn)圖書信息錄入,瀏覽
5、,查詢,刪除和修改等功能的操作,所以需要建立相應的模塊來實現(xiàn):另外還需提供選擇菜單實現(xiàn)功能,在運行時達到所要求的目的。3.程序的主要功能 圖書管理在生活中運用非常廣泛,因此需要用許多的程序來對它們進行管理。圖書借閱管理系統(tǒng)是對圖書信息的基本管理,它包括:圖書信息的錄入、圖書信息的顯示、圖書信息的刪除、圖書信息的修改、圖書信息的查詢。通過編譯一個C語言函數(shù),其中包含一個主函數(shù),多個子函數(shù),主函數(shù)調用其余的子函數(shù)實現(xiàn)人們能夠簡易、快捷的了解并找到自己所學要的信息的功能。1、圖書基本信息錄入:對新到圖書館的圖書的信息(編號、書名、出版社、作者、價格)進行錄入。2、圖書基本信息顯示:顯示已被錄入圖書的
6、所有信息。3、圖書基本信息刪除:通過輸入書名,判斷此圖書是否存在,若存在, 則刪除該圖書所有信息,若不存在則提示用戶重新輸入圖書書名。4、圖書基本信息修改:通過輸入書名,判斷此圖書是否存在,若不存在則提示用戶重新輸入圖書書名,若存在,則可對圖書各項信息進行修改。 5、圖書基本信息查詢:將所有圖書信息包括編號、書名、出版社、作者、價格等顯示在屏幕上。6、退出系統(tǒng):即退出圖書借閱管理系統(tǒng)。使用模塊化編程的方法每項功能有一個或多個函數(shù)組合來完成,其中菜單選項模塊對應如下: 圖書基本信息錄入= void insert() 圖書基本信息顯示= void print()圖書基本信息刪除= void del
7、() 圖書基本信息修改= void modify() 圖書基本信息查詢= void find()這份代碼中各個變量的定義如下: num 圖書編號 name 書名 author 作者 pub 出版社 where 出版日期 count 單價四.功能模塊的劃分1.主函數(shù)模塊根據(jù)圖書館信息管理系統(tǒng)的要求,可設計一個主函數(shù),及定義多個用戶自定義函數(shù)。在主函數(shù)中定義全局變量,即是在函數(shù)外部定義的變量,其不屬于某一個函數(shù),而屬于一個源程序文件,在整個程序內可以多次被引用。2.圖書基本信息顯示模塊 當用戶選擇圖書基本信息顯示時,程序會將所有圖書信息列出。3.圖書基本信息輸入模塊在程序開始運行,創(chuàng)建文件庫時,調
8、動此模塊,提示用戶輸入新的圖書編號(編號為0時結束輸入),然后繼續(xù)輸入圖書書名,作者,出版社,出版日期,單價等信息。結束輸入時提示用戶圖書輸入完成4.圖書基本信息查詢模塊用戶先選擇圖書查詢方式(按書名查找或按書號查找)輸入圖書書名或書號后,查找出該圖書是否存在,若存在,則顯示該圖書信息,若不存在則提示用戶無此圖書信息。 5.圖書基本信息刪除模塊用戶輸入所要刪除的圖書書名,先查找該圖書是否存在,若存在,則刪除該圖書所有信息,若不存在則提示無此圖書信息。 6.圖書基本信息錄入模塊首先輸入圖書錄入的編號(不為0)判斷是否有重復的編號,若有,則提示用戶該書已存在,若無則繼續(xù)錄入書名、作者、出版社、單價
9、。 7.圖書基本信息修改模塊用戶輸入要修改的書名,判斷該書是否存在,若不存在,則提示用戶無此圖書信息;若存在,則提示用戶選擇修改項目,然后提示用戶圖書信息修改完成。8.讀文件模塊 在運行該程序時,程序會自動檢測是否存在圖書信息,若存在,則會顯示圖書信息,若不存在,則會提示用戶創(chuàng)建文件庫,錄入圖書信息。9.文件保存模塊 當用戶對圖書信息有錄入,修改,刪除等操作時,程序會自動保存操作和新的圖書信息。五.主要功能的實現(xiàn) 程序運行流程:但每個模塊運行完即會回到主函數(shù),然后選擇其他或退出。六.程序調試1.第一次運行程序時,庫文件不存在圖書信息,于是錄入圖書信息。圖書編號書名作者出版社出版日期單價1英語張
10、三人民教育出版社2011.06302.主界面。3. 在主界面選擇1,開始錄入新的圖書信息。圖書編號書名作者出版社出版日期單價2數(shù)學李四高等教育出版社2011.06284. 在主界面選擇2,查詢圖書信息,按1或2分別選擇按書名或書號查詢。(以英語為例)選擇2,按書號查找,輸入書號:1,即可查詢圖書英語所有信息。選擇1,按書名查找,輸入書名:英語,即可獲得圖書英語所有信息。5.在主界面選擇3,對圖書資料進行刪除(以數(shù)學為例),在后續(xù)圖書信息顯示時無數(shù)學圖書信息。6.在主界面選擇4,對圖書進行修改(以英語為例,修改圖書作者,將作者更換為王五),在后續(xù)圖書基本信息顯示時,作者不將是張三,而是王五。7.
11、在主界面選擇5,圖書基本信息顯示,此時圖書信息經(jīng)過刪除和修改,和初始信息不同。七.總結通過為期一周的課程設計,對C語言這門課程有了更深一步的了解。它是計算機程序設計的重要理論技術基礎,在我們網(wǎng)絡工程專業(yè)的學習中占據(jù)著十分重要的地位。自己C語言編程的能力有了提高,特別是在文件、指針、數(shù)組、函數(shù)和結構體方面有了很大提高,另外還學習了課本沒有講到的知識,學會了使用模塊化編程的簡單方法,另外在對話框的編程要求美觀、方面也有了體會。循環(huán)是C語言的重要方法,也是本程序的靈魂,它在本程序中既有“穿針引線”的作用,也起到了對數(shù)據(jù)進行分析、存貯、讀取等重要的作用,本程序在使用循環(huán)過程中對循環(huán)進行了多方法的應用也
12、是一個“亮點”,它使程序變得結構合理,通俗易懂,也降低了程序的難度。以后要對這種方法進行深刻的體會。數(shù)組在程序中有著很重要的作用,對數(shù)據(jù)的貯存、輸入、讀取起著很重要的作用,本程序幾乎所有數(shù)據(jù)都以數(shù)組進行輸入、貯存、讀取方便了對數(shù)據(jù)的處理和輸入,數(shù)組的的使用在本程序中有很大的好處。 函數(shù)是實現(xiàn)模塊化編程的基礎,它使程序變得方面易懂,對修改起了很大作用,降低了編程的難度,一個函數(shù)就是一個功能,它使各個功能之間有了一定的獨立性,但也有了一定的聯(lián)系性,一個函數(shù)的錯誤,不會導致整個程序的失敗(主函數(shù)除外),對函數(shù)的良好應用時在本程序中又以深刻的體會,有了很大提高。結構體的使用,為本程序提供了很大方便,也
13、提高了程序的可讀性,結構數(shù)組方便了對數(shù)據(jù)的管理。 這個程序的結構大體是從網(wǎng)絡上借鑒的,但是大部分功能模塊與任務要求不同,只能自己修改,最后終于調試通過,同時也使我們知道,要學好這門課程,僅學習書本上的知識是不夠的,還要有較強的實踐能力。因為我們學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。同時提高了自己對編程的興趣,使自己對編程有了更深的理解,體會到編程的樂趣。八附件原代碼清單及注釋#include #include #include #include #define N sizeof(struct book)#define PT %-5d %10s %6s
14、 %6s %8s %3d n,p-num,p-name,p-author,p-pub,p-where,p-countstruct book /*圖書信息*/ int num; /*書號*/ char name10; /*書名*/ char where10; /*出版日期*/ char author15; /*作者*/ char pub20; /*出版社*/ int count; /*單價*/ struct book *next;void find1 (struct book *p0);void find2 (struct book *p0);/*輸出模塊*/void print(struct
15、book *p0) struct book *p; system(cls); p=p0-next; printf(nn圖書信息表); printf(nn圖書編號-圖書名稱-作者-出版社-出版日期-單價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);/分配新的內存給p2 head-next=NULL; pri
16、ntf(nntt錄入圖書信息); printf(n-); while(1) p1=(struct book *)malloc(N); printf(n 請輸入圖書編號(書號0為結束): ); 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+; else break; p2-next=NULL; free(p1); printf(n-); print
17、f(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); switch(v) case 1 : find1(p0);break; case 2:find2(p0);break; default: ; void find1 (struct book *p0) system(cls); char name10; int flag=1; st
18、ruct book *p; p=p0-next; printf(請輸入要查找的書名:n); scanf(%s,&name); for(p=p0;p;p=p-next) if(strcmp(p-name,name)=0) printf(nn圖書編號-圖書名稱-作者-出版社-出版日期-單價nn); printf(PT); flag=0; break; if(flag) printf(n 暫無此圖書信息n);/當flag=1時執(zhí)行 getch(); void find2 (struct book *p0) system(cls); int num; int flag=1; struct book *
19、p; p=p0-next; printf(請輸入要查找的書號:n); scanf(%d,&num); for(p=p0;p;p=p-next) if(p-num=num) printf(nn圖書編號-圖書名稱-作者-出版社-出版日期-單價nn); printf(PT); flag=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
20、); scanf(%s,name); while(p!=NULL) if(strcmp(p-name,name)=0) p0-next=p-next; /后續(xù)結點連接到前驅結點之后 free(p); printf(t該書資料已刪除.); flag=0; break; p0=p; p=p-next; if(flag) printf(nt無此圖書信息。); getch(); system(cls); /*錄入模塊*/void insert(struct book *p0) struct book *p; system(cls); p=(struct book *)malloc(N); while(
21、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該書已存在); else printf(nn書名 作者 出版社 出版日期 單價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已成功錄入.); else break; getch
22、(); system(cls);/*修改模塊*/void modify(struct book *p0) system(cls); char 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(nt 1.修改圖書編號n); printf(nt 2.修改圖書出版日期n); printf(nt 3.修改圖書作
23、者n); printf(nt 4.修改圖書出版社n); printf(nt 5.修改圖書單價n); scanf(%d,&choice); switch(choice) case 1: printf(n 請輸入新的圖書編號:); scanf(%d,p-num); break; case 2: printf(n 請輸入新的圖書出版日期:); scanf(%s,p-where); break; case 3: printf(n 請輸入新的圖書作者:); scanf(%s,p-author); break; case 4: printf(n 請輸入新的圖書出版社:); scanf(%s,p-pub);
24、 break; case 5: printf(n 請輸入新的圖書單價:); scanf(%d,p-count); break; printf(nt該項已成功修改。nt 新的圖書信息:); printf(nn圖書編號-圖書名稱-作者-出版社-出版日期-單價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; FILE *fp;
25、 if(fp=fopen(library.txt,rb)=NULL)/以只讀的方式打開文件 printf(nn t*庫文件不存在,請創(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,p-name,p-aut
26、hor,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); return (head); /*保存文件*/void save(struct book *head) FILE *fp; struct book *p; fp=fopen(library.txt,wb); /以只寫方式打開二進制文件 if(fp=NULL) /打開文件失敗 printf(n=打開文件失敗!n); getch(); return ; else for(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 cho
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級教師線上教學總結
- 廠區(qū)電子合同范本
- 勞務磚體合同范本
- 印刷廣告標牌合同范本
- 企業(yè)員工股合同范本
- 《韓愈短文》教案
- 合買別墅合同范本
- 《這片土地是神圣的》說課稿
- 《觀滄海》閱讀答案及鑒賞
- 任務目標認購合同范例
- 2024-2030年中國小黃姜行業(yè)盈利模式與投資策略分析報告
- 職業(yè)技術學院攝影攝像技術專業(yè)人才培養(yǎng)方案
- 心房顫動診斷和治療中國指南(2023) 解讀
- 常見急危重癥的快速識別要點與處理技巧課件
- 耳鼻咽喉科中級職稱(主治醫(yī)師)考試重點
- 高危妊娠及五色管理課件
- 《 大學生軍事理論教程》全套教學課件
- 三年級數(shù)學下冊一兩位數(shù)乘兩位數(shù)的乘法2問題解決作業(yè)課件西師大版
- 家校溝通經(jīng)驗分享-溝通有方法教育有溫度
- 2024年福建省廈門市翔安區(qū)殘疾人聯(lián)合會招聘殘疾人工作聯(lián)絡員29人歷年重點基礎提升難、易點模擬試題(共500題)附帶答案詳解
- 幼兒園家長會疾病預防
評論
0/150
提交評論