版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告 (c 語言實(shí)現(xiàn)附源碼)(員工工資管 理系統(tǒng))程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告題目:?jiǎn)T工工資管理系統(tǒng)院(系):信息科學(xué)與工程學(xué)院專業(yè)班級(jí):學(xué)生姓名:學(xué) 號(hào):指導(dǎo)教師:20 16 年12 月12 日至20 16 年12 月23 日武昌首義學(xué)院制程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)任務(wù)書、設(shè)計(jì)(調(diào)查報(bào)告/論文)題目員工工資管理系統(tǒng) 二、設(shè)計(jì)(調(diào)查報(bào)告/論文)主要內(nèi)容1 .員工工資管理系統(tǒng)主要內(nèi)容:設(shè)計(jì)一個(gè)利用文件處理方式實(shí)現(xiàn)對(duì)員工工資(包括員工編號(hào)、員工姓名、應(yīng)發(fā)、扣 款和實(shí)發(fā))進(jìn)行管理,具有增加數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)、列表顯示數(shù)據(jù) 以及重組文件的功能。員工工資管理系統(tǒng)由六大功能模塊組
2、成:增加數(shù)據(jù)該模塊完成將輸入的數(shù)據(jù)存入數(shù)據(jù)文件中,用戶一次可輸入多個(gè)員工的信息。更新數(shù)據(jù)該模塊用于實(shí)現(xiàn)對(duì)記錄的修改,首先用戶輸入員工的編號(hào),然后查詢?cè)搯T工的信息, 最后更新該員工的信息。查詢數(shù)據(jù)該模塊可選擇按員工編號(hào)查詢,或者按員工姓名進(jìn)行查詢,然后列出滿足條件的且 未作刪除標(biāo)記的員工信息。刪除數(shù)據(jù)該模塊用于刪除指定編號(hào)的員工工資信息,為提高效率,只作刪除標(biāo)記,不在物理 上刪除信息,可稱為邏輯刪除。顯示數(shù)據(jù)該模塊用于以列表方式顯示所有未作刪除標(biāo)記的員工信息。重組文件當(dāng)邏輯刪除的信息太多時(shí),將會(huì)降低查詢效率。重組文件模塊專門用于在物理上刪 除作有刪除標(biāo)記的信息,這樣不但提高查詢效率,同時(shí)也節(jié)約存
3、儲(chǔ)空間。統(tǒng)計(jì)輸出輸出實(shí)發(fā)工資最高的員工工資信息。統(tǒng)計(jì)輸出員工實(shí)發(fā)工資的平均工資。統(tǒng)計(jì)輸出超過實(shí)發(fā)平均工資的員工人數(shù)。排序該模塊按員工實(shí)發(fā)工資由高到低的順序排序輸出所有員工信息。要求本系統(tǒng)采用結(jié)構(gòu)體等數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)以菜單方式工作。2 .學(xué)生學(xué)籍管理系統(tǒng)主要內(nèi)容:設(shè)計(jì)一個(gè)利用文件處理方式,實(shí)現(xiàn)對(duì)學(xué)生學(xué)籍信息(包括:學(xué)號(hào),姓名,性別,年 齡,籍貫,系別,專業(yè),班級(jí))進(jìn)行添加、修改、刪除、查找、統(tǒng)計(jì)輸出等操作。學(xué)生 學(xué)籍管理系統(tǒng)的功能要求如下:增加數(shù)據(jù)該模塊完成將輸入的數(shù)據(jù)存入數(shù)據(jù)文件中,用戶一次可輸入多個(gè)學(xué)生的學(xué)籍信息。更新數(shù)據(jù)該模塊用于實(shí)現(xiàn)對(duì)記錄的修改,首先用戶輸入學(xué)生的學(xué)號(hào),然后查詢?cè)搶W(xué)生的學(xué)籍
4、 信息,最后更新該學(xué)生的學(xué)籍的信息。查詢數(shù)據(jù)該模塊可選擇按學(xué)生的學(xué)號(hào)查詢, 或者按學(xué)生的姓名查詢,再或者按學(xué)生的班級(jí)查 詢,然后列出滿足條件的且未作刪除標(biāo)記的學(xué)生學(xué)籍信息。刪除數(shù)據(jù)該模塊用于刪除指定編號(hào)的學(xué)生學(xué)籍信息,為提高效率,只作刪除標(biāo)記,不在物理 上刪除信息,可稱為邏輯刪除。顯示數(shù)據(jù)該模塊用于以列表方式顯示所有未作刪除標(biāo)記的學(xué)生學(xué)籍信息。重組文件當(dāng)邏輯刪除的信息太多時(shí),將會(huì)降低查詢效率。重組文件模塊專門用于在物理上刪 除作有刪除標(biāo)記的信息,這樣不但提高查詢效率,同時(shí)也節(jié)約存儲(chǔ)空間。統(tǒng)計(jì)輸出3 )按專業(yè)輸出所有學(xué)生的學(xué)籍信息。4 )統(tǒng)計(jì)輸出學(xué)生的平均年齡。5 )統(tǒng)計(jì)輸出超過平均年齡的學(xué)生人
5、數(shù)。排序該模塊按學(xué)生學(xué)號(hào)由低到高的順序排序輸出所有學(xué)生學(xué)籍信息。要求本系統(tǒng)采用結(jié)構(gòu)體等數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)以菜單方式工作。3.班級(jí)成績(jī)管理系統(tǒng)主要內(nèi)容:對(duì)一個(gè)有N個(gè)學(xué)生的班級(jí),每個(gè)學(xué)生有M門課程。每個(gè)學(xué)生應(yīng)當(dāng)包括如下信息:學(xué)號(hào)、姓名、M門課程名稱。該系統(tǒng)實(shí)現(xiàn)對(duì)班級(jí)成績(jī)的添加、修改、刪除、查找、統(tǒng)計(jì)輸出等操作的管理。功能要求如下:增加數(shù)據(jù)該模塊完成將輸入的數(shù)據(jù)存入數(shù)據(jù)文件中,用戶一次可輸入多個(gè)學(xué)生的基本信息。更新數(shù)據(jù)該模塊用于實(shí)現(xiàn)對(duì)記錄的修改,首先用戶輸入學(xué)生的學(xué)號(hào),然后查詢?cè)搶W(xué)生的基本 信息,最后更新該學(xué)生的基本信息。查詢數(shù)據(jù)該模塊可選擇按學(xué)生的學(xué)號(hào)查詢, 或者按學(xué)生的姓名查詢,然后列出滿足條件的且
6、 未作刪除標(biāo)記的學(xué)生基本信息。刪除數(shù)據(jù)該模塊用于刪除指定編號(hào)的學(xué)生基本信息,為提高效率,只作刪除標(biāo)記,不在物理 上刪除信息,可稱為邏輯刪除。顯示數(shù)據(jù)該模塊用于以列表方式顯示所有未作刪除標(biāo)記的學(xué)生基本信息。重組文件當(dāng)邏輯刪除的信息太多時(shí),將會(huì)降低查詢效率。重組文件模塊專門用于在物理上刪 除作有刪除標(biāo)記的信息,這樣不但提高查詢效率,同時(shí)也節(jié)約存儲(chǔ)空間。統(tǒng)計(jì)輸出1)顯示每門課程成績(jī)最高的學(xué)生的基本信息。2)顯示每門課程的平均成績(jī)。3)顯示超過某門課程平均成績(jī)的學(xué)生人數(shù)。排序該模塊按學(xué)生學(xué)號(hào)由低到高的順序排序輸出所有學(xué)生的基本信息。要求本系統(tǒng)采用結(jié)構(gòu)體等數(shù)據(jù)結(jié)構(gòu)。系統(tǒng)以菜單方式工作。課程設(shè)計(jì)要求:課程
7、設(shè)計(jì)從第一、二和三道題中選一道題完成。其中,學(xué)號(hào)尾數(shù)為0、2、4、8的做第一道題;學(xué)號(hào)尾數(shù)為1、3、7的做第二道題;學(xué)號(hào)尾數(shù)為 5、6、9的做第三道題。系統(tǒng)要求在Microsoft Visual C+ 6.0編譯平臺(tái)上采用 C語言編程實(shí)現(xiàn)。課程設(shè)計(jì)報(bào)告(要求正規(guī)打印,A4幅面),內(nèi)容包括:題目需求與總體設(shè)計(jì)(描述系統(tǒng)要實(shí)現(xiàn)什么功能;系統(tǒng)怎么實(shí)現(xiàn),繪制系統(tǒng)功能模塊結(jié)構(gòu)圖;數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)及用法說明)詳細(xì)設(shè)計(jì)(描述系統(tǒng)包含的主函數(shù)和子函數(shù);解釋各個(gè)功能模塊的軟件功能;畫 系統(tǒng)的總體流程圖,某種查詢、插入、刪除程序?qū)崿F(xiàn)的子函數(shù)流程圖,要求采用標(biāo)準(zhǔn)流程圖圖符至少畫兩個(gè)流程圖)編碼與實(shí)現(xiàn)(只能使用C語言,
8、源程序編寫格式要按照縮進(jìn)方式,源程序要有詳 細(xì)的注釋,使程序容易閱讀。源程序編寫格式的規(guī)范和注釋體現(xiàn)程序員的素質(zhì), 必須從本課程設(shè)計(jì)開始培養(yǎng)。)運(yùn)行結(jié)果(包括輸入數(shù)據(jù)的結(jié)果,查詢、修改、刪除的結(jié)果,可以將輸出的結(jié)果以截屏方式呈現(xiàn)到課程設(shè)計(jì)報(bào)告中)總結(jié)(必須真實(shí)的說出自己在課程設(shè)計(jì)中的切身體會(huì)。例如:課程設(shè)計(jì)如何構(gòu)思、如何設(shè)計(jì)、如何編程、如何調(diào)試、遇到的主要問題和解決方法,哪些地方使你“痛 苦不堪”;創(chuàng)新之處;課程設(shè)計(jì)中存在的不足,需進(jìn)一步改進(jìn)的設(shè)想等等。)注:每人以班級(jí)+學(xué)號(hào)+姓名創(chuàng)建目錄,目錄需包括課程設(shè)計(jì)報(bào)告電子文檔和源程序 以備檢查。然后由各班學(xué)習(xí)委員匯總到 U盤上統(tǒng)一提交。三、原始資料
9、1 .游洪躍,彭駿,譚斌.C語言程序設(shè)計(jì)實(shí)驗(yàn)與課程設(shè)計(jì)教程.北京:清華大學(xué)出 版社,2011.2 .孫承愛,趙衛(wèi)東.程序設(shè)計(jì)基礎(chǔ) 一基于C語言(第2版).科學(xué)出版社,2010.四、要求的設(shè)計(jì)(調(diào)查/論文)成果1 .課程設(shè)計(jì)報(bào)告2 .課程設(shè)計(jì)軟件五、進(jìn)程安排布置任務(wù),查找資料、需求分析 1天總體設(shè)計(jì)1天詳細(xì)設(shè)計(jì)1天編制源程序?qū)崿F(xiàn)3天測(cè)試與修改1天撰寫課程設(shè)計(jì)報(bào)告2天六、主要參考資料1 譚浩強(qiáng).C程序設(shè)計(jì).第四版.清華大學(xué)出版社,2010.2 蘇小紅.C語言大學(xué)實(shí)用教程.第2版.電子工業(yè)出版社,2008.指導(dǎo)教師(簽名)1需求與總體設(shè)計(jì) 12詳細(xì)設(shè)計(jì)13編碼實(shí)現(xiàn)44運(yùn)行結(jié)果21總結(jié) 241需求與總
10、體設(shè)計(jì)1.1 需求描述設(shè)計(jì)一個(gè)利用文件處理方式實(shí)現(xiàn)對(duì)員工工資(包括員工編號(hào)、員工姓名、年月、 崗位工資、獎(jiǎng)金、扣款和實(shí)發(fā))進(jìn)行管理,具有增加數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)、刪 除數(shù)據(jù)、列表顯示數(shù)據(jù)以及重組文件的功能。1.2 總體設(shè)計(jì)先以登陸函數(shù)登陸,再進(jìn)入主菜單,菜單中顯示各個(gè)要實(shí)現(xiàn)的操作,以菜單將各個(gè) 函數(shù)聯(lián)系起來,對(duì)菜單操作以實(shí)現(xiàn)系統(tǒng)的目的。1.3 數(shù)據(jù)結(jié)構(gòu)struct user/登陸者信息char un10;char up10;us3 = "aaa","111","bbb","222","ccc"
11、;,"333" ;struct yg/員工結(jié)構(gòu)體short zt; /數(shù)據(jù)狀態(tài)long bh; /編號(hào)char name20; /名字char time11; 時(shí)間long money; /基本工資long jj; /獎(jiǎng)金long kk; /扣款long sf; /實(shí)發(fā)工資;整個(gè)程序只運(yùn)用了結(jié)構(gòu)體的數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)體運(yùn)用于登陸者信息和員工信息,將員 工信息封裝在一個(gè)結(jié)構(gòu)體里,再創(chuàng)建結(jié)構(gòu)體數(shù)組,將多個(gè)員工信息儲(chǔ)存在結(jié)構(gòu)體數(shù)組中2詳細(xì)設(shè)計(jì)2.1系統(tǒng)功能設(shè)計(jì)主函數(shù)和子函數(shù):系統(tǒng)包含一個(gè)主函數(shù),和子函數(shù),分別有登陸子函數(shù),菜單子函數(shù),增加數(shù)據(jù)子函 數(shù),更新數(shù)據(jù)子函數(shù),查詢數(shù)據(jù)子函數(shù),
12、刪除數(shù)據(jù)子函數(shù),統(tǒng)計(jì)數(shù)據(jù)子函數(shù),重組文件 子函數(shù),排序數(shù)據(jù)子函數(shù),最后兩個(gè)分別是讀取文件和寫入文件子函數(shù)。各個(gè)函數(shù)的功能:主函數(shù)是一個(gè)入口程序從這里進(jìn)入,再進(jìn)入登陸函數(shù),實(shí)現(xiàn)登陸操作。登陸函數(shù),只有擁有正確賬號(hào)密碼,正確的操作才可以進(jìn)入菜單界面進(jìn)行下一步的 操作,并且輸入錯(cuò)誤三次后將會(huì)提示并強(qiáng)制退出。菜單界面利用switch()函數(shù)將各個(gè)函數(shù)聯(lián)系起來實(shí)現(xiàn)真正的菜單,輸入正確的序號(hào) 可以進(jìn)行后續(xù)的各個(gè)操作。讀取函數(shù),將特定文件中的信息,以特定的方式讀取到正在運(yùn)行的程序中,實(shí)現(xiàn)讀 寫操作。寫入函數(shù),在添加、更新、刪除、重組操作過后進(jìn)行寫入操作,將變換后的數(shù)據(jù)重 新寫入文件中。注:每次寫入都是將程序
13、中的所有數(shù)據(jù)重新寫入文件。增加函數(shù),可以新添員工,并將員工的數(shù)據(jù)輸入,并利用寫入函數(shù),寫入文件中。 在增加后會(huì)提示是否繼續(xù)增加,提供了方便。并且如果原數(shù)據(jù)中有相同編號(hào)的員工,會(huì) 在輸入編號(hào)后提示有相同的編號(hào)的員工,并重新輸入編號(hào)。增加了程序的健全性。更新數(shù)據(jù)函數(shù),以編號(hào)來確定更新的員工,更新將重新輸入該編號(hào)員工的信息,并 在更新后執(zhí)行寫入。刪除函數(shù),執(zhí)行該函數(shù)后,將有兩種選擇,按編號(hào)刪除,或按名字刪除,正確輸入 后將會(huì)將該編號(hào)或姓名的數(shù)據(jù)中的一項(xiàng)zt的值更改為1,使其在其他操作時(shí)不被識(shí)別, 以達(dá)到不刪除數(shù)據(jù),但達(dá)到相同的效果的邏輯刪除。顯示函數(shù),有兩種顯示方式,按學(xué)號(hào)顯示或按名字顯示,學(xué)號(hào)顯示
14、為從小到大顯示。重組函數(shù),將文件中邏輯刪除的數(shù)據(jù)物理刪除,用來節(jié)省儲(chǔ)存空間,并可以加快運(yùn) 算速度。統(tǒng)計(jì)數(shù)據(jù),將文件中的數(shù)據(jù)統(tǒng)計(jì)、計(jì)算,并輸出,給人以直觀的方式顯示數(shù)據(jù)。排序函數(shù),將數(shù)據(jù)以實(shí)發(fā)工資從大到小排序。22.2系統(tǒng)流程設(shè)計(jì)3登陸者信息員工結(jié)構(gòu)體定義數(shù)據(jù)體數(shù)組全局變量,人數(shù),包括登陸的次數(shù),用全局變讀取文件函數(shù)/讀取文件3編碼實(shí)現(xiàn)#define MAX 100#include<stdio.h>#include<string.h>#include<stdlib.h> struct user/ char un10; char up10;us3 = "
15、;aaa","111","bbb","222","ccc","333" ;struct yg/ short zt; /數(shù)據(jù)狀態(tài)long bh; / 編號(hào) char name20; /名字char time11;/時(shí)間long money;/基本工資long jj; / 獎(jiǎng)金 long kk;/扣款long sf;/實(shí)發(fā)工資;yg yMAX;/int r = 0;/邏輯刪除人數(shù) int p = 0;/量能在登陸三次失敗時(shí)退出程序 void read()/ FILE *fp; char b
16、; int i; b = '0' printf("即將讀取文件員工信息.datn");if (fp = fopen("員工信息.dat", "rb") = NULL)printf(" 員工信息.dat文件不存在n");printf("是否重新創(chuàng)建該文件?n");printf(" 創(chuàng)建(y)員工信息.dat或 退出(n)n");getchar();b = getchar();while (getchar() != 'n')if (b = '
17、;Y' | b = 'N')b += 32;while (b != 'y'&&b != 'n') printf("輸入錯(cuò)誤!請(qǐng)重新輸入!n");b = getchar();while (getchar() != 'n')if (b = 'Y' | b = 'N')b += 32;if (b = 'y')if (fp = fopen("員工信息.dat", "wb") = NULL) /文件不存在則創(chuàng)建
18、文件printf(" 創(chuàng)建文件失敗!n");printf("按下任意鍵以退出程序!n");getchar();exit(1);if (b = '0')fread(&r, 4, 1, fp);printf("讀取成功!n");elseprintf("創(chuàng)建文件成功!n");if (r != 0)for (i = 0; i < r; i+)fread(&yi, sizeof(yg), 1, fp);32fclose(fp);void save()FILE *fp;int i;if (
19、fp = fopen(/保存文件函數(shù)員工信息.dat", "wb") = NULL)printf("保存文件失敗!n");printf("按下任意鍵以退出程序!n");getchar();exit;elsefwrite(&r, 4, 1, fp);if (r != 0)for (i = 0; i < r; i+)fwrite(&yi, sizeof(yg), 1, fp);fclose(fp);增加數(shù)據(jù)函數(shù)新建員工信息時(shí),狀態(tài)為0 用循環(huán)來尋找、避免相同編號(hào)的員void zj_data()/yg yua
20、ngong;char b;int i;int k = 0;yuangong.zt = 0;/do/printf(" 編號(hào):(例如:123456)n");scanf("%d”, &yuangong.bh);for (i = 0; i < r; i+)if (yi.bh = yuangong.bh&&yi.zt=0) printf("已有同編號(hào)員工無法添加!n");printf("請(qǐng)重新輸入!n");k = 1;break;else if (i = r - 1) k = 0; while (k =
21、1);printf(" 姓名:(例如:張三(or tom)n");scanf("%s", );printf(" 年月:(例如:2015.11.11)n");scanf("%s", yuangong.time);printf("崗位工資:(例如:50000)n");scanf("%d”, &yuangong.money);printf(" 獎(jiǎng)金:(例如:2000)n");scanf("%d”, &yuangong.j
22、j);printf("扣款:(例如:100)n");scanf("%d”, &yuangong.kk);printf("實(shí)發(fā)工資為:(崗位工資+獎(jiǎng)金-扣款)n");yuangong.sf = yuangong.money + yuangong.jj - yuangong.kk;printf("%dn", yuangong.sf);yr = yuangong;r+;/新建員工信息時(shí)人數(shù)r+save();printf("添加成功!n");getchar();/防止下面一個(gè)C賣取到上一個(gè)的回車print
23、f("是否繼續(xù)添加員工?(y/n)n");b = getchar();while (getchar() != 'n');if (b = 'Y' | b = 'N')b += 32;while (b != 'y'&&b != 'n')printf("輸入錯(cuò)誤!請(qǐng)重新輸入!n");b = getchar();while (getchar() != 'n')if (b = 'Y' | b = 'N')b += 32;i
24、f (b = V)zj_data();void gx_data()/更新數(shù)據(jù)yg yuangong;long num;int i;printf("n請(qǐng)輸入要更新的員工的編號(hào)!n");scanf("%d”, &num);for (i = 0; i < r; i+)if (yi.bh = num&&yi.zt = 0)yuangong = yi;printf("當(dāng)前該員工信息為:n");printf("編號(hào):dn", yuangong.bh);printf("姓名:sn", yu
25、);printf(" 年月:sn", yuangong.time);printf(" 崗位工資:dn", yuangong.money);printf("獎(jiǎng)金:dn", yuangong.jj);printf("扣款:dn", yuangong.kk);printf(" 實(shí)發(fā)工資:%dn", yuangong.sf);printf("按下任意鍵輸入更新后的信息!n");getchar();getchar();printf(" 編號(hào):(例如:12
26、3456)n");scanf("%d”, &yuangong.bh);printf(" 姓名:(例如:張三(or tom)n");scanf("%s", );printf(" 年月:(例如:2015.11.11)n");scanf("%s", yuangong.time);printf("崗位工資:(例如:50000)n");scanf("%d”, &yuangong.money);printf("獎(jiǎng)金:(例如:2
27、000)n");scanf("%d”, &yuangong.jj);printf(" 扣款:(例如:100)n");scanf("%d”, &yuangong.kk);printf("實(shí)發(fā)工資為:(崗位工資+獎(jiǎng)金-扣款)n");yuangong.sf = yuangong.money + yuangong.jj - yuangong.kk;printf("%dn", yuangong.sf);yi = yuangong;save();printf("更新成功!n");b
28、reak;else if (i = r - 1)printf("查無此人!n");void cz_data() /查詢數(shù)據(jù)yg yuangong;int a, i;long num;char na10;printf("n請(qǐng)選擇查詢方式!n");/printf(" *n");分為按編號(hào)查詢和姓名查詢printf(" * 1printf(" * 2printf(" * 3、編號(hào)查詢、姓名查詢、返回菜單*n");*n");*n");printf(" *n");s
29、canf("%d", &a);if (a = 1)printf("請(qǐng)輸入查詢員工的編號(hào):");scanf("%d”, &num);for (i = 0; i < r; i+)/編號(hào)查詢則循環(huán)r次,查找狀態(tài)為0且編號(hào)與所輸入的數(shù)字相同的數(shù)據(jù)if (yi.zt = 0 && yi.bh = num) yuangong = yi;printf("當(dāng)前該員工信息為:n");printf("編號(hào):dn", yuangong.bh);printf("姓名:sn"
30、;, );printf(" 年月:sn", yuangong.time);printf(" 崗位工資:dn", yuangong.money);printf("獎(jiǎng)金:dn", yuangong.jj);printf("扣款:dn", yuangong.kk);printf("實(shí)發(fā)工資:%dn", yuangong.sf);break;else if (i = r - 1)printf("查無此人!n");else if (a = 2)printf(&
31、quot;請(qǐng)輸入查詢員工的姓名:");scanf("%s", na);for (i = 0; i < r; i+)/姓名查詢則循環(huán)r次,查找狀態(tài)為0且編號(hào)與所輸入的字符串相同的數(shù)據(jù)if (strcmp(, na) = 0) && yi.zt = 0) yuangong = yi;printf("當(dāng)前該員工信息為:n");printf("編號(hào):dn", yuangong.bh);printf("姓名:sn", );printf(" 年月
32、:sn", yuangong.time);printf(" 崗位工資:dn", yuangong.money);printf("獎(jiǎng)金:dn", yuangong.jj);printf("扣款:dn", yuangong.kk);printf("實(shí)發(fā)工資:%dn", yuangong.sf);break;else if (i = r - 1)printf("查無此人!n");else if (a = 3) elseprintf("輸入錯(cuò)誤!n"); cz_data()
33、;void sc_data()/刪除數(shù)據(jù)yg yuangong;long num;int a, i, b;char na10;printf("n請(qǐng)選擇!n");按編號(hào)刪除和姓名刪除printf(" *n");/刪除也printf(" * 1printf(" * 2printf(" * 3、按編號(hào)刪除、按姓名刪除、返回主菜單*n")*n")*n")printf(" *n");scanf("%d", &a);if (a = 1)printf("
34、;請(qǐng)輸入要?jiǎng)h除員工的編號(hào):”);scanf("%d", &num);for (i = 0; i < r; i+)if (yi.zt = 0 && yi.bh = num)yuangong = yi;printf(" printf(" printf("當(dāng)前該員工信息為:n");編號(hào):dn", yuangong.bh);姓名:sn", );printf(" 年月:sn", yuangong.time);printf("崗位工資:dn&
35、quot;, yuangong.money);printf("獎(jiǎng)金:dn", yuangong.jj);printf("扣款:dn", yuangong.kk);printf("實(shí)發(fā)工資:%dn", yuangong.sf);yi.zt = 1;save();防止下面一printf("刪除成功!n");getchar();/j%c讀取到上一個(gè)的回車printf("是否繼續(xù)刪除員工?(y/n)n");b = getchar();while (getchar() != 'n');if
36、 (b = 'Y' | b = 'N')b += 32;while (b != 'y'&&b != 'n')printf("輸入錯(cuò)誤!請(qǐng)重新輸入!n");b = getchar();while (getchar() != 'n')if (b = 'Y' | b = 'N')b += 32;if (b = 'y') sc_data();break;else if (i = r - 1) printf("查無此人,無法刪除!n
37、");else if (a = 2)printf("請(qǐng)輸入刪除員工的姓名:");scanf("%s", na);for (i = 0; i < r; i+)if (strcmp(, na) = 0) && yi.zt = 0)yuangong = yi;printf("當(dāng)前該員工信息為:n");printf("編號(hào):dn", yuangong.bh);printf("姓名:sn", );printf(" 年月:sn
38、", yuangong.time);printf(" 崗位工資:dn", yuangong.money);printf("獎(jiǎng)金:dn", yuangong.jj);printf("扣款:dn", yuangong.kk);printf("實(shí)發(fā)工資:%dn", yuangong.sf);yi.zt = 1;save();防止下面一printf("刪除成功!n");getchar();/j%c讀取到上一個(gè)的回車printf("是否繼續(xù)刪除員工?(y/n)n");b =
39、getchar();while (getchar() != 'n');if (b = 'Y' | b = 'N')b += 32;while (b != 'y'&&b != 'n')printf("輸入錯(cuò)誤!請(qǐng)重新輸入!n");b = getchar();while (getchar() != 'n')if (b = 'Y' | b = 'N')b += 32;if (b = 'y') sc_data();break
40、;else if (i = r - 1)printf("查無此人,無法刪除!n");/輸入為3時(shí)else if (a = 3)不執(zhí)行操作返回主菜單 elseprintf("輸入錯(cuò)誤!n");sc_data();void xs_data()/yg yuangongMAX, t;int a;顯示數(shù)據(jù)int i, j;int k = 0;printf("n請(qǐng)選擇顯示方式!n");printf(" *n");printf(" * 1printf(" * 2printf(" * 3、按編號(hào)顯小、
41、按姓名顯示、返回主菜單*n")*n")*n")printf(" *n"); scanf("%d", &a);for (i = 0; i < r; i+)yuangongi = yi;if (yi.zt = 1)k+;if (k = r)printf(" 無員工信息!n");a = 3;if (a = 1)/按編號(hào)顯小時(shí)用冒泡排序從大到小排序for (i = 1; i <= r; i+)for (j = 0; j<r - i; j+)if (yuangongj.bh > yu
42、angongj + 1.bh)t = yuangongj;yuangongj = yuangongj + 1;yuangongj + 1 = t;printf(" 按編號(hào)排列如下:n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10sn","編號(hào)","姓名"," 年月丁崗位工資?獎(jiǎng)金","扣款?實(shí)發(fā)工資)for (i = 0; i<r; i+)if (yuangongi.zt = 0)printf("%-10d%-10s%-10s
43、%-10d%-10d%-10d%-10dn", yuangongi.bh, , yuangongi.time, yuangongi.money, yuangongi.jj, yuangongi.kk, yuangongi.sf);printf("顯示完畢!n");else if (a = 2)/按名字顯示時(shí)用冒泡排序從大到小排序,用strcmp來比較字符串的大小for (i = 1; i <= r; i+)for (j = 0; j<r - i; j+)if (strcmp(, yuangongj
44、 + 1.name) > 0)t = yuangongj;yuangongj = yuangongj + 1;yuangongj + 1 = t;printf(" 按姓名排列如下:n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10sn","編號(hào)","姓名"," 年月丁崗位工資?獎(jiǎng)金","扣款?實(shí)發(fā)工資)for (i = 0; i<r; i+)if (yuangongi.zt = 0)printf("%-10d%-10s%-
45、10s%-10d%-10d%-10d%-10dn", yuangongi.bh, , yuangongi.time, yuangongi.money,yuangongi.jj, yuangongi.kk, yuangongi.sf); printf("顯示完畢!n");else if (a = 3) else printf("輸入錯(cuò)誤!n"); cz_data();void chongz_data()/int i, j;int k = 0;for (i = 0; i < r; i+)/數(shù)據(jù)剔除,并將剔除數(shù)據(jù)的個(gè)
46、數(shù)記錄if (yi.zt = 1)for (j = i; j < r; j+) yj = yj + 1;k+;r -= k;/save(); printf(" 重組成功!n");void tj_data()/yg yuangongMAX;int max, m, k = 0;double ave = 0;int n = 0;int i;for (i = 0; i < r; i+)/重組文件循環(huán)r次,將狀態(tài)為1的將人數(shù)r重新計(jì)算統(tǒng)計(jì)數(shù)據(jù)計(jì)算文件中邏輯刪除的數(shù)據(jù)個(gè)數(shù)kyuangongi = yi;if (yuangongi.zt = 1) k+;for (i = 0;
47、 i < r; i+)/將數(shù)組中第一個(gè)狀態(tài)為0的數(shù)據(jù)的實(shí)發(fā)工資賦給max并記錄是第幾位,跳出循環(huán)if (yuangongi.zt = 0)max = yuangongi.sf;m = i;break;if (yuangong0.zt = 0)/第一個(gè)數(shù)據(jù)是否邏輯刪除?否,將實(shí)發(fā)工資賦給ave未計(jì)算的平均值ave = yuangong0.sf;for (i = 1; i < r; i+)循環(huán)找出最大值,并將所有正常數(shù)據(jù)加入未計(jì)算的ave中if (max < yuangongi.sf) && (yuangongi.zt = 0) m = i;if (yuangon
48、gi.zt = 0) ave += yuangongi.sf;ave = ave / (r - k);/計(jì)算 avefor (i = 0; i < r; i+)/將數(shù)據(jù)中所有大于ave的數(shù)據(jù),統(tǒng)計(jì)if (yuangongi.sf > ave) && (yuangongi.zt = 0) n+;printf("n 最高實(shí)發(fā)工資員工信息為:n");/ 輸出結(jié)果printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10sn","編號(hào)","姓名","年月 &q
49、uot;,"崗位工資","獎(jiǎng)金?扣款”,"實(shí)發(fā)工資)printf("%-10d%-10s%-10s%-10d%-10d%-10d%-10dn", yuangongm.bh, , yuangongm.time, yuangongm.money, yuangongm.jj, yuangongm.kk, yuangongm.sf);printf("平均工資為:%.2fn", ave);printf("超過平均工資人數(shù)為:%dnn", n);void px_data()/排序
50、數(shù)據(jù)yg yuangongMAX, t;int num = 0;int i, j;for (i = 0; i < r; i+) yuangongi = yi;for (i = 1; i <= r; i+)/冒泡排序排序所有數(shù)據(jù)for (j = 0; j < r - i; j+)if (yuangongj.sf<yuangongj + 1.sf)t = yuangongj;yuangongj = yuangongj + 1;yuangongj + 1 = t;printf("n所有員工信息為:n");printf("%-10s%-10s%-1
51、0s%-10s%-10s%-10s%-10sn","編號(hào)","姓名","年月 ","崗位工資","獎(jiǎng)金?扣款”,"實(shí)發(fā)工資)for (i = 0; i<r; i+)if (yuangongi.zt = 0)printf("%-10d%-10s%-10s%-10d%-10d%-10d%-10dn", yuangongi.bh, , yuangongi.time, yuangongi.money, yuangongi.jj, yuang
52、ongi.kk, yuangongi.sf);void cd()/菜單函數(shù)int l;doprintf("歡迎進(jìn)入員工工資管理系統(tǒng)菜單!n");printf(" n");printf(" *1.增加數(shù)據(jù)l*n")printf(" *2.更新數(shù)據(jù)l*n")printf(" *3.查詢數(shù)據(jù)l*n")printf(" *4.刪除數(shù)據(jù)l*n")printf(" *5.顯示數(shù)據(jù)l*n")printf(" *6.重組數(shù)據(jù)l*n")printf(&q
53、uot; *7.統(tǒng)計(jì)輸出l*n")printf(" *8.排序數(shù)據(jù)l*n")printf(" *9.退出*n");printf(" printf("其它輸入為退出*n");|*nn");printf("請(qǐng)輸入你的選擇:n");scanf("%d", &l);switch (l)即將返回主菜單n"); system("PAUSE");case 1:zj_data(); printf("break;/system用于返回主
54、菜單時(shí)等待一下case 2:gx_data(); printf("即將返回主菜單n"); system("PAUSE");break;case 3:cz_data(); printf("即將返回主菜單n"); system("PAUSE");break;case 4:sc_data(); printf("即將返回主菜單n"); system("PAUSE");break;case 5:xs_data(); printf("即將返回主菜單n"); syste
55、m("PAUSE");break;case 6:chongz_data(); printf("即將返回主菜單 n"); system("PAUSE");break;case 7:tj_data(); printf("即將返回主菜單n"); system("PAUSE");break;case 8:px_data(); printf("即將返回主菜單n"); system("PAUSE");break;case 9:break; while (l != 9
56、&& (l = 1 | l = 2 | l = 3 | l = 4 | l = 5 |l = 6 | l = 7 | l = 8);void dl()/登陸函數(shù)int i;char a10, b10;printf(" 請(qǐng)輸入用戶名:n");scanf("%s", a);printf("請(qǐng)輸入密碼:n");scanf("%s", b);for (i = 0; i<3; i+)if (strcmp(usi.un, a) = 0 && strcmp(usi.up, b) = 0) p
57、rintf("登錄成功!n");read();cd(); break; if (i = 3) printf("登錄失敗!n");p+;if (p >= 3) printf("登錄失敗超過3次,系統(tǒng)將強(qiáng)制退出!n");printf("按下任意鍵以退出程序!n");getchar();getchar(); exit; elsedl(); int main()/主函數(shù)dl();return 0;4運(yùn)行結(jié)果入用尸名: 扁人密門:w®aR戶名;111土輸入密研n 二錄失思!輸入用尸名:111上輸入密'制:* 二金之我電過蕾.條統(tǒng)性嗣 尤出!"TN哥:樸治出走南輸入三次登陸失敗輸出:退出Cn,d在信不粕 工件2七. 件at建工 r碼!文,d創(chuàng)員 出密功暨薪> <人成讀信重(7 丁輸1釜籽- -S 耳laa清11
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職生態(tài)環(huán)境數(shù)智化監(jiān)測(cè)技術(shù)(數(shù)據(jù)處理基礎(chǔ))試題及答案
- 2025年大學(xué)心理健康(職業(yè)規(guī)劃)試題及答案
- 2025年高職(農(nóng)業(yè)水利工程)節(jié)水灌溉技術(shù)試題及答案
- 2025年大學(xué)軌道交通信號(hào)與控制(系統(tǒng)設(shè)計(jì))期末試題
- 2025年大學(xué)大四(水利水電工程)水利水電綜合試題及答案
- 2025年中職應(yīng)用黑山語(日常黑語交流)試題及答案
- 2025年大學(xué)水利水電工程(水利工程監(jiān)理)試題及答案
- 2025年高職攝影攝像技術(shù)(商業(yè)攝影)試題及答案
- 2025年中職服裝工藝(工藝優(yōu)化)試題及答案
- 2025年大學(xué)(會(huì)計(jì)學(xué))財(cái)務(wù)分析實(shí)務(wù)階段測(cè)試題及評(píng)分標(biāo)準(zhǔn)
- 安管人員安全生產(chǎn)教育學(xué)習(xí)
- 小學(xué)科學(xué)國(guó)培匯報(bào)
- 2025黨史軍史知識(shí)試題及答案
- 醫(yī)保DIP付費(fèi)知識(shí)培訓(xùn)課件
- 私立醫(yī)院的營(yíng)銷方案與管理
- 集水井施工方案
- 合伙開廠合作協(xié)議范本及注意事項(xiàng)
- 黑龍江省牡丹江市普通高中2024-2025學(xué)年高二上學(xué)期1月期末考試英語試卷(含音頻)
- 大學(xué)美育課件 第十二章 生態(tài)美育
- 美國(guó)技術(shù)貿(mào)易壁壘對(duì)我國(guó)電子產(chǎn)品出口的影響研究-以F企業(yè)為例
- 2025至2030中國(guó)電站汽輪機(jī)行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論