freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

工資管理系統(tǒng)設(shè)計(jì)論文(已修改)

2025-07-04 16:56 本頁面
 

【正文】 工資管理系統(tǒng) 本程序旨在訓(xùn)練基本的編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和結(jié)構(gòu)數(shù)組的各種基本操作。本程序中涉及結(jié)構(gòu)體、數(shù)組、文件等方面的知識(shí)。通過本程序的訓(xùn)練,使我對C語言的文件操作有了一個(gè)更深刻的了解,掌握利用數(shù)組存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)工資管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的信息管理管理系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。 如后圖所示,與利用單鏈表實(shí)現(xiàn)的學(xué)生管理系統(tǒng)不同的是,此工資管理系統(tǒng)主要利用數(shù)組來實(shí)現(xiàn),其數(shù)組元素是結(jié)構(gòu)體類型。整個(gè)系統(tǒng)由如下幾大功能模塊組成。(1) 輸入記錄模塊。輸入記錄模塊主要完成將數(shù)據(jù)存入數(shù)組中的工作。在此工資管理系統(tǒng)中,記錄可以從以二進(jìn)制形式存儲(chǔ)的數(shù)據(jù)文件中讀入,也可以從鍵盤逐個(gè)輸入記錄。記錄由職工的基本信息和工資信息字段構(gòu)成。當(dāng)從數(shù)據(jù)文件中讀入記錄時(shí),它就是在以記錄為單位存儲(chǔ)的數(shù)據(jù)文件中,將記錄逐條復(fù)制到數(shù)組元素中。(2) 查詢記錄模塊。查詢記錄主要完成在數(shù)組中查詢滿足相關(guān)條件的記錄。在此工資管理系統(tǒng)中,用戶可以按照職工編號(hào)或姓名在數(shù)組中進(jìn)行查找。若找到該記錄,則以表格形式打印出此記錄的信息;否則,返回一個(gè)1的值,并打印出未找到該記錄的提示信息。(3) 更新記錄模塊。更新記錄模塊主要完成對記錄的維護(hù)。在此工資管理系統(tǒng)中,實(shí)現(xiàn)對記錄的修改、刪除、插入、和排序操作。一般而言,系統(tǒng)進(jìn)行了這些操作之后,需要將修改的的數(shù)據(jù)存入源數(shù)據(jù)文件。1. 主控main()函數(shù)執(zhí)行流程工資管理系統(tǒng)執(zhí)行流程如后圖所示。它先以可讀寫的方式打開數(shù)據(jù)文件,此文件默認(rèn)為“c:\zggz”,如該文件不存在,則新建此文件。當(dāng)打開文件操作成功后,則從文件中一次讀出一條記錄,添加到新建的數(shù)組中,然后執(zhí)行顯示主菜單和進(jìn)入主循環(huán)操作,進(jìn)行按鍵判斷。在判斷鍵值時(shí),有效的輸入為0~9之間的任意數(shù)值,其他輸入都被視為錯(cuò)誤按鍵。若輸入為0(即變量select=0),則會(huì)繼續(xù)判斷是否在對記錄進(jìn)行更新操作之后進(jìn)行了存盤操作,若未存盤,則全局變量saveflag=1,系統(tǒng)會(huì)提示用戶是否需要進(jìn)行數(shù)據(jù)存盤操作,用戶輸入Y或y,系統(tǒng)會(huì)進(jìn)行存盤操作。最后,系統(tǒng)執(zhí)行退出工資管理系統(tǒng)的操作。若選擇1,則調(diào)用Add()函數(shù),執(zhí)行增加記錄操作;若選擇2,則調(diào)用Del()函數(shù),執(zhí)行刪除記錄操作;若選擇3,則調(diào)用Qur()函數(shù),執(zhí)行查詢記錄操作;若選擇4,則調(diào)用Modify()函數(shù),執(zhí)行修改記錄操作;若選擇5,則調(diào)用Insert()函數(shù),執(zhí)行插入記錄操作;若選擇6,則調(diào)用Tongji()函數(shù),執(zhí)行統(tǒng)計(jì)記錄操作;若選擇7,則調(diào)用Sort()函數(shù),執(zhí)行按降序排序記錄的操作;若選擇88,則調(diào)用Save()函數(shù),執(zhí)行將記錄記錄存入磁盤中的數(shù)據(jù)文件的操作;若選擇9,則調(diào)用Disp()函數(shù),執(zhí)行將記錄以表格形式打印輸出至屏幕的操作;若輸入0~9之外的值,則調(diào)用Wrong()函數(shù),給出按鍵錯(cuò)誤的提示。2 輸入記錄模塊輸入記錄模塊主要實(shí)現(xiàn)將數(shù)據(jù)存入數(shù)組中。當(dāng)從數(shù)據(jù)文件中讀出記錄時(shí),它調(diào)用fread(amp。gz[count],sizeof(ZGGZ),1,fg)文件讀取函數(shù),執(zhí)行一次從文件中讀取一條工資記錄信息存入某個(gè)數(shù)組元素中德操作,并且這個(gè)操作在main()中調(diào)用執(zhí)行,即在工資管理系統(tǒng)進(jìn)入顯示菜單界面時(shí),該操作已經(jīng)執(zhí)行了。若該文件中沒有數(shù)據(jù),系統(tǒng)會(huì)提示數(shù)組為空,沒有任何記錄可操作,此時(shí),用戶應(yīng)選擇1,調(diào)用Add()函數(shù),進(jìn)行記錄的輸入,即完成在數(shù)組中添加元素的操作。查詢記錄模塊主要實(shí)現(xiàn)在數(shù)組中按職工編號(hào)或姓名查找滿足相關(guān)條件記錄。在查詢函數(shù)Qur()中,為了遵循模塊化編程原則,我們將數(shù)組中進(jìn)行的記錄定位操作設(shè)計(jì)成了一個(gè)單獨(dú)函數(shù)int Locate(ZGGZ tp[],char findmess[],char nameornum[]),參數(shù)findmess[]保存要查找的具體內(nèi)容,nameornum[]保存要查找的字段(職位字符串類型的num或者name),若找到該記錄,則返回指向該記錄的數(shù)組元素的下標(biāo),否則;返回一個(gè)—1的值。 更新記錄模塊主要實(shí)現(xiàn)對記錄的修改、刪除、插入和排序操作。因?yàn)橛涗浭且詳?shù)組的結(jié)構(gòu)形式儲(chǔ)存的,所以這些操作都在數(shù)組中完成。下面分別介紹著4個(gè)功能模塊。1) 修改記錄修改記錄的操作需要對數(shù)組中目標(biāo)元素的數(shù)域中的值進(jìn)行修改,他分兩步完成。第一步,輸入要修改的職員編號(hào),輸入后調(diào)用定位函數(shù)Locate()在數(shù)組中逐個(gè)對職員編號(hào)字段的值進(jìn)行比較,直到找到該職員的編號(hào)記錄;第二步,若找到該記錄,則修改除職工編號(hào)之外的各字段的值,并將存盤標(biāo)記變量savegflag置1,表示已經(jīng)對記錄進(jìn)行了修改,但還未執(zhí)行存盤操作。2) 刪除記錄 刪除記錄操作完成刪除指定職員編號(hào)或姓名的記錄,他也分兩步完成。第一步,輸入要修改的職員編號(hào),輸入后調(diào)用定位函數(shù)Locate()在數(shù)組中逐個(gè)對職員編號(hào)字段的值進(jìn)行比較,直到找到該職員的編號(hào)記錄,并返回指向該記錄的數(shù)組元素下標(biāo);第二步,若找到該記錄,則從該記錄所在元素的后續(xù)元素起,依次向前移一個(gè)元素位置,有值的數(shù)組元素個(gè)數(shù)減1.3) 插入記錄 插入記錄操作完成在指定職工編號(hào)的隨后位置插入新的記錄。搜先,他要求用戶輸入某個(gè)員工的職工編號(hào),新的記錄將插入在該記錄之后;然后,提示用戶數(shù)輸入一條新的記錄的信息,這些信息保存在心結(jié)構(gòu)體類型的數(shù)組元素的個(gè)字段中;最后,將該元素插入已經(jīng)確認(rèn)的位置的職工編號(hào)之后。,新的元素B1準(zhǔn)備插入至已有5個(gè)元素的數(shù)組中,插入位置為元素A2之后。具體過程為:先調(diào)用Locate()函數(shù)找到A2在數(shù)組中的下標(biāo),從A4開始,往后移動(dòng),至A2停止移動(dòng),然后再原A3的位置插入元素B1.4) 排序記錄 冒泡排序法屬于內(nèi)部排序中的一種,這是運(yùn)用數(shù)據(jù)值比較后,一句判斷規(guī)則對數(shù)據(jù)位置進(jìn)行交換以達(dá)到排序的目的。針對數(shù)組結(jié)構(gòu)的特點(diǎn),這里采用這種排序法萊實(shí)現(xiàn)按實(shí)發(fā)工資字段的值從高到底對記錄進(jìn)行排序。 冒泡排序法的基本思想為:將相鄰的兩個(gè)數(shù)組遠(yuǎn)足的實(shí)發(fā)工資字段的值進(jìn)行比較,若左邊的值小于右邊的值,則將此兩個(gè)元素的值進(jìn)行交換;若左邊的值大于右邊的值,則此兩個(gè)值的位置不變。右邊的值繼續(xù)和下一個(gè)值做比較,重復(fù)此動(dòng)作,直到比較到最后一個(gè)值。用偽代碼描述如下: 插入B1↓A0A1A2A3A4插入B1前A0A1A2B1A3A4插入B1后 數(shù)據(jù)中插入記錄示意圖if (左邊的值右邊的值) then此兩個(gè)元素的位置互換; else /*左邊的值=右邊的值*/此兩個(gè)元素的位置不變:右邊的元素繼續(xù)和下一個(gè)元素比較;,假設(shè)共有 個(gè)ZGGZ結(jié)構(gòu)數(shù)組元素gz【0】至gz【n1】,其具體比較過程如下。第一輪:從gz【0】比到gz【n1】,實(shí)發(fā)工資字段值最小的元素存放在gz【n1】中。第二輪:從gz【0】比到gz【n2】,實(shí)發(fā)工資字段值最小的元素存放在gz【n2】中。```````第n1輪:從gz【0】比到gz【1】,實(shí)發(fā)工資字段值最小的元素存放在gz【1】中。gz[n]gz[0]gz[1]gz[2]``````gz[n2]gz[n1] 數(shù)組中對記錄 因?yàn)槭前磳?shí)發(fā)工資的降序排序,所以每進(jìn)行一輪比較都會(huì)以交換位置的方式將該輪的最小者移向數(shù)據(jù)的尾端。冒泡排序法的優(yōu)點(diǎn)是,若數(shù)組元素已有部分排好序,則使用冒泡排序法可以快速地完成排序。其缺點(diǎn)則是會(huì)反復(fù)掃描數(shù)據(jù),比較相鄰的兩個(gè)元素,速度不快且沒有效率。它屬于穩(wěn)定排序法。 該模塊的實(shí)現(xiàn)比較簡單,它主要通過依次讀取數(shù)組中元素的數(shù)據(jù)域中的實(shí)發(fā)工資的值進(jìn)行比較判斷的形式,完成工資在各個(gè)等級的人數(shù)統(tǒng)計(jì)。當(dāng)把記錄輸出至文件時(shí),調(diào)用fwrite(amp。tp[i],sizeof(ZGGZ),1,fp)函數(shù),將數(shù)組元素tp[i]中各字段的值,寫入文件指針fp所指的文件;當(dāng)把記錄輸出至屏幕時(shí),調(diào)用void Disp()函數(shù),將數(shù)組中存儲(chǔ)的記錄信息以表格的形式在屏幕上打印出來。進(jìn)入while(1)主循體輸入0~9中的一數(shù)值,選擇相應(yīng)操作判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能輸入是否為0?是否已對修改進(jìn)行了存盤調(diào)用save()函數(shù),進(jìn)行寫數(shù)據(jù)文件操作結(jié)束開始以可讀寫的方式打開一個(gè)新的數(shù)據(jù)結(jié)構(gòu)類型的數(shù)組中將此文件的內(nèi)容讀出,并存入一個(gè)新的結(jié)構(gòu)體類型的數(shù)組中調(diào)用menu()菜單函數(shù)是否是否 主控函數(shù)執(zhí)行流程圖 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本程序定義了結(jié)構(gòu)體emplee,用于存放職工的基本信息和工資信息。typedef struct employee /*標(biāo)記為employee*/{ char num[10]。 char name[15]。 float jbgz。float jj。float kk。float yfgz。float sk。float sfgz。}ZGGZ。 其他字段的含義如下。 num[10]:保存職工編號(hào)。 name[10]: 保存職工姓名。jbgz: 保存職工基本工資。jj: 保存職工獎(jiǎng)金。kk: 保存職工扣款。yfgz: 保存職工應(yīng)發(fā)工資。sk: 保存職工稅款。sfgz: 保存職工實(shí)發(fā)工資。.3 函數(shù)功能描述1)printheader()函數(shù)原型:void printheader()printheader()函數(shù)用于在以表格形式顯示出記錄時(shí),打印輸出表頭信息。2)printdata()函數(shù)原型:void printada(ZGGZpp)函數(shù)用于在以表格形式顯示的方法,打印輸出單個(gè)數(shù)組元素pp中的記錄消息。3)Disp()函數(shù)原型:void Disp(ZGGZtp[],int n)Disp()函數(shù)用于顯示 tp 數(shù)組中存儲(chǔ)的n 條記錄,內(nèi)容為employee 結(jié)構(gòu)中定義的內(nèi)容。4)numberinput()函數(shù)原型:float numberinput(char*notice)numberinput()函數(shù)用于輸入數(shù)值型數(shù)據(jù),notice用于保存 printf()中輸出的提示消息。5)Stringinput()函數(shù)原型:void Stringinput(char*t,int lens,char*notice)
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1