版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計</b></p><p> 課程名稱 程序設(shè)計課程設(shè)計 </p><p> 設(shè)計題目 高校在職職工管理軟件 </p><p> 班級與班級代碼 </p><p> 專 業(yè) </
2、p><p> 指導(dǎo)教師: </p><p> 學(xué) 號: </p><p> 姓 名: </p><p><b> 提交日期: </b></p><p> 姓名
3、 課程設(shè)計成績 </p><p><b> 評語:</b></p><p> 指導(dǎo)教師(簽名) </p><p> 年 月 日</p><p> 1 系統(tǒng)功能要求(需求分析):</p><p> 采
4、用結(jié)構(gòu)體數(shù)組或文件形式存儲職工的信息,每個職工應(yīng)包含如下幾方面的信息:職工號、姓名、性別、所屬二級單位、所學(xué)專業(yè)、職稱、月工資,電話號碼。軟件由主函數(shù)(含歡迎界面)和下列6個功能模塊組成:(1)減少一個職工(需指定要刪除職工的職工號);(2)增加一個職工號(需輸入要增加職工號的所有信息);(3)查找一個職工號的信息(需指定職工號或電話號碼);(4)統(tǒng)計指定二級單位的職工人數(shù)、工資總額;(5)按職工的工資多少對職工排序(6)退出程序的運行
5、。(正文宋體4號,行距固定為20英鎊)</p><p> 2 系統(tǒng)總體(概要)設(shè)計思想</p><p> ?。?)開發(fā)與設(shè)計的總體思想</p><p> 高校在職職工管理軟件設(shè)計算法說明:</p><p> STEP1 預(yù)處理,定義結(jié)構(gòu)體</p><p> STEP2 進入歡迎界面</p>&l
6、t;p> STEP3 選擇某一種功能</p><p> STEP4 根據(jù)提示輸入一個字母</p><p> STEP5 對于輸入的字母編輯關(guān)于刪除、增加、排序、查找、統(tǒng)計功能的函數(shù)</p><p> STEP6 如果輸入的字母表示退出,退出系統(tǒng)</p><p><b> 系體模塊結(jié)構(gòu)圖</b></p
7、><p> (3)系統(tǒng)文件及函數(shù)組成、功能(參考P154的表12-1)</p><p><b> 3 系統(tǒng)詳細(xì)設(shè)計</b></p><p><b> ?。?) 函數(shù)的描述</b></p><p> a.本程序總共有8個文件:</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> 要求:將后面的記錄前移,同時改變名次并給出相關(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、 從尾部開始逐個追加記錄</p><p> 要求:將新的記錄追加在記錄尾部,并對記錄進行計數(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> 工作方式: 從頭部開始逐個顯示記錄內(nèi)容</p><p> 要求:報告是否有記錄及記錄條數(shù)和內(nèi)容</p><p> (6).查詢指定職工信息函數(shù)</p><p> 函數(shù)原型:void qu
17、eryInfo(void);//查詢指定的職工信息</p><p> 功能:將一個文件的內(nèi)容追加到另一個文件的尾部</p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 可以按照職工號或電話號碼來查詢</p&
18、gt;<p> 要求:打印查詢到的學(xué)生的信息或給出相關(guān)信息。</p><p> (7). 對職工信息進行排序</p><p> 函數(shù)原型:void sort(void);//對職工進行排序</p><p> 功能:對職工信息進行排序</p><p><b> 參數(shù):void</b></p&g
19、t;<p><b> 返回值:void</b></p><p> 工作方式: 按職工工資多少對職工進行排序</p><p><b> 要求:打印排序結(jié)果</b></p><p> (8). 統(tǒng)計二級單位人數(shù)和工資總額</p><p> 函數(shù)原型:void tongji(voi
20、d);//統(tǒng)計函數(shù)</p><p> 功能:統(tǒng)計二級單位人數(shù)和工資總額</p><p><b> 參數(shù):void</b></p><p><b> 返回值:void</b></p><p> 工作方式: 指定二級單位,然后再進行統(tǒng)計</p><p><b>
21、 要求:統(tǒng)計后打印</b></p><p> (9). 文件存儲操作函數(shù)</p><p> 函數(shù)原型:int saveRecords(void);//文件存儲</p><p> 功能:將記錄存入默認(rèn)文件wor_info或者指定文件</p><p><b> 參數(shù):void</b></p>
22、<p> 返回值:成功0,失敗-1</p><p> 工作方式: 數(shù)組records被保存至指定文件</p><p> 要求:報告是否有記錄可存,是否能正常建立或打開文件,根據(jù)要求執(zhí)行存入操作并報告存入記錄的條數(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、要求:報告是否有記錄可存,是否能夠正常打開文件,是否覆蓋已有記錄以及讀取記錄的條數(shù)</p><p> (11). 結(jié)束程序運行函數(shù)</p><p> 函數(shù)原型:void quit(void);//結(jié)束運行</p><p><b> 功能:結(jié)束程序運行</b></p><p><b> 參數(shù):void&l
25、t;/b></p><p><b> 返回值:void</b></p><p> 工作方式: 根據(jù)要求決定在退出前是否將修改的記錄存入文件</p><p> 要求:結(jié)束運行之前,詢問是否對修改的記錄進行存儲</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欲查找記錄的某一項與target相同;</p><p> int targetType通過什么來查找;</p><p> int from從第from個記錄開始查找</p><p> 返回值:int(找到的記錄的序號),若找不到則返回-1</p><p> 工作方式: 根據(jù)給定的關(guān)鍵字,查找符合記錄的序號</p>&
29、lt;p> 要求:找不到則返回-1</p><p> ?。?)主要函數(shù)流程圖(2個以上,可參考材P148的寫法)</p><p> addRecord quit </p><p><b> (3)編碼(附后)</b></p><p&
30、gt;<b> 4 系統(tǒng)測試</b></p><p> 內(nèi)容包括:程序調(diào)試情況(8幅以上測試結(jié)果截圖);</p><p> 總結(jié):本人C語言程序設(shè)計基礎(chǔ)較差,因此,在寫這個程序的時候遇到了諸多困難,多虧同學(xué)的幫忙我的程序才可以成功地運行,真的是自己之前不夠刻苦,用功,寫代碼這種東西還是要多練,多做題才能有收獲,在寫那個登陸賬號和密碼的函數(shù)的時候,我調(diào)試了好久都
31、沒發(fā)現(xiàn)錯誤,最后。在同學(xué)的幫助下,成功發(fā)現(xiàn)是數(shù)組那里除了問題,居然少打了個中括號。所以本人數(shù)組和指針方面的知識點欠缺,還需要多多練習(xí)。雖然這份程序是參考學(xué)生成績那份來找靈感的,還是出現(xiàn)了好多錯誤,最大的收貨就是看到程序成功運行的那一刻。</p><p><b> 6 結(jié)束語</b></p><p> 感謝李惠坤同學(xué)和林柔佳同學(xué)熱心幫助。</p>&l
32、t;p><b> 參考文獻</b></p><p> [1] 譚浩強,C程序設(shè)計(第二版),北京:清華大學(xué)出版社,2001.1 (左對齊,宋體,五號)</p><p> [2] 陳朔鷹,C語言程序設(shè)計習(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(控制臺輸入輸出
34、)的簡寫,其中定義了通過控制臺進行數(shù)據(jù)輸入和數(shù)據(jù)輸出的函數(shù),主要是一些用戶通過按鍵盤產(chǎn)生的對應(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> {//每個職工包含的信息</p><p> char num[10];//職工號</p><p> char name[10];//姓名</p><p> char sex[3];//性別</p><
36、;p> char post[10];//所屬二級單位</p><p> char major[10];//所學(xué)專業(yè)</p><p> char jobname[10];//職稱</p><p> float salary;//月工資</p><p> char phonenum[11];//電話號碼</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);//對職工進行排序</p><p> void Tongji(void);//統(tǒng)計函數(shù)</p><p> int saveRecords(void);//文件存儲</p><p> int loadRecords(void);//文件讀取</p><p> void quit(void);//
41、結(jié)束運行</p><p> void showTable(void);//輸出表頭</p><p> int findRecord(char* target, int targetType, int from);//char* target欲查找記錄的某一項與target相同;int targetType通過什么來查找;int from從第from個記錄開始查找</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、 這是一個 *\n"); </p><p> printf("\t* 高校在職職工簡單管理程序 *\n");</p><p> printf("\t* 可以對職工信息進行管理 *\n"); </p><p> printf("\t
49、* 歡迎使用管理程序 *\n");</p><p> printf("\t**********************************\n"); </p><p> printf("\n");</p><p> printf("\n");</p>
50、;<p> printf("請輸入用戶名<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)計職工信息\n");</p><p> printf("\t5.對職工信息進行排序\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é)束運行\(zhòng)n");</p><p> printf("\n\t左邊數(shù)字對應(yī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輸入錯誤,重選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é)束運行,退出</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("職工號\t 姓名\t 性別\t 所屬二級單位\t 所學(xué)專業(yè)\t 職稱\t 月工資\t 電話號碼\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個記錄后停下來</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> *大小不夠,會重新申請數(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ù)組空間不足,需要重新申請空間</p><p><b> {</b></p><p> records = realloc(records,(arraySize+INCR_SIZE)*sizeof(WrkInfo));//新空間大小變?yōu)?arraySize+INCR_SIZE)記錄大小,即在原來基礎(chǔ)上增加I
85、NCR_SIZE個記錄大小</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("請輸入職工號:");</p><
87、;p> gets(records[numWrks].num);</p><p> printf("請輸入姓名:");</p><p> gets(records[numWrks].name);</p><p> printf("請輸入性別(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("請輸入所屬二級單位:");</p><p> gets(records[numWrks].post);</p><p> printf("請輸入所學(xué)專業(yè):");</p><p> gets(records[numWrks].major)
90、;</p><p> printf("請輸入職稱:");</p><p> gets(records[numWrks].jobname);</p><p> printf("請輸入月工資:");</p><p> gets(str);</p><p> records[
91、numWrks].salary=(float)atof(str);</p><p> printf("請輸入電話號碼:");</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:欲查找記錄的某一項與target相同</p><p> *targetType:表明通過那一項來查找,0為學(xué)號,1為姓名,2為名次</p><p> *from:從第from個記錄開始找</p><p&
94、gt; *返回:找到的記錄的序號,若找不到則返回-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("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p> printf("1.按職工號\n");</p><p> printf("2.按電話號碼\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;請輸入欲查詢的職工的職工號:");</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("請輸入欲查詢的職工的電話號碼:");</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("請輸入欲刪除的記錄的職工號:\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("確定要刪除這個職工的信息嗎?(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> //取下一個符合條件的記錄</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:欲查找記錄的某一項與target相同</p><p> *targetType:表明通過那一項來查找,0為學(xué)號,1為姓名,2為名次</p><p> *from:從第from個記錄開始找</p><p> *返回:找到的記錄的序號,若找不
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("請輸入查詢的方式:(直接輸入回車則結(jié)束查詢)\n");</p><p> printf("1.按職工號\n");</p><p> printf("2.按電話號碼\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("請輸入欲查詢的職工的職工號:"
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("請輸入欲查詢的職工的電話號碼:");</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("請輸入欲刪除的記錄的職工號:\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("確定要刪除這個職工的信息嗎?(y/N)");</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計報告--公司員工管理軟件
- c語言課程設(shè)計實驗報告資料
- c++課程設(shè)計實驗報告---職工信息管理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計-賓館客房管理軟件
- c語言圖形時鐘課程設(shè)計實驗報告
- c語言課程設(shè)計-賓館客房管理軟件
- c語言課程設(shè)計實驗報告汽車租賃管理系統(tǒng)剖析
- c語言課程設(shè)計---職工管理系統(tǒng)設(shè)計報告
- c語言課程設(shè)計——身份證信息管理軟件
- 軟件項目管理課程設(shè)計實驗報告
- 軟件項目管理課程設(shè)計實驗報告
- 高級語言課程設(shè)計——迷宮實驗報告
- c語言課程設(shè)計實驗報告成績記錄簿
- c語言課程設(shè)計實驗報告成績記錄簿
- c語言課程設(shè)計報告--職工信息管理系統(tǒng)
- c語言課程設(shè)計報告---職工信息管理系統(tǒng)
- c++課程設(shè)計——學(xué)籍管理系統(tǒng)實驗報告
- c語言職工設(shè)計管理課程設(shè)計
- c語言課程設(shè)計報告----職工信息管理系統(tǒng)設(shè)計
- 《程序語言綜合課程設(shè)計》實驗報告
評論
0/150
提交評論