

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)</b></p><p> 課程名稱 程序設(shè)計(jì)課程設(shè)計(jì) </p><p> 設(shè)計(jì)題目 高校在職職工管理軟件 </p><p> 班級(jí)與班級(jí)代碼 </p><p> 專 業(yè) </
2、p><p> 指導(dǎo)教師: </p><p> 學(xué) 號(hào): </p><p> 姓 名: </p><p><b> 提交日期: </b></p><p> 姓名
3、 課程設(shè)計(jì)成績(jī) </p><p><b> 評(píng)語:</b></p><p> 指導(dǎo)教師(簽名) </p><p> 年 月 日</p><p> 1 系統(tǒng)功能要求(需求分析):</p><p> 采
4、用結(jié)構(gòu)體數(shù)組或文件形式存儲(chǔ)職工的信息,每個(gè)職工應(yīng)包含如下幾方面的信息:職工號(hào)、姓名、性別、所屬二級(jí)單位、所學(xué)專業(yè)、職稱、月工資,電話號(hào)碼。軟件由主函數(shù)(含歡迎界面)和下列6個(gè)功能模塊組成:(1)減少一個(gè)職工(需指定要?jiǎng)h除職工的職工號(hào));(2)增加一個(gè)職工號(hào)(需輸入要增加職工號(hào)的所有信息);(3)查找一個(gè)職工號(hào)的信息(需指定職工號(hào)或電話號(hào)碼);(4)統(tǒng)計(jì)指定二級(jí)單位的職工人數(shù)、工資總額;(5)按職工的工資多少對(duì)職工排序(6)退出程序的運(yùn)行
5、。(正文宋體4號(hào),行距固定為20英鎊)</p><p> 2 系統(tǒng)總體(概要)設(shè)計(jì)思想</p><p> ?。?)開發(fā)與設(shè)計(jì)的總體思想</p><p> 高校在職職工管理軟件設(shè)計(jì)算法說明:</p><p> STEP1 預(yù)處理,定義結(jié)構(gòu)體</p><p> STEP2 進(jìn)入歡迎界面</p>&l
6、t;p> STEP3 選擇某一種功能</p><p> STEP4 根據(jù)提示輸入一個(gè)字母</p><p> STEP5 對(duì)于輸入的字母編輯關(guān)于刪除、增加、排序、查找、統(tǒng)計(jì)功能的函數(shù)</p><p> STEP6 如果輸入的字母表示退出,退出系統(tǒng)</p><p><b> 系體模塊結(jié)構(gòu)圖</b></p
7、><p> ?。?)系統(tǒng)文件及函數(shù)組成、功能(參考P154的表12-1)</p><p><b> 3 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p><b> ?。?) 函數(shù)的描述</b></p><p> a.本程序總共有8個(gè)文件:</p><p><b> work
8、ers.h</b></p><p><b> workers.c</b></p><p> add_disp.c</p><p> sav_load.c</p><p> que_remv.c</p><p> sort_#c</p><p&g
9、t; handle_menu.c</p><p> menu_select.c</p><p> b.所涉及到的函數(shù)如下:</p><p> (1).菜單處理函數(shù)</p><p> 函數(shù)原型:void handle_menu(void);//菜單處理</p><p> 功能:處理選擇的菜單命令</p&
10、gt;<p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式:根據(jù)命令,調(diào)用相應(yīng)函數(shù)</p><p><b> 要求:給出結(jié)束信息</b></p><p> (2).菜單選擇函數(shù)</
11、p><p> 函數(shù)原型: int menu_select(void);//菜單選擇</p><p> 功能:接受用戶選擇的命令代碼</p><p><b> 參數(shù):void</b></p><p><b> 返回值:int</b></p><p> 工作方式:返回命令代
12、碼的整數(shù)值</p><p> 要求:只允許選擇規(guī)定鍵,如果輸入不合要求,則提醒用戶重新輸入</p><p> (3). 刪除記錄函數(shù)</p><p> 函數(shù)原型:void removeRecord(void);//刪除指定的記錄</p><p> 功能:刪除內(nèi)存數(shù)組內(nèi)存數(shù)組中的指定記錄</p><p><
13、b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式:根據(jù)給定的關(guān)鍵字,查找符合的記錄并刪除之。</p><p> 要求:將后面的記錄前移,同時(shí)改變名次并給出相關(guān)信息</p><p> (4).增加信息函數(shù)</p><
14、p> 函數(shù)原型:void addRecord(void);//在表尾追加職工信息</p><p><b> 功能:增加記錄</b></p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式:
15、 從尾部開始逐個(gè)追加記錄</p><p> 要求:將新的記錄追加在記錄尾部,并對(duì)記錄進(jìn)行計(jì)數(shù)</p><p> (5). 顯示所有學(xué)生信息函數(shù)</p><p> 函數(shù)原型:void display(void);//顯示信息</p><p> 功能:顯示內(nèi)存里的記錄信息</p><p><b> 參數(shù)
16、:void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 從頭部開始逐個(gè)顯示記錄內(nèi)容</p><p> 要求:報(bào)告是否有記錄及記錄條數(shù)和內(nèi)容</p><p> (6).查詢指定職工信息函數(shù)</p><p> 函數(shù)原型:void qu
17、eryInfo(void);//查詢指定的職工信息</p><p> 功能:將一個(gè)文件的內(nèi)容追加到另一個(gè)文件的尾部</p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 可以按照職工號(hào)或電話號(hào)碼來查詢</p&
18、gt;<p> 要求:打印查詢到的學(xué)生的信息或給出相關(guān)信息。</p><p> (7). 對(duì)職工信息進(jìn)行排序</p><p> 函數(shù)原型:void sort(void);//對(duì)職工進(jìn)行排序</p><p> 功能:對(duì)職工信息進(jìn)行排序</p><p><b> 參數(shù):void</b></p&g
19、t;<p><b> 返回值:void</b></p><p> 工作方式: 按職工工資多少對(duì)職工進(jìn)行排序</p><p><b> 要求:打印排序結(jié)果</b></p><p> (8). 統(tǒng)計(jì)二級(jí)單位人數(shù)和工資總額</p><p> 函數(shù)原型:void tongji(voi
20、d);//統(tǒng)計(jì)函數(shù)</p><p> 功能:統(tǒng)計(jì)二級(jí)單位人數(shù)和工資總額</p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 指定二級(jí)單位,然后再進(jìn)行統(tǒng)計(jì)</p><p><b>
21、 要求:統(tǒng)計(jì)后打印</b></p><p> (9). 文件存儲(chǔ)操作函數(shù)</p><p> 函數(shù)原型:int saveRecords(void);//文件存儲(chǔ)</p><p> 功能:將記錄存入默認(rèn)文件wor_info或者指定文件</p><p><b> 參數(shù):void</b></p>
22、<p> 返回值:成功0,失敗-1</p><p> 工作方式: 數(shù)組records被保存至指定文件</p><p> 要求:報(bào)告是否有記錄可存,是否能正常建立或打開文件,根據(jù)要求執(zhí)行存入操作并報(bào)告存入記錄的條數(shù)</p><p> (10).文件讀取操作函數(shù) </p><p> 函數(shù)原型:int loadRecords
23、(void);//文件讀取</p><p> 功能:默認(rèn)文件wor_info或者指定文件的記錄取入內(nèi)存</p><p><b> 參數(shù):void</b></p><p> 返回值:成功0,失敗-1</p><p> 工作方式: records為從指定文件中讀取出的記錄</p><p>
24、要求:報(bào)告是否有記錄可存,是否能夠正常打開文件,是否覆蓋已有記錄以及讀取記錄的條數(shù)</p><p> (11). 結(jié)束程序運(yùn)行函數(shù)</p><p> 函數(shù)原型:void quit(void);//結(jié)束運(yùn)行</p><p><b> 功能:結(jié)束程序運(yùn)行</b></p><p><b> 參數(shù):void&l
25、t;/b></p><p><b> 返回值:void</b></p><p> 工作方式: 根據(jù)要求決定在退出前是否將修改的記錄存入文件</p><p> 要求:結(jié)束運(yùn)行之前,詢問是否對(duì)修改的記錄進(jìn)行存儲(chǔ)</p><p> (12). 輸出表頭函數(shù)</p><p> 函數(shù)原型:v
26、oid showTable(void);//輸出表頭</p><p><b> 功能:輸出表頭信息</b></p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 輸出一行表頭信息</p&
27、gt;<p> 要求:輸出一行表頭信息</p><p> (13). 查找指定記錄函數(shù)原型</p><p> 函數(shù)原型: int findRecord(char* target, int targetType, int from); </p><p> 功能:查找指定的記錄</p><p> 參數(shù):char* targ
28、et欲查找記錄的某一項(xiàng)與target相同;</p><p> int targetType通過什么來查找;</p><p> int from從第from個(gè)記錄開始查找</p><p> 返回值:int(找到的記錄的序號(hào)),若找不到則返回-1</p><p> 工作方式: 根據(jù)給定的關(guān)鍵字,查找符合記錄的序號(hào)</p>&
29、lt;p> 要求:找不到則返回-1</p><p> ?。?)主要函數(shù)流程圖(2個(gè)以上,可參考材P148的寫法)</p><p> addRecord quit </p><p><b> (3)編碼(附后)</b></p><p&
30、gt;<b> 4 系統(tǒng)測(cè)試</b></p><p> 內(nèi)容包括:程序調(diào)試情況(8幅以上測(cè)試結(jié)果截圖);</p><p> 總結(jié):本人C語言程序設(shè)計(jì)基礎(chǔ)較差,因此,在寫這個(gè)程序的時(shí)候遇到了諸多困難,多虧同學(xué)的幫忙我的程序才可以成功地運(yùn)行,真的是自己之前不夠刻苦,用功,寫代碼這種東西還是要多練,多做題才能有收獲,在寫那個(gè)登陸賬號(hào)和密碼的函數(shù)的時(shí)候,我調(diào)試了好久都
31、沒發(fā)現(xiàn)錯(cuò)誤,最后。在同學(xué)的幫助下,成功發(fā)現(xiàn)是數(shù)組那里除了問題,居然少打了個(gè)中括號(hào)。所以本人數(shù)組和指針方面的知識(shí)點(diǎn)欠缺,還需要多多練習(xí)。雖然這份程序是參考學(xué)生成績(jī)那份來找靈感的,還是出現(xiàn)了好多錯(cuò)誤,最大的收貨就是看到程序成功運(yùn)行的那一刻。</p><p><b> 6 結(jié)束語</b></p><p> 感謝李惠坤同學(xué)和林柔佳同學(xué)熱心幫助。</p>&l
32、t;p><b> 參考文獻(xiàn)</b></p><p> [1] 譚浩強(qiáng),C程序設(shè)計(jì)(第二版),北京:清華大學(xué)出版社,2001.1 (左對(duì)齊,宋體,五號(hào))</p><p> [2] 陳朔鷹,C語言程序設(shè)計(jì)習(xí)題集,北京:人民郵電出版社,2003.6</p><p><b> 7 附錄(代碼)</b></p&g
33、t;<p> #include <stdio.h></p><p> #include <stdlib.h></p><p> //#include <iostream></p><p> #include <conio.h>//conio是Console Input/Output(控制臺(tái)輸入輸出
34、)的簡(jiǎn)寫,其中定義了通過控制臺(tái)進(jìn)行數(shù)據(jù)輸入和數(shù)據(jù)輸出的函數(shù),主要是一些用戶通過按鍵盤產(chǎn)生的對(duì)應(yīng)操作,比如getch()函數(shù)等等。</p><p> #include <string.h></p><p> #define INITIAL_SIZE 100 //數(shù)組初始大小</p><p> #define INCR_SIZE 50 //數(shù)組
35、每次增加的大小</p><p> struct workers_info</p><p> {//每個(gè)職工包含的信息</p><p> char num[10];//職工號(hào)</p><p> char name[10];//姓名</p><p> char sex[3];//性別</p><
36、;p> char post[10];//所屬二級(jí)單位</p><p> char major[10];//所學(xué)專業(yè)</p><p> char jobname[10];//職稱</p><p> float salary;//月工資</p><p> char phonenum[11];//電話號(hào)碼</p>&l
37、t;p><b> }wk[10];</b></p><p> typedef struct workers_info WrkInfo;</p><p> extern int numWrks; //記錄職工數(shù)</p><p> extern WrkInfo* records;//記錄職工信息的數(shù)組</p><p
38、> extern char savedTag;//信息是否已保存的標(biāo)志,0為已保存,1為未保存</p><p> extern int arraySize;//數(shù)組大小</p><p> void handle_menu(void);//菜單處理</p><p> int menu_select(void);//菜單選擇</p><
39、p> void removeRecord(void);//刪除指定的記錄</p><p> void addRecord(void);//在表尾追加職工信息</p><p> void display(void);//顯示信息</p><p> void queryInfo(void);//查詢指定的職工信息</p><p>
40、 void sortInfo(void);//對(duì)職工進(jìn)行排序</p><p> void Tongji(void);//統(tǒng)計(jì)函數(shù)</p><p> int saveRecords(void);//文件存儲(chǔ)</p><p> int loadRecords(void);//文件讀取</p><p> void quit(void);//
41、結(jié)束運(yùn)行</p><p> void showTable(void);//輸出表頭</p><p> int findRecord(char* target, int targetType, int from);//char* target欲查找記錄的某一項(xiàng)與target相同;int targetType通過什么來查找;int from從第from個(gè)記錄開始查找</p>
42、<p> #include "workers.h"</p><p> /*************************</p><p><b> *初始化</b></p><p> *************************/</p><p> int numWrks=
43、0;//記錄的職工數(shù)</p><p> WrkInfo *records=NULL;//記錄職工信息的數(shù)據(jù)</p><p> char savedTag=0;//信息是否已保存的標(biāo)志,1為未保存,0為保存</p><p> int arraySize;//數(shù)組大小</p><p> /*********************<
44、/p><p><b> *主函數(shù)</b></p><p> ********************/</p><p> void main()</p><p><b> {</b></p><p><b> //初始化數(shù)組</b></p&g
45、t;<p> char a[20]="14251102104",b[20]="0808", str[20];</p><p> records=(WrkInfo*)malloc(sizeof(WrkInfo)*INITIAL_SIZE);</p><p> system("color 5A");</p&g
46、t;<p> if(records==NULL)</p><p><b> {</b></p><p> printf("memory fail!");</p><p><b> exit(-1);</b></p><p><b> }</
47、b></p><p> arraySize=INITIAL_SIZE;//</p><p> printf("\n");</p><p> printf("\t**********************************\n");</p><p> printf("\t*
48、 這是一個(gè) *\n"); </p><p> printf("\t* 高校在職職工簡(jiǎn)單管理程序 *\n");</p><p> printf("\t* 可以對(duì)職工信息進(jìn)行管理 *\n"); </p><p> printf("\t
49、* 歡迎使用管理程序 *\n");</p><p> printf("\t**********************************\n"); </p><p> printf("\n");</p><p> printf("\n");</p>
50、;<p> printf("請(qǐng)輸入用戶名<14251102104>和密碼<0808>");</p><p><b> while(1){</b></p><p> scanf("%s",str);</p><p> if (!strcmp(str,a)){&l
51、t;/p><p> scanf("%s",str);</p><p> if(!strcmp(str,b)){</p><p> printf("登陸成功");</p><p> handle_menu();</p><p><b> }</b><
52、;/p><p> else printf("登陸失敗");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void copyRecord(Wr
53、kInfo* src,WrkInfo*dest);</p><p> /*********************</p><p><b> *菜單處理函數(shù)</b></p><p> ********************/</p><p> #include"workers.h"</
54、p><p> void handle_menu(void)</p><p><b> {</b></p><p><b> for(;;){</b></p><p> switch(menu_select())</p><p><b> {</b>
55、</p><p><b> case 1:</b></p><p> removeRecord();</p><p><b> break;</b></p><p><b> case 2:</b></p><p> addRecord();&
56、lt;/p><p><b> break;</b></p><p><b> case 3:</b></p><p> queryInfo();</p><p><b> break;</b></p><p><b> case 4:&l
57、t;/b></p><p><b> Tongji();</b></p><p><b> break;</b></p><p><b> case 5:</b></p><p> sortInfo();</p><p><b>
58、 break;</b></p><p><b> case 6:</b></p><p> display();</p><p><b> break;</b></p><p><b> case 7:</b></p><p>
59、saveRecords();</p><p><b> break;</b></p><p><b> case 8:</b></p><p> loadRecords();</p><p><b> break;</b></p><p><
60、;b> case 9:</b></p><p><b> quit();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p
61、> #include"workers.h"</p><p> /*********************</p><p> *菜單選擇函數(shù)menu_select</p><p> ********************/</p><p> int menu_select()</p><
62、;p><b> {</b></p><p> char s[2];</p><p><b> int cn=0;</b></p><p> printf("\n");</p><p> printf("\t1.刪除職工信息 \n");</
63、p><p> printf("\t2.增加職工信息\n");</p><p> printf("\t3.查詢職工信息\n");</p><p> printf("\t4.統(tǒng)計(jì)職工信息\n");</p><p> printf("\t5.對(duì)職工信息進(jìn)行排序\n"
64、);</p><p> printf("\t6.顯示職工信息\n");</p><p> printf("\t7.保存學(xué)生信息至記錄文件\n");</p><p> printf("\t8.從記錄文件讀取學(xué)生信息\n");</p><p> printf("\t9.
65、結(jié)束運(yùn)行\(zhòng)n");</p><p> printf("\n\t左邊數(shù)字對(duì)應(yīng)功能選擇,請(qǐng)選1-9:\n\n");</p><p><b> for(;;)</b></p><p><b> {</b></p><p><b> gets(s);</
66、b></p><p> cn=atoi(s);</p><p> if(cn<1||cn>9)printf("\n\t輸入錯(cuò)誤,重選1-9:\n\n");</p><p> else break;</p><p><b> }</b></p><p>
67、 return cn;</p><p><b> }</b></p><p> /*********************</p><p><b> *結(jié)束運(yùn)行,退出</b></p><p><b> *參數(shù)void </b></p><p>
68、; ********************/</p><p> void quit(void)</p><p><b> {</b></p><p> char str[5];</p><p> if(savedTag==1)</p><p><b> {</b&g
69、t;</p><p> printf("是否保存原來的記錄? (Y/n)");</p><p> gets(str);</p><p> if(str[0]!='n'&&str[0]!='N')</p><p> saveRecords();</p>&
70、lt;p><b> }</b></p><p> free(records);</p><p><b> exit(0);</b></p><p><b> }</b></p><p> #include "workers.h"</p&
71、gt;<p> /*********************</p><p><b> *輸出表頭</b></p><p> ********************/</p><p> void showTable(void)</p><p><b> {</b><
72、/p><p> printf("職工號(hào)\t 姓名\t 性別\t 所屬二級(jí)單位\t 所學(xué)專業(yè)\t 職稱\t 月工資\t 電話號(hào)碼\n");</p><p><b> } </b></p><p> /*********************</p><p&g
73、t; *顯示所有職工信息函數(shù)</p><p> ********************/</p><p> void display(void)</p><p><b> {</b></p><p><b> int i;</b></p><p> if(nu
74、mWrks==0)</p><p><b> {</b></p><p> printf("沒有可供顯示的記錄!");</p><p><b> return;</b></p><p><b> }</b></p><p>
75、 showTable();</p><p> for(i=0;i<numWrks;i++)</p><p><b> {</b></p><p><b> //打印職工信息</b></p><p> printf("%s \t %s \ t %s \ t %s \t
76、",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major);</p><p> printf("%s \t %s \ t %f \ t %s \t ",records[i].jobname,records[i].salary,records[i].phonenum);&
77、lt;/p><p> //打印滿10個(gè)記錄后停下來</p><p> if(i%9==0&&i!=0)</p><p><b> {</b></p><p> printf("輸入任一字符后繼續(xù)...\n");</p><p><b> getc
78、h();</b></p><p> printf("\n\n");</p><p> showTable();</p><p><b> }</b></p><p><b> }</b></p><p><b> }<
79、/b></p><p> /****************************************</p><p> *在當(dāng)前表的末尾增加新的信息結(jié)果:</p><p> *records中將記錄的信息,如果數(shù)組</p><p> *大小不夠,會(huì)重新申請(qǐng)數(shù)組空間</p><p> ******
80、**********************************/</p><p> void addRecord(void)</p><p><b> {</b></p><p> //records=realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));</p>
81、<p> char str[10];</p><p><b> int j;</b></p><p> float mark,sum;</p><p> if(numWrks==0)</p><p> printf("原來沒有記錄,現(xiàn)在建立新表\n");</p>
82、<p><b> else</b></p><p> printf("下面在當(dāng)前表的末尾增加新的信息\n");</p><p> while(1)//()中為1表示無條件反復(fù)循環(huán)</p><p><b> {</b></p><p> printf("
83、;您將要添加一組信息,確定嗎?(Y/n)");</p><p> gets(str);</p><p> if (str[0]=='n' || str[0]=='N') // 不再添加新的信息</p><p><b> break;</b></p><p> if (nu
84、mWrks >= arraySize) // 現(xiàn)在的數(shù)組空間不足,需要重新申請(qǐng)空間</p><p><b> {</b></p><p> records = realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));//新空間大小變?yōu)?arraySize+INCR_SIZE)記錄大小,即在原來基礎(chǔ)上增加I
85、NCR_SIZE個(gè)記錄大小</p><p> if (records == NULL)</p><p><b> {</b></p><p> printf("memory failed!");</p><p><b> exit(-1);</b></p>
86、<p><b> }</b></p><p> arraySize = arraySize+INCR_SIZE; //arraySize修改為新空間可保存的記錄數(shù)</p><p><b> }</b></p><p> printf("請(qǐng)輸入職工號(hào):");</p><
87、;p> gets(records[numWrks].num);</p><p> printf("請(qǐng)輸入姓名:");</p><p> gets(records[numWrks].name);</p><p> printf("請(qǐng)輸入性別(0為女,1為男):");</p><p> ge
88、ts(str);</p><p> if(str[0]=='0')</p><p> strcpy(records[numWrks].sex,"女");</p><p><b> else</b></p><p> strcpy(records[numWrks].sex,&qu
89、ot;男");</p><p> printf("請(qǐng)輸入所屬二級(jí)單位:");</p><p> gets(records[numWrks].post);</p><p> printf("請(qǐng)輸入所學(xué)專業(yè):");</p><p> gets(records[numWrks].major)
90、;</p><p> printf("請(qǐng)輸入職稱:");</p><p> gets(records[numWrks].jobname);</p><p> printf("請(qǐng)輸入月工資:");</p><p> gets(str);</p><p> records[
91、numWrks].salary=(float)atof(str);</p><p> printf("請(qǐng)輸入電話號(hào)碼:");</p><p> gets(records[numWrks].phonenum);</p><p> numWrks++;</p><p><b> }</b><
92、/p><p> printf("現(xiàn)在一共有%d條信息\n",numWrks);</p><p> savedTag=1;</p><p> }#include"workers.h"</p><p> /*********************************************<
93、/p><p><b> *查找指定記錄函數(shù)</b></p><p> *參數(shù): target:欲查找記錄的某一項(xiàng)與target相同</p><p> *targetType:表明通過那一項(xiàng)來查找,0為學(xué)號(hào),1為姓名,2為名次</p><p> *from:從第from個(gè)記錄開始找</p><p&
94、gt; *返回:找到的記錄的序號(hào),若找不到則返回-1</p><p> *********************************************/</p><p> int findRecord(char*target, int targetType, int from)</p><p><b> {</b></
95、p><p><b> int i;</b></p><p> for(i=from;i<=numWrks;i++)</p><p><b> {</b></p><p> if((targetType==0&&strcmp(target,records[i].num)==0
96、)||(targetType==1&&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))</p><p><b> return i;</b></p><p><b> }</b><
97、/p><p> return -1;</p><p><b> }</b></p><p> void queryInfo(void)</p><p><b> {</b></p><p> char str[5];</p><p> char
98、 target[20];</p><p><b> int type;</b></p><p> int count;</p><p><b> int i;</b></p><p> if(numWrks==0)</p><p><b> {</b
99、></p><p> printf("沒有可供查詢的記錄");</p><p><b> return;</b></p><p><b> }</b></p><p><b> while(1)</b></p><p>
100、<b> {</b></p><p> printf("請(qǐng)輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p> printf("1.按職工號(hào)\n");</p><p> printf("2.按電話號(hào)碼\n");</p><p> ge
101、ts(str);</p><p> if(strlen(str)==0)</p><p><b> break;</b></p><p> if(str[0]=='1')</p><p><b> {</b></p><p> printf(&quo
102、t;請(qǐng)輸入欲查詢的職工的職工號(hào):");</p><p> gets(target);</p><p><b> type=0;</b></p><p><b> }</b></p><p><b> else</b></p><p>&
103、lt;b> {</b></p><p> printf("請(qǐng)輸入欲查詢的職工的電話號(hào)碼:");</p><p> gets(target);</p><p><b> type=1;</b></p><p><b> }</b></p>
104、<p> i=findRecord(target,type,0);</p><p><b> if(i==1)</b></p><p><b> {</b></p><p> //打印查詢到的職工信息</p><p> showTable();</p><p&
105、gt;<b> }</b></p><p><b> count=0;</b></p><p> while(i!=-1)</p><p><b> {</b></p><p><b> count++;</b></p><p
106、> printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p> i=fi
107、ndRecord(target,type,i+1);</p><p><b> }</b></p><p> if(count==0)</p><p> printf("沒有符合條件的職工!\n");</p><p><b> else</b></p>&l
108、t;p> printf("一共找到了%d名職工的信息\n\n",count);</p><p><b> }</b></p><p><b> }</b></p><p> /*****************************</p><p><b&g
109、t; *刪除記錄函數(shù)</b></p><p> ***************************/</p><p> void removeRecord(void)</p><p><b> {</b></p><p> char str[5];</p><p> c
110、har target[20];</p><p><b> int type;</b></p><p><b> int i,j;</b></p><p> if(numWrks==0)</p><p><b> {</b></p><p> p
111、rintf("沒有可供刪除的記錄\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> while(1){</b></p><p> printf("直接輸入回車則結(jié)
112、束移除操作)\n");</p><p> printf("請(qǐng)輸入欲刪除的記錄的職工號(hào):\n");</p><p> gets(target);</p><p><b> type=0;</b></p><p> i=findRecord(target,type,0);</p&g
113、t;<p> if(i==-1)printf("沒有符合條件的職工!\n");</p><p> while(i!=-1)</p><p><b> {</b></p><p> showTable();</p><p> printf("%s\t%s\t%s\t%s
114、\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p> printf("確定要?jiǎng)h除這個(gè)職工的信息嗎?(y/N)"
115、;);</p><p> gets(str);</p><p> if(str[0]=='y'||str[0]=='Y')</p><p><b> {</b></p><p> numWrks--;</p><p> printf("該職工信息
116、已經(jīng)刪除.\n");</p><p><b> return;</b></p><p> //將后面的記錄前移</p><p> for(j=i;j<numWrks;j++)</p><p><b> {</b></p><p> copyRecor
117、d(&records[j+1],&records[j]);</p><p><b> }</b></p><p><b> }</b></p><p> //取下一個(gè)符合條件的記錄</p><p> i=findRecord(target,type,i+1);</p&g
118、t;<p><b> }</b></p><p><b> }</b></p><p> savedTag=1;</p><p><b> }</b></p><p> /*****************************************
119、</p><p> *將src指向的一條記錄復(fù)制給dest指向的記錄</p><p> *****************************************/</p><p> void copyRecord(WrkInfo*src,WrkInfo*dest)</p><p><b> {</b>&
120、lt;/p><p> strcpy(dest->num,src->num);</p><p> strcpy(dest->name,src->name);</p><p> strcpy(dest->sex,src->sex);</p><p> strcpy(dest->post,src->
121、;post);</p><p> strcpy(dest->major,src->major);</p><p> strcpy(dest->jobname,src->jobname);</p><p> dest->salary=src->salary;</p><p> strcpy(dest-
122、>phonenum,src->phonenum);</p><p><b> }</b></p><p> #include"workers.h"</p><p> /*********************************************</p><p><
123、b> *查找指定記錄函數(shù)</b></p><p> *參數(shù): target:欲查找記錄的某一項(xiàng)與target相同</p><p> *targetType:表明通過那一項(xiàng)來查找,0為學(xué)號(hào),1為姓名,2為名次</p><p> *from:從第from個(gè)記錄開始找</p><p> *返回:找到的記錄的序號(hào),若找不
124、到則返回-1</p><p> *********************************************/</p><p> int findRecord(char*target, int targetType, int from)</p><p><b> {</b></p><p><b
125、> int i;</b></p><p> for(i=from;i<=numWrks;i++)</p><p><b> {</b></p><p> if((targetType==0&&strcmp(target,records[i].num)==0)||(targetType==1&
126、;&strcmp(target,records[i].name)==0)||(targetType==2&&strcmp(target,records[i].post)==0))</p><p><b> return i;</b></p><p><b> }</b></p><p> re
127、turn -1;</p><p><b> }</b></p><p> void queryInfo(void)</p><p><b> {</b></p><p> char str[5];</p><p> char target[20];</p>
128、;<p><b> int type;</b></p><p> int count;</p><p><b> int i;</b></p><p> if(numWrks==0)</p><p><b> {</b></p><p
129、> printf("沒有可供查詢的記錄");</p><p><b> return;</b></p><p><b> }</b></p><p><b> while(1)</b></p><p><b> {</b>
130、;</p><p> printf("請(qǐng)輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p> printf("1.按職工號(hào)\n");</p><p> printf("2.按電話號(hào)碼\n");</p><p> gets(str);</p>&
131、lt;p> if(strlen(str)==0)</p><p><b> break;</b></p><p> if(str[0]=='1')</p><p><b> {</b></p><p> printf("請(qǐng)輸入欲查詢的職工的職工號(hào):"
132、;);</p><p> gets(target);</p><p><b> type=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
133、</p><p> printf("請(qǐng)輸入欲查詢的職工的電話號(hào)碼:");</p><p> gets(target);</p><p><b> type=1;</b></p><p><b> }</b></p><p> i=findReco
134、rd(target,type,0);</p><p><b> if(i==1)</b></p><p><b> {</b></p><p> //打印查詢到的職工信息</p><p> showTable();</p><p><b> }</b
135、></p><p><b> count=0;</b></p><p> while(i!=-1)</p><p><b> {</b></p><p><b> count++;</b></p><p> printf("%s
136、\t%s\t%s\t%s\t%s\t%s\t%f\t%s",records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p> i=findRecord(target,type,
137、i+1);</p><p><b> }</b></p><p> if(count==0)</p><p> printf("沒有符合條件的職工!\n");</p><p><b> else</b></p><p> printf("
138、;一共找到了%d名職工的信息\n\n",count);</p><p><b> }</b></p><p><b> }</b></p><p> /*****************************</p><p><b> *刪除記錄函數(shù)</b>
139、</p><p> ***************************/</p><p> void removeRecord(void)</p><p><b> {</b></p><p> char str[5];</p><p> char target[20];</p
140、><p><b> int type;</b></p><p><b> int i,j;</b></p><p> if(numWrks==0)</p><p><b> {</b></p><p> printf("沒有可供刪除的記錄
141、\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> while(1){</b></p><p> printf("直接輸入回車則結(jié)束移除操作)\n");</
142、p><p> printf("請(qǐng)輸入欲刪除的記錄的職工號(hào):\n");</p><p> gets(target);</p><p><b> type=0;</b></p><p> i=findRecord(target,type,0);</p><p> if(i==
143、-1)printf("沒有符合條件的職工!\n");</p><p> while(i!=-1)</p><p><b> {</b></p><p> showTable();</p><p> printf("%s\t%s\t%s\t%s\t%s\t%s\t%f\t%s"
144、;,records[i].num,records[i].name,records[i].sex,records[i].post,records[i].major,records[i].jobname,records[i].salary,records[i].phonenum);</p><p> printf("確定要?jiǎng)h除這個(gè)職工的信息嗎?(y/N)");</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)報(bào)告--公司員工管理軟件
- c語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告資料
- c++課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告---職工信息管理系統(tǒng)課程設(shè)計(jì)
- c語言課程設(shè)計(jì)-賓館客房管理軟件
- c語言圖形時(shí)鐘課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- c語言課程設(shè)計(jì)-賓館客房管理軟件
- c語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告汽車租賃管理系統(tǒng)剖析
- c語言課程設(shè)計(jì)---職工管理系統(tǒng)設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)——身份證信息管理軟件
- 軟件項(xiàng)目管理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 軟件項(xiàng)目管理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 高級(jí)語言課程設(shè)計(jì)——迷宮實(shí)驗(yàn)報(bào)告
- c語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告成績(jī)記錄簿
- c語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告成績(jī)記錄簿
- c語言課程設(shè)計(jì)報(bào)告--職工信息管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---職工信息管理系統(tǒng)
- c++課程設(shè)計(jì)——學(xué)籍管理系統(tǒng)實(shí)驗(yàn)報(bào)告
- c語言職工設(shè)計(jì)管理課程設(shè)計(jì)
- c語言課程設(shè)計(jì)報(bào)告----職工信息管理系統(tǒng)設(shè)計(jì)
- 《程序語言綜合課程設(shè)計(jì)》實(shí)驗(yàn)報(bào)告
評(píng)論
0/150
提交評(píng)論