職工信息管理系統(tǒng)程序設(shè)計(jì)_第1頁
職工信息管理系統(tǒng)程序設(shè)計(jì)_第2頁
職工信息管理系統(tǒng)程序設(shè)計(jì)_第3頁
職工信息管理系統(tǒng)程序設(shè)計(jì)_第4頁
職工信息管理系統(tǒng)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

/

引言通過大一下學(xué)期對(duì)C語言的學(xué)習(xí),了解到了很多C語言的相關(guān)學(xué)問。學(xué)習(xí)的過程有很多困惑但是當(dāng)自己能夠獨(dú)立的看懂,能夠獨(dú)立的完成一個(gè)簡(jiǎn)潔的程序時(shí),心中就會(huì)收獲無限的喜悅和成就感。我可以看懂一些簡(jiǎn)潔的程序,編寫一些簡(jiǎn)潔的程序,更多的是學(xué)會(huì)了一種思想——編程,它讓我去思索很多日常生活中的事物是怎樣通過一個(gè)個(gè)小小的函數(shù)實(shí)現(xiàn)其功能的,激發(fā)我探究的愛好,更讓我細(xì)致學(xué)習(xí)C語言的程序設(shè)計(jì)。C語言是在國(guó)內(nèi)外廣泛運(yùn)用的一種計(jì)算機(jī)語言。C語言簡(jiǎn)潔緊湊、運(yùn)用靈敏便利、運(yùn)算符豐富、適用范圍大、可移植性好。它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依靠計(jì)算機(jī)硬件的應(yīng)用程序。在這次的課程設(shè)計(jì)中我將通過親自設(shè)計(jì)程序,讓自己熟悉C語言操作,更嫻熟的駕馭C語句。初步體會(huì)編程的過程,在不斷的調(diào)試中獲得最為完整的程序,為將來的程序深化學(xué)習(xí)打下基礎(chǔ)和培育愛好。1功能簡(jiǎn)介和設(shè)計(jì)要求1.1

程序功能簡(jiǎn)介可以向文件中錄入、刪除、添加、查詢職工信息,也可以從文件中導(dǎo)出來閱讀1.2

程序設(shè)計(jì)要求職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號(hào)不重復(fù))。試設(shè)計(jì)職工信息管理系統(tǒng),使之能供應(yīng)以下功能:系統(tǒng)以菜單方式工作職工信息錄入功能(職工信息用文件保存)--輸入職工信息閱讀功能

--輸出查詢信息功能:(至少一種查詢方式)

--算法

按職工號(hào)查詢

按學(xué)歷查詢按電話查詢職工信息刪除、添加功能2程序總體設(shè)計(jì)框圖輸入函數(shù):用鍵盤輸入職工信息輸入函數(shù)寫入函數(shù) :將信息寫入指定文本文件寫入函數(shù)導(dǎo)出函數(shù):將信息導(dǎo)出放在結(jié)構(gòu)數(shù)組em中導(dǎo)出函數(shù)閱讀函數(shù):將全部閱讀函數(shù)按職工號(hào)查詢:輸入職工號(hào)顯示信息按職工號(hào)查詢顯示主菜單查詢函數(shù)按電話查詢:輸入名字顯示顯示主菜單查詢函數(shù)按電話查詢按學(xué)歷查詢:輸入學(xué)歷顯示信息按學(xué)歷查詢刪除函數(shù) :刪除原有的職工信息刪除函數(shù)添加函數(shù) :添加新的職工信息添加函數(shù)3主要函數(shù)介紹

主函數(shù):main()顯示系統(tǒng)工作菜單,排列該系統(tǒng)全部功能。先聲明全部將會(huì)調(diào)用到的函數(shù)名。再運(yùn)用選擇函數(shù)switch即可依據(jù)運(yùn)用者所輸入的功能代號(hào)進(jìn)入對(duì)應(yīng)的功能程序。亮點(diǎn):定義一個(gè)全局變量*p和全局變量a。其中a表示當(dāng)前系統(tǒng)中職工人數(shù),p指向a的地址,追蹤人數(shù)變更,這樣在添加或者刪除導(dǎo)致人數(shù)變更后,閱讀函數(shù)display()能夠正確顯示出當(dāng)前人數(shù)的職工信息。宏定義define

N指定首次輸入的職工人數(shù),可依據(jù)不同須要隨時(shí)更改。

顯示菜單起先顯示菜單起先輸入功能代碼輸入功能代碼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()定義一個(gè)結(jié)構(gòu)structemployee和數(shù)組em【N】用來儲(chǔ)存N個(gè)職工的全部信息(職工號(hào)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è)計(jì)和調(diào)試4.1功能模塊函數(shù)設(shè)計(jì)在整個(gè)程序的編譯過程中,在調(diào)試的時(shí)候出現(xiàn)了好多的錯(cuò)誤和警告,經(jīng)過細(xì)致的分析和修改都可以解決,但是其中遇到最大的問題是全部程序代碼編完放在一起后,雖然能夠成功運(yùn)行,但是還是出現(xiàn)了一些小問題,就是在調(diào)用隨機(jī)支配函數(shù)時(shí)職工的工號(hào)不隨機(jī)支配,每次到了自動(dòng)支配工號(hào)的時(shí)候都會(huì)跳過那一步就干脆進(jìn)行下一環(huán)節(jié)輸入了。這使我百思不得其解,后來我在網(wǎng)上查詢了好多資料后最終明白了,原來在運(yùn)用隨機(jī)支配函數(shù)時(shí)首先要調(diào)用隨機(jī)支配函數(shù)所在的函數(shù)庫,這樣才能夠正常運(yùn)用。運(yùn)用時(shí)假如職工人數(shù)發(fā)生變更,會(huì)導(dǎo)致文件后部出現(xiàn)亂碼的現(xiàn)象。若要使每次運(yùn)行都正常,必需在人數(shù)變更后退出程序,修改宏定義N的值。這樣很不便利,不能夠連續(xù)運(yùn)行。為解決這一大問題,最終我想到了定義一個(gè)全局變量,用來追蹤鏈接最新的人數(shù)。特別是刪除和添加這兩個(gè)會(huì)導(dǎo)致人數(shù)變更的函數(shù)中,全局變量p起了很大作用。經(jīng)過一邊修改一邊調(diào)試,最終可以成功的用p串聯(lián)整個(gè)函數(shù),在連續(xù)運(yùn)行時(shí),總能依據(jù)最新的人數(shù)調(diào)用各個(gè)函數(shù)。另外在串聯(lián)全部函數(shù)時(shí),調(diào)試提示出錯(cuò):有以下幾個(gè)函數(shù):“search;srand;display;basic;types”解決:在函數(shù)名前加void指明類型。整個(gè)程序代碼是分塊書寫的,每個(gè)函數(shù)都可以獨(dú)立運(yùn)行。只有輸入函數(shù)查詢菜單函數(shù)寫得很順當(dāng),一次性就能夠成功運(yùn)行,其他函數(shù)在調(diào)試過程中或多或少都出現(xiàn)了問題。保存函數(shù)save()在調(diào)試和鏈接的時(shí)候都沒有出現(xiàn)錯(cuò)誤提示,但在運(yùn)行的時(shí)候出現(xiàn)了問題。寫入指定位置的文件,打開后總會(huì)有亂碼。和c語言課本上的例題比照后發(fā)覺,在存儲(chǔ)文件時(shí)確定要指定文件的存儲(chǔ)類型。這樣才能夠正確的進(jìn)行存儲(chǔ),不會(huì)出現(xiàn)亂碼的現(xiàn)象。導(dǎo)出函數(shù)load()遇到兩個(gè)問題。1是為便利干脆將保存函數(shù)復(fù)制過來進(jìn)行修改時(shí),忘了修改文件的打開方式,不能運(yùn)行。經(jīng)過多次檢查后最終發(fā)覺了,解決:將只寫改為只讀就ok了。2是用fscanf語句時(shí),漏寫地址符。調(diào)試和鏈接都沒問題,但點(diǎn)擊運(yùn)行后,總出現(xiàn)一個(gè)提示出錯(cuò)的藍(lán)色小窗口。經(jīng)過老師的提示發(fā)覺了錯(cuò)誤的所在。解決方法:在em[i].name等之前加上取地址符就可以解決。在進(jìn)行職工信息錄入的時(shí)候確定要留意中文和英文之間的切換,不然的話會(huì)出現(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];/*定義一個(gè)結(jié)構(gòu)體*/voidmenu();voidinput();voidsave(int);voiddisplay();voiddel();voidadd();voidsearch();voidsearch_num();voidsearch_xueli();voidsearch_tel();voidmodify();/*定義各函數(shù)*/voidmenu()/*菜單函數(shù)*/{printf("☆☆☆C語言程序設(shè)計(jì)☆☆☆\n");printf("\n");printf("∮機(jī)設(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("**********感謝運(yùn)用**********\n");printf("\n");printf("\n");}voidmain(){menu();/*調(diào)用菜單函數(shù)*/intn,flag;chara;do{printf("請(qǐng)選擇你須要操作的步驟(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您輸入有誤,請(qǐng)重新選擇!");}}while(flag==0);while(flag==1){switch(n){case1:printf("◆◆◆輸入職工信息◆◆◆\n");printf("\n");input();break;case2:printf("◆◆◆閱讀職工信息◆◆◆\n");printf("\n");display();break;case3:printf("◆◆◆按職工號(hào)查詢職工信息◆◆◆\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("是否接著進(jìn)行(yorn):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls");/*清屏*/menu();/*調(diào)用菜單函數(shù)*/printf("請(qǐng)?jiān)俅芜x擇你須要操作的步驟(1--6):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}voidinput()/*錄入函數(shù)*/{inti,m;printf("請(qǐng)輸入須要?jiǎng)?chuàng)建信息的職工人數(shù)(1--100):\n");scanf("%d",&m);for(i=0;i<m;i++){printf("職工號(hào):");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("請(qǐng)輸入姓名:");scanf("%s",em[i].name);getchar();printf("請(qǐng)輸入性別(f--女m--男):");scanf("%c",&em[i].sex);printf("請(qǐng)輸入年齡:");scanf("%d",&em[i].age);printf("請(qǐng)輸入學(xué)歷:");scanf("%s",em[i].xueli);printf("請(qǐng)輸入工資:");scanf("%d",&em[i].wage);printf("請(qǐng)輸入住址:");scanf("%s",em[i].addr);printf("請(qǐng)輸入電話:");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è)計(jì)心得和總結(jié):

經(jīng)過一學(xué)期的C語言學(xué)習(xí),我們駕馭了C語言的基礎(chǔ)學(xué)問,能夠讀懂別人用c語言設(shè)計(jì)編譯的程序。平常的程序設(shè)計(jì)大多是在書上看到的都是以書面的形式出現(xiàn),雖然有所接觸,但都不完全。而這周的課程設(shè)計(jì),卻讓我們完完全全用自己所學(xué)到的學(xué)問編寫了一個(gè)完整的系統(tǒng)程序。這是一個(gè)新的挑戰(zhàn),也是一種新的學(xué)習(xí)。

我們組選擇的題目是——職工信息管理系統(tǒng)。這須要我們自己設(shè)計(jì)一個(gè)系統(tǒng),可以輸入信息,保存到文件里,再從文件里調(diào)出來,使之顯示在屏幕上,進(jìn)行刪除、添加、查詢等對(duì)信息的修改。初看到這個(gè)題目覺得很簡(jiǎn)潔,但當(dāng)我做到電腦前準(zhǔn)備起先編寫代碼的時(shí)候才發(fā)覺無從下手。通過去圖書館查找程序設(shè)計(jì)相關(guān)的書籍,和上網(wǎng)參考前人編寫的類似程序,我腦中才有了一個(gè)或許的方向。

慢慢起先著手寫下了第一段輸入函數(shù)的代碼,因?yàn)檫@是我們平常課堂上用的最多最熟的printf語句,寫了很長(zhǎng)一大段,調(diào)式運(yùn)行竟然成功了,突然信念倍增。于是我起先迫不及待的起先寫其次段保存函數(shù)。我記得第一天下來,我只寫好

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論