C語言課程設計(力學實驗設備管理系統(tǒng))_第1頁
C語言課程設計(力學實驗設備管理系統(tǒng))_第2頁
C語言課程設計(力學實驗設備管理系統(tǒng))_第3頁
C語言課程設計(力學實驗設備管理系統(tǒng))_第4頁
C語言課程設計(力學實驗設備管理系統(tǒng))_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設計基礎課程設計課題名稱 力學實驗設備管理系統(tǒng)設計 專 業(yè) 班 級 姓 名 學 號 指導教師 陳世基 2012年 06 月 12 日目錄第1章 設計目的 .1第2章 總體設計2第3章 詳細設計5第4章 調(diào)試與測試15第5章 總結(jié)與體會19參考文獻 . 20附:源程序清單和執(zhí)行結(jié)果.21第1章 設計目的本次C語言課程設計是對本學期程序設計基礎課程的實際應用,通過課程設計主要達到如下目的:1. 鞏固和加深對C語言課程的基本知識的理解和掌握。2. 掌握C語言編程和程序調(diào)試的基本技能。 3. 利用C語言進行基本的軟件設計。 4. 掌握書寫程序設計說明文檔的能力。 5. 提高運用C語言解決實際問題的

2、能力。第2章 總體設計2.1力學實驗設備管理系統(tǒng)的要求通過該系統(tǒng)實現(xiàn)對力學實驗設備信息進行錄入、修改、統(tǒng)計、查詢、保存等操作的管理。實驗設備信息包括:設備編號,設備種類,設備名稱(如燒杯、酒精燈等),設備價格,設備購入日期,是否報廢,報廢日期等。主要功能:1)、能夠完成對設備的錄入和修改2)、對設備進行分類統(tǒng)計3)、設備的破損耗費和遺損處理4)、設備的查詢5)、將設備信息保存到文件中2.2流程圖根據(jù)設計要求,畫出如下流程圖:開 始 菜 單 1錄入2顯示3修改4刪除5查詢6.退出a.名稱b.編號結(jié) 束2.3設置的主要函數(shù)void userinterface()/*菜單函數(shù)*/void showa

3、ll()/*顯示*/void add()/*增加成員*/void delet()/*刪除*/void find()/*查找*/void findchoice(int a) /*選擇查找方式函數(shù)*/void modify()/*修改信息*/void save()/*把信息保存到磁盤*/void esc()/*退出*/void choices()/*為下一步操作做選擇*/void load()/*讀數(shù)據(jù)*/第2章 詳細設計3.1函數(shù)以及調(diào)用關(guān)系void userinterface()/*菜單函數(shù)*/開始添加記錄查找記錄顯示記錄刪除記錄修改記錄結(jié)束Menu_select退出保存 1 2 3 4 5

4、6 Break Break Break Break Break break void showall();/*顯示函數(shù)*/開始調(diào)用save( )head=NULL = =N NNNNNNNNNULL NULL NULLhhhhhead hhhhhead=NULL顯示信息 真 假 真退出結(jié)束void add()/*增加設備函數(shù)*/ 開始 輸入編號Record=0 假 真輸入數(shù)據(jù)( 名稱、種類、價格、購買日期、報廢日期、是否報廢)繼續(xù)添加結(jié)束 void delet()/*刪除函數(shù)*/ 開始 輸入要刪除學生學號 輸入numNum=!0 真 假刪除成功Choices()結(jié) 束void find()/*

5、查找函數(shù)*開始按名稱查找按種類查找按編號查找 判斷顯示要查找內(nèi)容沒有找到退 出 void findchoice() 真 假 void modify()/*修改信息函數(shù)*/ 開始 輸入編號Record=0 假 真輸入數(shù)據(jù)( 新的名稱、種類、價格、購買日期、報廢日期、是否報廢)結(jié)束void save();/*把信息保存到磁盤*/退 出關(guān)閉文件開始打開文件數(shù)據(jù)寫入文件void load();/*讀數(shù)據(jù)*/開始關(guān)閉文件讀出數(shù)據(jù)打開文件退 出3.2結(jié)構(gòu)的應用Ifelse結(jié)構(gòu)if(strcmp(passwords,b)!=0) printf(r口令錯誤,按任意鍵繼續(xù)); else break;switch

6、結(jié)構(gòu)switch(choice) case 1:add();break; case 2:system(cls);find();break; case 3:system(cls);showall();break; case 4:system(cls);delet();break; case 5:system(cls);modify();break;case 0:system(cls);esc();while結(jié)構(gòu)while(stu-record!=0) head=insert(head,stu);printf(nntt*添加成功*!n);stu=(struct addbook*)malloc(LE

7、N);printf(nnttt當輸入的設備編號為0時,停止添加!);printf(ntt請輸入編號:);scanf(%d,&stu-record);getchar();/*用來接受scanf里輸入的回車符號*/printf(ntt請輸入名稱:);gets(stu-name);printf(ntt請輸入種類:);gets(stu-kind);printf(ntt請輸入價格:);gets(stu-price);printf(ntt請輸入購買日期(如):);scanf(%ld,&stu-purtime); getchar();printf(ntt請輸入報廢日期(如):);scanf(%ld,&stu

8、-scrtime); getchar(); printf(ntt請輸入是否報廢(S或F):);gets(stu-scrap);stu-next = NULL;dowhile結(jié)構(gòu)doprintf(%-8d%-8s%-8s%-8s%ld %ldtt%-8sn,s-record,s-name,s-kind,s-price,s-purtime,s-scrtime,s-scrap); s = s-next; while(s!=NULL);LP:choices();for結(jié)構(gòu)for(j=0;jstrlen(b);j+) passwordsj=getch(); printf(*); 第4章 調(diào)試與測試4.1

9、調(diào)試執(zhí)行程序時,顯示如下信息:輸入一組數(shù)據(jù)后,顯示菜單:選擇不同的選項,執(zhí)行相應的功能。選擇1,添加設備信息。選擇2查找設備信息,可按三種方式查找。3.1.5選擇3,可顯示信息。選擇4,刪除設備信息。選擇5,修改設備信息。選擇0,保存并退出。4.2測試及其解決問題在測試過程中,關(guān)于購買日期和報廢日期,輸入正常,顯示則成了亂碼,經(jīng)過仔細檢查發(fā)現(xiàn)在定義變量的出現(xiàn)了問題,及時改正。另外由于疏忽,沒有將密碼函數(shù)鏈接到主函數(shù)中,使得密碼功能沒有體現(xiàn),及時調(diào)整。顯示內(nèi)容與表頭進行調(diào)整對齊,由于顯示函數(shù)和查找函數(shù)都有顯示功能,需要同時調(diào)整。第5章 總結(jié)與體會這一次課程設計可謂是讓我焦頭爛額,手足無措啊。因為

10、我們在大一的時候并沒有學過C語言這一門課程,這學期才開始接觸這門課程,讓我們設計一個無懈可擊的程序簡直比登天還難。剛開始感覺確實有點力不從心,但是經(jīng)過幾天的學習、摸索,我的程序也終于初具雛形了,我別提有多高興。雖然在許多的功能方面有所欠缺,但是我覺得我是在進步的。經(jīng)過幾天的上機實踐學習,給我的不只是疲憊更多的是收獲。課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術(shù)發(fā)展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學生來說掌握計算機開發(fā)技術(shù)是十分重要的。在課程設計過程中

11、,我學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經(jīng)編輯成功,那么這最后的程序就將是我成功的關(guān)鍵。老天不會讓我太過順利,他在這最后的時刻設置的障礙,是要考驗我的能力,他要置我于死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那么我怎么能說經(jīng)受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,

12、黃天不負有心人,我的程序設計終于得以問世。 課程設計到此算是基本結(jié)束,在程序設計中暴露出的我自身的問題卻是非常明顯! 首先,基礎掌握不牢固。許多基本語法尚沒有熟練掌握,在設計過程中仍需請教其它同學,更重要研究課本,設計效率底。 其次,經(jīng)典算法掌握不牢。在編寫程序的時候常常會停下來求助于書本,查看各種算法。再次,程序量過大的時候,頭緒理不清。雜亂無章,無系統(tǒng)性,不便調(diào)試和閱覽,自己也易于出錯。比如說少加分號,大括號,忘了先定義后使用的原則。 回顧這一周,我感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所

13、沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,函數(shù),算法通過這次課程設計之后,我們把前面所學過的知識又重新溫故了一遍。 在程序已經(jīng)初步寫成的時候,心情很激動也很緊張,在沒有進行測試之前心還是放不下來。剛進行測試,檢查沒有錯誤

14、,可執(zhí)行起來卻出現(xiàn)了很大的問題。首先是程序不具有存儲功能,顯示亂碼,再就是密碼功能沒有實現(xiàn)。經(jīng)過一遍又一遍仔細檢查終于意義解決。當程序完全運行成功的時候,那種喜悅感死無法用言語來形容的。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在陳老師的辛勤指導下,終于游逆而解。同時,在陳老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和指導老師再次表示忠心的感謝!參考文獻【1】譚浩強,張基溫。C語言程序設計教程。第三版。北京:高等教育出版社,2006【2】譚浩強,張基溫。C語言習題集與上機指導。第三版。北京:高等教育出版社,2006【3】譚浩強。C程序設計(第

15、三版)。北京:清華大學,2005【4】譚浩強。C程序設計(第二版)。北京:清華大學,1999附:源程序清單和執(zhí)行結(jié)果#include#include#include#include#include#include#define LEN sizeof(struct addbook)struct addbookint record;/*編號*/char name15;/*名稱*/char kind5;/*種類*/char price8;/*價格*/ unsigned long purtime;/*購買日期*/unsigned long scrtime;/*報廢日期*/ char scrap6; /

16、*是否報廢*/struct addbook *next;/*指向結(jié)構(gòu)體數(shù)據(jù)類型的指針*/;FILE *fp;struct addbook *p,*head=NULL,*s,*t,*p1,*p2;void userinterface();/*菜單函數(shù)*/void showall();/*顯示*/void add();/*增加設備*/void delet();/*刪除*/void find();/*查找*/void findchoice(int a); /*選擇查找方式函數(shù)*/void modify();/*修改信息*/void save();/*把信息保存到磁盤*/void esc();/*退出

17、*/void choices();/*為下一步操作做選擇*/void load();/*讀數(shù)據(jù)*/struct addbook *del(struct addbook *head,int num);/*鏈表結(jié)點的刪除*/struct addbook *insert(struct addbook*head,struct addbook *stud);/*鏈表中結(jié)點的插入,stud為要插入的結(jié)點的指針*/void starwindows() system(color 1f); static char passwords80,b=123; int i=0,j; while(1) printf(請輸入

18、密碼nn); for(j=0;jrecord);getchar();/*用來接受scaf里輸入的回車符號*/printf(ntt請輸入名稱:);gets(p-name);printf(ntt請輸入種類:);gets(p-kind);printf(ntt請輸入價格:);gets(p-price);printf(ntt請輸入購買日期(如):);scanf(%ld,&p-purtime); getchar();printf(ntt請輸入報廢日期(如):);scanf(%ld,&p-scrtime); getchar(); printf(ntt請輸入是否報廢(S或F):);gets(p-scrap);

19、p-next = NULL;head = p;fwrite(p,LEN,1,fp);/*將信息寫入磁盤*/fclose(fp);printf(nttt添加成功!n);printf(nntt!要進行別的操作,請重新打開程序!n);exit(0);rewind(fp); /* 重建文件指針 */n=0;p1=p2 = (struct addbook*)malloc(LEN);fread(p1,LEN,1,fp);/*讀出文件中的信息*/head = NULL; while(!feof(fp)n=n+1;if(n=1) head = p1;else p2-next = p1;p2=p1; p1 =

20、(struct addbook*)malloc(LEN); fread(p1,LEN,1,fp);p2-next=NULL; fclose(fp);userinterface();save();void userinterface() int choice; printf(ntt *n); printf(ttt 歡迎使用力學實驗設備管理系統(tǒng) ); printf(ntt *n); printf(nnt *請選擇你的操作*n); printf(ttt +-+); printf(tttttt | 1 增加設備信息 |n); printf(ttt | 2 查找設備信息 |n); printf(ttt

21、| 3 顯示所有信息 |n); printf(ttt | 4 刪除設備信息 |n); printf(ttt | 5 修改設備信息 |n); printf(ttt | 0 退出和保存 |n); printf(ttt +-+n); printf(nnttttttt制作:蔣美幸nnn); Loop1:printf(請輸入您的選擇:(0-5):); scanf(%d,&choice);getchar();if(choice=0&choicerecord); getchar();/*用來接受scanf里輸入的回車符號*/printf(ntt請輸入名稱:);gets(stu-name);printf(nt

22、t請輸入種類:);gets(stu-kind);printf(ntt請輸入價格:);gets(stu-price);printf(ntt請輸入購買日期(如):); scanf(%ld,&stu-purtime);getchar();printf(ntt請輸入報廢日期(如):);scanf(%ld,&stu-scrtime); getchar(); printf(ntt請輸入是否報廢(S或F):);gets(stu-scrap);stu-next = NULL;while(stu-record!=0) head=insert(head,stu);printf(nntt*添加成功*!n);stu=

23、(struct addbook*)malloc(LEN);printf(nnttt當輸入的設備編號為0時,停止添加!);printf(ntt請輸入編號:);scanf(%d,&stu-record);getchar();/*用來接受scanf里輸入的回車符號*/printf(ntt請輸入名稱:);gets(stu-name);printf(ntt請輸入種類:);gets(stu-kind);printf(ntt請輸入價格:);gets(stu-price);printf(ntt請輸入購買日期(如):);scanf(%ld,&stu-purtime); getchar();printf(ntt請

24、輸入報廢日期(如):);scanf(%ld,&stu-scrtime); getchar(); printf(ntt請輸入是否報廢(S或F):);gets(stu-scrap);stu-next = NULL;printf(nnttt添加結(jié)束!n);choices();void find() int i;printf(ntt請選擇查找方式:n);printf(tt1.按編號查找。n);printf(tt2.按名稱查找。n);printf(tt3.按種類查找。n);printf(tt4.返回菜單。n);printf(tt0.退出。n);printf(nnt*請輸入您的選擇*n);scanf(%d

25、,&i);getchar();if(i=0&irecord,s-name,s-kind,s-price,s-purtime,s-scrtime,s-scrap); s = s-next; while(s!=NULL);LP:choices();void delet() /* 刪除函數(shù) */int num;printf(nn請輸入要刪除的設備編號。當輸入編號為0時停止刪除操作。n);scanf(%d,&num);getchar();while(num!=0)head=del(head,num);printf(nn請輸入要刪除的設備編號。當輸入編號為0時停止刪除操作。n);scanf(%d,&nu

26、m);getchar();printf(nntt*刪除結(jié)束*n);choices();void modify() /* 修改函數(shù) */int num;printf(請輸入要修改的設備編號n);scanf(%d,&num);getchar();p=head;doif(p-record=num ) if(p-next=NULL) printf(找不到該編號的設備,請確認無誤以后再重新輸入。n); else printf(ntt請輸入新的名稱:);gets(p-name);printf(ntt請輸入新的種類:);gets(p-kind);printf(ntt請輸入新的價格:);gets(p-pric

27、e);printf(ntt請輸入新的購買日期(如):);scanf(%ld,&p-purtime);getchar();printf(ntt請輸入新的報廢日期(如):);scanf(%ld,&p-scrtime);getchar(); printf(ntt請輸入是否報廢(S或F):);gets(p-scrap);printf(ntt修改成功!n);choices();else p=p-next;while(p!=NULL);printf(tt!沒有這個編號的信息,請核對后再輸入!nn);choices();void esc() save();printf(nnnttt 謝謝使用本力學實驗設備管

28、理系統(tǒng)!n);exit(0);struct addbook *del(struct addbook *head,int num)/*鏈表結(jié)點刪除*/struct addbook *h1,*h2;if(head=NULL) printf(鏈表為空鏈表。n);goto Loop;h1=head;while(num!=h1-record&h1-next!=NULL)/*p1指向的不是要刪除的結(jié)點,并且后面還有結(jié)點。*/h2=h1;h1=h1-next;/*p1后移一個結(jié)點*/if(num=h1-record)/*找到了*/if(h1=head) printf(nnntt這是遮里最后一個信息,不能刪除

29、!nnt如果你真的要刪除此信息,請?zhí)砑悠渌畔⒁院笤賱h除.nn);goto Loop;/*這是p1是首結(jié)點的情況*/else h2-next=h1-next;printf(nntt*刪除成功*!n);/*否則將下一結(jié)點的地址賦給前一結(jié)點地址*/else printf(nntt找不到該結(jié)點。n);Loop:return(head);struct addbook *insert(struct addbook*head,struct addbook *stud)/*結(jié)點插入,插入時是按編號大小插入*/struct addbook *g0,*g1,*g2;g1=head;g0=stud;if(head

30、=NULL)/*原來的鏈表是空表*/head=g0;g0-next=NULL;/*使p0指向的結(jié)點作為頭結(jié)點*/elsewhile(g0-recordg1-record&g1-next!=NULL)g2=g1;g1=g1-next;/*p1后移一個結(jié)點*/if(g0-record=g1-record)printf(nttt編號重復!請核對后再輸入!nn);choices();else;if(g0-recordrecord)if(head=g1) head=g0;/*插到原來第一個結(jié)點之前*/else g2-next=g0;/*插到p2指向的結(jié)點之后*/g0-next=g1;elseg1-next=g0;g0-next=NULL;/*插到最后的結(jié)點后*/return(head);void save()/*保存文件*/fp=fopen(ghps.txt,w); s = head; do fwrite(s,LEN,1,fp); s = s-next; while(s!=NULL);fclose(fp);void findchoice(int a)int num,j=0,i=0;char findname120;char findname220;t=head;if(a=1)printf(nntt請輸入要查找的編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論