版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
/
引言通過大一下學(xué)期對C語言的學(xué)習(xí),了解到了很多C語言的相關(guān)學(xué)問。學(xué)習(xí)的過程有很多困惑但是當(dāng)自己能夠獨立的看懂,能夠獨立的完成一個簡潔的程序時,心中就會收獲無限的喜悅和成就感。我可以看懂一些簡潔的程序,編寫一些簡潔的程序,更多的是學(xué)會了一種思想——編程,它讓我去思索很多日常生活中的事物是怎樣通過一個個小小的函數(shù)實現(xiàn)其功能的,激發(fā)我探究的愛好,更讓我細(xì)致學(xué)習(xí)C語言的程序設(shè)計。C語言是在國內(nèi)外廣泛運用的一種計算機語言。C語言簡潔緊湊、運用靈敏便利、運算符豐富、適用范圍大、可移植性好。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為系統(tǒng)設(shè)計語言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依靠計算機硬件的應(yīng)用程序。在這次的課程設(shè)計中我將通過親自設(shè)計程序,讓自己熟悉C語言操作,更嫻熟的駕馭C語句。初步體會編程的過程,在不斷的調(diào)試中獲得最為完整的程序,為將來的程序深化學(xué)習(xí)打下基礎(chǔ)和培育愛好。1功能簡介和設(shè)計要求1.1
程序功能簡介可以向文件中錄入、刪除、添加、查詢職工信息,也可以從文件中導(dǎo)出來閱讀1.2
程序設(shè)計要求職工信息包括職工號、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號不重復(fù))。試設(shè)計職工信息管理系統(tǒng),使之能供應(yīng)以下功能:系統(tǒng)以菜單方式工作職工信息錄入功能(職工信息用文件保存)--輸入職工信息閱讀功能
--輸出查詢信息功能:(至少一種查詢方式)
--算法
按職工號查詢
按學(xué)歷查詢按電話查詢職工信息刪除、添加功能2程序總體設(shè)計框圖輸入函數(shù):用鍵盤輸入職工信息輸入函數(shù)寫入函數(shù) :將信息寫入指定文本文件寫入函數(shù)導(dǎo)出函數(shù):將信息導(dǎo)出放在結(jié)構(gòu)數(shù)組em中導(dǎo)出函數(shù)閱讀函數(shù):將全部閱讀函數(shù)按職工號查詢:輸入職工號顯示信息按職工號查詢顯示主菜單查詢函數(shù)按電話查詢:輸入名字顯示顯示主菜單查詢函數(shù)按電話查詢按學(xué)歷查詢:輸入學(xué)歷顯示信息按學(xué)歷查詢刪除函數(shù) :刪除原有的職工信息刪除函數(shù)添加函數(shù) :添加新的職工信息添加函數(shù)3主要函數(shù)介紹
主函數(shù):main()顯示系統(tǒng)工作菜單,排列該系統(tǒng)全部功能。先聲明全部將會調(diào)用到的函數(shù)名。再運用選擇函數(shù)switch即可依據(jù)運用者所輸入的功能代號進入對應(yīng)的功能程序。亮點:定義一個全局變量*p和全局變量a。其中a表示當(dāng)前系統(tǒng)中職工人數(shù),p指向a的地址,追蹤人數(shù)變更,這樣在添加或者刪除導(dǎo)致人數(shù)變更后,閱讀函數(shù)display()能夠正確顯示出當(dāng)前人數(shù)的職工信息。宏定義define
N指定首次輸入的職工人數(shù),可依據(jù)不同須要隨時更改。
顯示菜單起先顯示菜單起先輸入功能代碼輸入功能代碼switch(n)n=1n=2n=3n=4n=5default退出Exit(0)調(diào)用添加函數(shù)Add()調(diào)用查詢函數(shù)退出Exit(0)調(diào)用添加函數(shù)Add()調(diào)用查詢函數(shù)Search()調(diào)用刪除函數(shù)Del調(diào)用閱讀函數(shù)Display()調(diào)用輸入函數(shù)Input()結(jié)束結(jié)束輸入函數(shù):voidinput()定義一個結(jié)構(gòu)structemployee和數(shù)組em【N】用來儲存N個職工的全部信息(職工號em【i】number、姓名em【i】name、性別em【i】sex、年齡em【i】age、學(xué)歷em【i】xueli、工資em【i】wage、住址em【i】address、電話em【i】telephone)。通過for循環(huán)輸入全部職工信息。用printf語句提示須要輸入的內(nèi)容,接著用scanf語句輸入相應(yīng)內(nèi)容。輸入完畢后套用保存函數(shù)save(N)將所輸入的信息寫入指定文件。起先起先i=1i=1Printf(“創(chuàng)建完畢”)結(jié)束i++Printf(“提示須要輸入的內(nèi)容”)Scanf(“輸入信息”)i<n
=0Printf(“創(chuàng)建完畢”)結(jié)束i++Printf(“提示須要輸入的內(nèi)容”)Scanf(“輸入信息”)i<n!=0
保存函數(shù):void
save(int
m)定義文件指針fp,用fopen"只寫"打開指定在D盤的“”文本文件。首先用if語句推斷文件是否打開成功,若fopen返回值不為0,則可接著下面操作。用for循環(huán)通過fprintf語句將結(jié)構(gòu)數(shù)組em中的內(nèi)容寫入保存在D盤的文本文件里面。形參m指須要寫入文件的職工人數(shù)。最終關(guān)閉文件。起先起先fopen(“fopen(“d:\\bbb.txt”,“w”)exitexit =0Printf寫入文件i<mi=0
!=0Printf寫入文件i<mi=0 =0結(jié)束fclose(fp)i++!=0結(jié)束fclose(fp)i++
導(dǎo)出函數(shù):void
load(int
b)
首先推斷fopen"只讀"打開“”是否成功,若其返回值不為零,接著下面操作。用for循環(huán)通過fscanf語句將文件中的職工信息取出放到em結(jié)構(gòu)數(shù)組里面。形參b指須要導(dǎo)出的職工人數(shù)。最終關(guān)閉文件。
圖同上。
4功能模塊函數(shù)設(shè)計和調(diào)試4.1功能模塊函數(shù)設(shè)計在整個程序的編譯過程中,在調(diào)試的時候出現(xiàn)了好多的錯誤和警告,經(jīng)過細(xì)致的分析和修改都可以解決,但是其中遇到最大的問題是全部程序代碼編完放在一起后,雖然能夠成功運行,但是還是出現(xiàn)了一些小問題,就是在調(diào)用隨機支配函數(shù)時職工的工號不隨機支配,每次到了自動支配工號的時候都會跳過那一步就干脆進行下一環(huán)節(jié)輸入了。這使我百思不得其解,后來我在網(wǎng)上查詢了好多資料后最終明白了,原來在運用隨機支配函數(shù)時首先要調(diào)用隨機支配函數(shù)所在的函數(shù)庫,這樣才能夠正常運用。運用時假如職工人數(shù)發(fā)生變更,會導(dǎo)致文件后部出現(xiàn)亂碼的現(xiàn)象。若要使每次運行都正常,必需在人數(shù)變更后退出程序,修改宏定義N的值。這樣很不便利,不能夠連續(xù)運行。為解決這一大問題,最終我想到了定義一個全局變量,用來追蹤鏈接最新的人數(shù)。特別是刪除和添加這兩個會導(dǎo)致人數(shù)變更的函數(shù)中,全局變量p起了很大作用。經(jīng)過一邊修改一邊調(diào)試,最終可以成功的用p串聯(lián)整個函數(shù),在連續(xù)運行時,總能依據(jù)最新的人數(shù)調(diào)用各個函數(shù)。另外在串聯(lián)全部函數(shù)時,調(diào)試提示出錯:有以下幾個函數(shù):“search;srand;display;basic;types”解決:在函數(shù)名前加void指明類型。整個程序代碼是分塊書寫的,每個函數(shù)都可以獨立運行。只有輸入函數(shù)查詢菜單函數(shù)寫得很順當(dāng),一次性就能夠成功運行,其他函數(shù)在調(diào)試過程中或多或少都出現(xiàn)了問題。保存函數(shù)save()在調(diào)試和鏈接的時候都沒有出現(xiàn)錯誤提示,但在運行的時候出現(xiàn)了問題。寫入指定位置的文件,打開后總會有亂碼。和c語言課本上的例題比照后發(fā)覺,在存儲文件時確定要指定文件的存儲類型。這樣才能夠正確的進行存儲,不會出現(xiàn)亂碼的現(xiàn)象。導(dǎo)出函數(shù)load()遇到兩個問題。1是為便利干脆將保存函數(shù)復(fù)制過來進行修改時,忘了修改文件的打開方式,不能運行。經(jīng)過多次檢查后最終發(fā)覺了,解決:將只寫改為只讀就ok了。2是用fscanf語句時,漏寫地址符。調(diào)試和鏈接都沒問題,但點擊運行后,總出現(xiàn)一個提示出錯的藍色小窗口。經(jīng)過老師的提示發(fā)覺了錯誤的所在。解決方法:在em[i].name等之前加上取地址符就可以解決。在進行職工信息錄入的時候確定要留意中文和英文之間的切換,不然的話會出現(xiàn)無法正確的輸入和跳轉(zhuǎn)現(xiàn)象。4.2程序調(diào)試4.2.1原始數(shù)據(jù){intnum;charname[10];charsex;intage;charxueli[30];intwage;charaddr[30];longinttel;}em[100];/*定義一個結(jié)構(gòu)體*/voidmenu();voidinput();voidsave(int);voiddisplay();voiddel();voidadd();voidsearch();voidsearch_num();voidsearch_xueli();voidsearch_tel();voidmodify();/*定義各函數(shù)*/voidmenu()/*菜單函數(shù)*/{printf("☆☆☆C語言程序設(shè)計☆☆☆\n");printf("\n");printf("∮機設(shè)1401班張凱凱∮\n");printf("\n");printf("**********職工信息管理**********\n");printf("1.錄入職工信息");printf("2.閱讀職工信息\n");printf("3.查詢職工信息");printf("4.刪除職工信息\n");printf("5.添加職工信息");printf("6.修改職工信息\n");printf("7.退出\n");printf("**********感謝運用**********\n");printf("\n");printf("\n");}voidmain(){menu();/*調(diào)用菜單函數(shù)*/intn,flag;chara;do{printf("請選擇你須要操作的步驟(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您輸入有誤,請重新選擇!");}}while(flag==0);while(flag==1){switch(n){case1:printf("◆◆◆輸入職工信息◆◆◆\n");printf("\n");input();break;case2:printf("◆◆◆閱讀職工信息◆◆◆\n");printf("\n");display();break;case3:printf("◆◆◆按職工號查詢職工信息◆◆◆\n");printf("\n");search();break;case4:printf("◆◆◆刪除職工信息◆◆◆\n");printf("\n");del();break;case5:printf("◆◆◆添加職工信息◆◆◆\n");printf("\n");add();break;case6:printf("◆◆◆修改職工信息◆◆◆\n");printf("\n");modify();break;case7:exit(0);break;default:break;}getchar();printf("\n");printf("是否接著進行(yorn):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls");/*清屏*/menu();/*調(diào)用菜單函數(shù)*/printf("請再次選擇你須要操作的步驟(1--6):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}voidinput()/*錄入函數(shù)*/{inti,m;printf("請輸入須要創(chuàng)建信息的職工人數(shù)(1--100):\n");scanf("%d",&m);for(i=0;i<m;i++){printf("職工號:");srand((int)time(0));em[i].num=rand()%10000+20140000;if(em[i].num!=em[i-1].num)printf("%8d",em[i].num);printf("\n");printf("請輸入姓名:");scanf("%s",em[i].name);getchar();printf("請輸入性別(f--女m--男):");scanf("%c",&em[i].sex);printf("請輸入年齡:");scanf("%d",&em[i].age);printf("請輸入學(xué)歷:");scanf("%s",em[i].xueli);printf("請輸入工資:");scanf("%d",&em[i].wage);printf("請輸入住址:");scanf("%s",em[i].addr);printf("請輸入電話:");scanf("%ld",&em[i].tel);printf("\n");}printf("\n創(chuàng)建完畢!\n");save(m);}voidsave(intm)/*保存文件函數(shù)*/{inti;FILE*fp;if((fp=fopen("employee_list","wb"))==NULL)/*創(chuàng)建文件并推斷是否能打開*/{printf("cannotopenfile\n");exit(0);}for(i=0;i<m;i++)/*將內(nèi)存中職工的信息輸出到磁盤文件中去*/if(fwrite(&em[i],sizeof(structemployee),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}intload()/*導(dǎo)入函數(shù)*/{FILE*fp;inti=0;if((fp=fopen("employee_list","rb"))==NULL){printf("cannotopenfile\n");exit(0);}else{do{fread(&em[i],sizeof(structemployee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}4.2.2調(diào)試過程5設(shè)計心得和總結(jié):
經(jīng)過一學(xué)期的C語言學(xué)習(xí),我們駕馭了C語言的基礎(chǔ)學(xué)問,能夠讀懂別人用c語言設(shè)計編譯的程序。平常的程序設(shè)計大多是在書上看到的都是以書面的形式出現(xiàn),雖然有所接觸,但都不完全。而這周的課程設(shè)計,卻讓我們完完全全用自己所學(xué)到的學(xué)問編寫了一個完整的系統(tǒng)程序。這是一個新的挑戰(zhàn),也是一種新的學(xué)習(xí)。
我們組選擇的題目是——職工信息管理系統(tǒng)。這須要我們自己設(shè)計一個系統(tǒng),可以輸入信息,保存到文件里,再從文件里調(diào)出來,使之顯示在屏幕上,進行刪除、添加、查詢等對信息的修改。初看到這個題目覺得很簡潔,但當(dāng)我做到電腦前準(zhǔn)備起先編寫代碼的時候才發(fā)覺無從下手。通過去圖書館查找程序設(shè)計相關(guān)的書籍,和上網(wǎng)參考前人編寫的類似程序,我腦中才有了一個或許的方向。
慢慢起先著手寫下了第一段輸入函數(shù)的代碼,因為這是我們平常課堂上用的最多最熟的printf語句,寫了很長一大段,調(diào)式運行竟然成功了,突然信念倍增。于是我起先迫不及待的起先寫其次段保存函數(shù)。我記得第一天下來,我只寫好
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit4 What can you do Part B read and write (說課稿)-2024-2025學(xué)年人教PEP版英語五年級上冊
- 七年級人教版上冊第四單元 第一課 美國政治的心臟華盛頓說課稿 4
- Unit 5 Languages Around the World Reading for Writing 說課稿-2024-2025學(xué)年高一英語人教版(2019)必修第一冊
- 2025年政教處春季工作計劃
- 2025年小學(xué)春學(xué)期藝術(shù)組工作計劃
- Unit 2 Exploring the topic-Thinking skills 說課稿 2024-2025學(xué)年仁愛科普版(2024)七年級英語上冊
- 交軌法求軌跡說課稿-2024-2025學(xué)年高二上學(xué)期數(shù)學(xué)人教A版(2019)選擇性必修第一冊
- Unit 6 Lesson 31 說課稿 2024-2025學(xué)年冀教版英語八年級下冊
- 2025年工作計劃范文2
- Unit 4 My home PB let's talk(說課稿)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 《ESPEN重癥病人營養(yǎng)指南(2023版)》解讀課件
- 智慧茶園監(jiān)控系統(tǒng)的設(shè)計
- 2024年宜賓發(fā)展產(chǎn)城投資限公司第三批員工公開招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 2024年省宿州市“宿事速辦”12345政務(wù)服務(wù)便民熱線服務(wù)中心招考15名工作人員高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 2024年安徽省行政執(zhí)法人員資格認(rèn)證考試試題含答案
- 中國2型糖尿病運動治療指南 (2024版)
- 人教版初中九年級全冊英語單詞表
- 人教版小學(xué)二年級數(shù)學(xué)下冊數(shù)學(xué)口算、脫式、豎式、應(yīng)用題
- DZ∕T 0405-2022 無人機航空磁測數(shù)據(jù)采集技術(shù)要求(正式版)
- 會計業(yè)務(wù)培訓(xùn)方案(2篇)
- 楚天華通醫(yī)藥設(shè)備有限公司純化水設(shè)備介紹A32017年3月1日
評論
0/150
提交評論