




已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗題目:員工信息管理系統(tǒng)一、 實驗目的1. 熟悉c語言的編譯連接和運行過程。2. 掌握c語言的數(shù)據(jù)類型,熟悉整型、實型、字符型變量的定義方式及如何給它們賦值。3. 掌握if語句及switch語句的運用方法及嵌套應用方法。4. 掌握實現(xiàn)循環(huán)結構的三種語句while、 do-while.、for 的使用。5. 掌握函數(shù)的定義方法和調用方法。6. 能夠采用模塊化思想調試程序。二實驗內容1. 編寫程序并進行調試運行。2. 輸入員工資料,并保存于文件。每個員工包含信息如:工作證號、姓名、性別、工齡、學歷、職務、電話、工資等。3. 對已存入的員工信息進行更新操作,包括添加一個員工信息、刪除某個員工信息和修改某個員工信息。4. 通過輸入姓名、工作證號的方式查詢員工信息。5. 最后輸出員工信息,供需要時打印。 二、 需求分析1. 該程序可用于對企業(yè)員工情況基本信息的存儲、更新、查詢、輸出等操作,以實現(xiàn)對企業(yè)員工的管理。2. 其中更新功能包括:添加信息、刪除信息、修改信息、可根據(jù)需要添加一個或多個員工信息,也可對個別員工信息進行適當?shù)膭h除或修改。以便隨時更新員工信息。3. 程序中設計的查詢功能可根據(jù)需要從若干數(shù)據(jù)中查詢某個員工信息,并且可根據(jù)兩種不同的方法查詢:按工作證號查詢和按姓名查詢。以滿足不同的需要。四、概要設計1、方案設計對系統(tǒng)進行分析,給出結構圖 分析:系統(tǒng)要求實現(xiàn)許多的功能,因此遵循結構化程序設計思想來進行本系統(tǒng)的設計自頂向下、逐步細化,將系統(tǒng)設計任務分解出許多子功能模塊進行設計 結構圖如下:員工信息管理系統(tǒng) 退出系統(tǒng)關于系統(tǒng)密碼修改排序模塊查詢模塊更新模塊輸出模塊輸入模塊退出系統(tǒng)添加員工信息刪除員工信息修改員工信息 退出系統(tǒng)按姓名查詢按工作證查尋按工作 證排序按工資排序2.模塊功能說明對各個模塊進行功能的描述(1).輸入模塊:錄入需要管理的員工信息并將信息保存于文件中,以方便日后進行打印、讀取、更新等操作。(2)添加模塊:可添加一個或多個員工信息,并將所添加員工信息保存,方便查找。(3)刪除模塊:可對辭職或休假的員工信息做刪除處理。(4)修改模塊:可根據(jù)需要對多個員工信息進行修改,也可隨時對個別項進行修改。(5)查詢模塊:可對已建立的員工信息進行查詢,并且可根據(jù)需要選擇按姓名查詢或按工作證號查詢。 (6)保存模塊:用于對信息進行保存。 (7)輸出模塊:將所有員工信息或想要查詢的員工信息顯示于屏幕,用于打印員工信息或查找某些員工信息。(8). 修改密碼: 對系統(tǒng)的密碼可以進行修改,確保信息的安全。(9) . 關于系統(tǒng): 對系統(tǒng)的簡介,以及操作時的注意事項。(10)退出系統(tǒng):選擇該項,自動退出該系統(tǒng)。五、詳細設計及運行結果流程圖, 函數(shù)之間相互調用的圖示 ,程序設計及編碼, 運行結果。開 始 輸密碼判斷密碼 密碼錯誤輸入 i判斷 i i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8關于系統(tǒng)排序模塊統(tǒng)計模塊密碼修改查詢模塊更新模塊輸入模塊輸出模塊輸要統(tǒng)計的值輸要排序的值輸要查詢的值輸要更新的 值判斷i值 判斷i值判 斷i值判斷i處理操作處理操作處理操作 處理操作保存信息結 束 六 調試情況及運行結果1、 對自己設計進行評價,指出合理和不足之處,提出改進的方案。此次實踐課編寫的是一個應用程序,相對于以前我們見到的程序,它要大得多,對數(shù)據(jù)的輸出格式也有較高要求,這次編程讓自己對許多平時不注意的小的知識點有了新的鞏固;我先編的主函數(shù),調試后我又一個一個模塊的往上加,每加上一個調試一下;雖然在編程過程中有些模塊也出現(xiàn)了一些小問題,但在翻閱課本和同學們的幫助下,我很有耐心的一次又一次的進行修改,最后運行的結果基本上達到了預期的目的??蛇@畢竟是第一次獨立完成這樣的大程序,雖然并不是非常健壯,但程序中沒有錯誤和警告,各項功能都能完成,因此我對兩周的實習結果還是理想的。這次編程中我感覺程序中最滿意的地方有兩點:1、程序的操作界面美觀大方。2、我給程序上加上了密碼修改這一模塊,可以說密碼函數(shù)花費了大量時間,需要重新建立一個文件來寫入密碼保存密碼。下次登陸時需要打開密碼文件,判斷密碼是否正確。已有的那些功能雖已能基本上滿足用戶的需要,但如果還有更多的功能程序就會更加完美。如:錄入錯誤數(shù)據(jù)時,系統(tǒng)沒有設計輸出錯誤操作的提示。2、在設計過程中的感受。 本次C 語言的實習課讓我對C 語言的學習又有了更深入的了解,也讓我更深刻地領悟到了“實踐出真理”這個道理,在上機實踐過程中使我在課堂上十幾周學到的知識得到了鞏固,有很多以前理解不了的課本知識在這次上機實習后,再回頭看一下感覺豁然開朗。學校組織的這次實習讓我們這些實踐知識匱乏的大學生增添了許多社會經驗,為我們將來走上工作崗位其了不小的鋪墊作用。本次實習中遇到了很多以前沒有遇到過的問題,也曾感到比較浮躁,但想到以前都是作為用戶用各種程序,而這次自己是編程者,可以讓程序按自己的想法運行,給了我繼續(xù)的興趣和信心。在老師的指導下和同學的幫助下,我順利的結束了本次實習,讓我知道原來憑借自己努力取得的成功會讓自己這么欣慰。七參考文獻C語言程序設計 王曙燕 曹錳 科學出版社 2005年2月C語言程序設計 譚浩強 清華大學出版社 1999年12月 八。附錄:#include#include#define MAX 5#define PAGE 4#define PRINTF1 printf(-n)#define PRINTF2 printf(工作號t姓名t性別t工齡(年月日)t學歷t職務t電話t工資n)#define PRINTF3 printf(n%dt%st%st%d-%d-%dt%st%st%st%dn,workersi.num,,workersi.sex,workersi.worktime.year, workersi.worktime.month, workersi.worktime.day,workersi.degree,workersi.position,workersi.tel,workersi.salary)int sum;/*用來記錄員工人數(shù)*/ /*日期結構體類型*/struct dateint year; int month; int day;/*員工結構體類型*/struct workers_typeint num; struct date worktime; char name10; char sex2; char degree5; char position5; char tel12; int salary;workersMAX;/*存放MAX個員工信息記錄的結構體數(shù)組*/ /*保存基本信息*/save_message(int sum) FILE *fp;int i;if(fp=fopen(worker information.txt,wt)=NULL) printf(該文件錯誤!n); return;for(i=0;isum;i+)if(fwrite(&workersi,sizeof(struct workers_type),1,fp)!=1)printf(寫文件錯誤!n);fclose(fp); /*第一:輸入模塊*/ input_message() int i=0,x; clrscr(); printf(nn 請輸入要錄入的員工數(shù)量: ); scanf(%d,&x); printf(nn 錄入員工信息(最多%d個員工)n,x); printf( -n); do printf(第%d個員工信息,i+1); printf(n員工的工作證號:); scanf(%d,&workersi.num); printf(n姓名:); scanf(%s,); printf(n性別(男=m,女=f):); scanf(%s,&workersi.sex); printf(n工齡(yy-mm-dd):); fflush(stdin); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day); printf(n學歷:); scanf(%s,workersi.degree); printf(n職務:); fflush(stdin); scanf(%s,workersi.position); printf(n電話:); scanf(%s,workersi.tel); printf(n工資:); scanf(%d,&workersi.salary); i+; while(ix); printf(n -%d員工信息輸入完畢!-n,i); sum=i; printf(n 按任意鍵返回主菜單!); bioskey(0); /*讀取信息*/read_message() FILE *fp; int i=0; if(fp=fopen(worker information.txt,rt)=NULL) printf(nn*暫時還沒有任何庫存信息,按任意鍵進入主菜單選擇基本信息的錄入!*n); return(0); while(feof(fp)!=1) fread(&workersi,sizeof(struct workers_type),1,fp); if(workersi.num=0) break; else i+; fclose(fp); return(i); /*第二:輸出模塊*/ output_message() int i=0,j=0,count,page=1; clrscr(); printf(nn -員工信息表- 第%d頁nn,page); PRINTF2; PRINTF1; do if(workersi.num!=0) j+; if(j%PAGE!=0) PRINTF3; PRINTF1; else PRINTF3; PRINTF1; if(workersi+1.num!=0) printf(按任意鍵繼續(xù)!); bioskey(0); clrscr(); printf(nn -員工信息表- 第%d頁nn,+page); PRINTF2; PRINTF1; i+; while(workersi.num!=0); printf(按任意鍵返回主菜單!); bioskey(0); /*增加員工信息*/insert_message() int i=sum,j,flag=0; char choice; clrscr(); printf(nn 增加一個新員工n); printf( -n); do printf(n 新員工的工作證號:); scanf(%d,&workersi.num); printf(n 新員工姓名:); scanf(%s,); printf(n 新員工性別(男=m,女=f):); fflush(stdin); scanf(%s,workersi.sex); printf(n 新員工工齡(yy-mm-dd):); fflush(stdin); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day); printf(n 新員工學歷:); fflush(stdin); scanf(%s,workersi.degree); printf(n 新員工職務:); fflush(stdin); scanf(%s,workersi.position); printf(n 新員工電話:); fflush(stdin); scanf(%s,&workersi.tel); printf(n 新員工工資:); scanf(%d,&workersi.salary); i+; sum=i; printf(n 要繼續(xù)嗎?(Y/N); choice=getch(); if (choice=y|choice=Y) printf(n 繼續(xù)!n); flag=1; else flag=0; while(flag=1); printf(n 按任意鍵返回主菜單!); bioskey(0);/*刪除員工信息*/del_message() int i,k,flag,del_num; char choice; do clrscr(); printf(n 輸入要刪除的員工的工作證號:); scanf(%d,&del_num); for(i=0;isum;i+) if(workersi.num=del_num) for(k=i;ksum;k+) workersk=workersk+1; break; if(i=sum) printf(n 該員工不存在); bioskey(0); printf(nn 繼續(xù)修改嗎?(Y/N); choice=getch(); if (choice=Y|choice=y) flag=1; printf(n 繼續(xù)!n); else flag=0; while(flag=1); printf(n 按任意鍵返回主菜單!); bioskey(0);/*修改信息*/resive_message() int i=0,choice,revise_num,flag; do clrscr(); printf(n 輸入要修改的員工的工作證號); scanf(%d,&revise_num); for(i=0;isum;i+) if(workersi.num=revise_num) printf(n -員工信息-n); PRINTF1; PRINTF2; PRINTF3; printf(n 您要修改哪一項?n); printf(n 1.工作證號 n); printf(n 2.姓名 n); printf(n 3.性別 n); printf(n 4.工齡 n); printf(n 5.學歷 n); printf(n 6.職務 n); printf(n 7.電話 n); printf(n 8.工資 n); printf(n 請輸入(1-8):); scanf(%d,&choice); switch(choice) case 1: printf(n 輸入修改后的工作證號:); scanf(%d,&workersi.num);break; case 2: printf(n 輸入修改后的姓名:); scanf(%s,);break; case 3: printf(n 輸入修改后的性別:); scanf(%s,workersi.sex);break; case 4: printf(n 輸入修改后的工齡(yy-mm-dd):); scanf(%d-%d-%d,&workersi.worktime.year, &workersi.worktime.month, &workersi.worktime.day);break; case 5: printf(n 輸入修改后的學歷:); scanf(%s,workersi.degree);break; case 6: printf(n 輸入修改后的職務:); scanf(%s,workersi.position);break; case 7: printf(n 輸入修改后的電話:); scanf(%s,&workersi.tel);break; case 8: printf(n 輸入修改后的工資:); scanf(%d,&workersi.salary);break; PRINTF1; PRINTF2; PRINTF3; break; if(i=sum) printf(n 該員工不存在); bioskey(0); printf(nn 繼續(xù)修改嗎?(Y/N); choice=getch(); if (choice=Y|choice=y) flag=1; printf(n 繼續(xù)!n); else flag=0; while(flag=1); printf(n 按任意鍵返回主菜單!); bioskey(0); /*第三:更新模塊*/ renew_message() int choice;do clrscr(); printf(nnn *更新員工信息*nn); printf( 1.添加員工信息nn); printf( 2.刪除員工信息nn); printf( 3.修改員工信息nn); printf( 0.返回主菜單nn); printf( 請選擇(0-3):); scanf(%d,&choice); switch(choice) case 1: insert_message();break; case 2: del_message();break; case 3: resive_message();break; case 0: break; while(choice!=0); /*按姓名查詢*/inquire_name() int i,choice,j=0; char inquire_name10; clrscr(); printf(n 輸入要查詢的員工姓名:); scanf(%s,inquire_name); for(i=0;isum;i+) if(strcmp(,inquire_name)=0&workersi.num!=0) printf(n -員工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 該員工不存在!); bioskey(0);/*按工作證號查詢*/inquire_num() int i,choice,j=0,inquire_num; clrscr(); printf(n 輸入要查詢的員工的工作證號:); scanf(%d,&inquire_num); for(i=0;isum;i+) if(workersi.num=inquire_num&workersi.num!=0) printf(n -員工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 該員工不存在!); bioskey(0);/*按學歷查詢*/inquire_degree() int i,choice,j=0; char inquire_degree5; clrscr(); printf(n 輸入要查詢的員工學歷:); scanf(%s,inquire_degree); for(i=0;isum;i+) if(strcmp(workersi.degree,inquire_degree)=0&workersi.num!=0) printf(n -員工信息-n); PRINTF1; PRINTF2; PRINTF3; else j+; if(j=sum) printf(n 該員工不存在!); bioskey(0); /*第四:查詢模塊*/ inquire_message() int choice;do clrscr(); printf(nnn *查詢員工信息*nn); printf( 1.按員工姓名查詢nn); printf( 2.按員工的工作證號查詢nn); printf( 3.按員工的學歷查詢nn); printf( 0.返回主菜單nn); printf( 請選擇(0-3):); scanf(%d,&choice); switch(choice) case 1:inquire_name();break; case 2:inquire_num();break; case 3:inquire_degree();break; case 0:break; while(choice!=0); /*工作證號排行*/sort_num() struct workers_type *p, *qMAX; int i,j,k; clrscr(); printf(n 工作證號排行n); printf(-n); printf(排行t工作號t姓名t性別t學歷t職務t電話t工資n); p=workers; for(i=0;isum;i+) qi=p+; for(i=0;isum;ii+) k=i; for(j=i+1;jnumqj-num) k=j; if(k!=i) p=qi;qi=qk;qk=p; for(i=0;inum,qi-name,qi-sex,qi-degree,qi-position,qi-tel,qi-salary); bioskey(0); /*工資排行*/sort_salary() struct workers_type *p, *qMAX; int i,j,k; clrscr(); printf(n -工資排行-n); printf(-n); printf(排行t工作號t姓名t性別t學歷t職務t電話t工資n); p=workers; for(i=0;isum;i+) qi=p+; for(i=0;isum;ii+) k=i; for(j=i+1;jsalarysalary) k=j; if(k!=i) p=qi;qi=qk;qk=p; for(i=0;inum,qi-name,qi-sex,qi-degree,qi-position,qi-tel,qi-salary); bioskey(0);/*第五:排序模塊*/ sort_message() int choice; do clrscr(); printf(nnn *員工排行信息*nn); printf( 1.工作證號排行nn); printf( 2.工資排行nn); printf( 0.返回主菜單nn); printf( 請選擇(0-2):); scanf(%d, &choice); switch(choice) case 1: sort_num();break; case 2: sort_salary();break; case 0: break; while(choice!=0); /*學歷統(tǒng)計*/count_degree() int i,choice,j=0; char count_degree5; clrscr(); printf( 輸入要統(tǒng)計的員工學歷:n); scanf(%s,&count_degree); for(i=0;isum;i+) if(strcmp(count_degree,workersi.degree)=0&workersi.num!=0) j+; if(j=0) printf(n 沒有相關信息!); else printf(n 要統(tǒng)計的員工總數(shù)%d,j); bioskey(0);/*性別統(tǒng)計*/count_sex() int i,choice,j=0; char count_sex2; clrscr(); printf( 輸入要統(tǒng)計的員工性別n:); scanf(%s,&count_sex); for(i=0;isum;i+) if(strcmp(count_sex,workersi.sex)=0&workersi.num!=0) j+; printf(n 要統(tǒng)計的員工總數(shù)%d,j); if(j=0) printf(n 沒有相關信息!); else bioskey(0); /*第六:統(tǒng)計模塊*/ count_message() int choice; do clrscr(); printf(nnn *統(tǒng)計員工信息*nn); printf( 1.統(tǒng)計員工學歷nn); printf( 2.統(tǒng)計員工性別nn); printf( 0.返回主菜單nn); printf( 請選擇(0-2):); scanf(%d,&choice); switch(choice) case 1: count_degree();break; case 2: count_sex();break; case 0: break; while(choice!=0);/*修改密碼*/void resive_password()int flag; char ch10,ch110; FILE *fp; clrscr(); fp=fopen(password,rb); fgets(ch1,7,fp); fclose(fp); printf(nnnnt 請輸入六位數(shù)舊密碼:); scanf(%s,ch); if(strcmp(ch,ch1)=0) flag=1; fp=fopen(password,wb); printf(n 請輸入六位數(shù)新密碼:); scanf(%s,ch); fputs(ch,fp); fclose(fp); else flag=0; switch(flag) case 0:printf(n 原密碼不正確);getch();break; case 1:printf(n 密碼修改成功);getch(); /*第七:密碼模塊*/password()int flag; char ch10;FILE *fp; char ch110=000000; clrscr(); if(fp=fopen(password,rb)=NULL) fp=fopen(password,wb); fputs(ch1,fp); fclose(fp)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以貸還貸面試題及答案
- 抗菌纖維的環(huán)保性能研究考核試卷
- 醫(yī)生考研試題及答案
- 沖突解決中的心理安全感營造考核試卷
- 北港集團面試題及答案
- java面試題及答案內置對象
- 中考試題及答案安徽
- 文科幾何試題及答案
- 《推銷實務》課件 項目2 認識崗位-描繪推銷職業(yè)畫像
- 流通環(huán)節(jié)標準化建設要點
- 大學生創(chuàng)新創(chuàng)業(yè)劉建華課后參考答案
- 用工情況說明格式及范文
- JCT587-2012 玻璃纖維纏繞增強熱固性樹脂耐腐蝕立式貯罐
- 網(wǎng)絡安全策略優(yōu)化
- 《飛機電子顯示器顯示符號》
- 國開大學2023年01月11282《社會學概論(本)》期末考試答案
- 中特第五講社會建設天津大學
- 密封條范文模板(A4打印版)
- 施工現(xiàn)場安全交底15篇
- 急救醫(yī)學模擬中心建設方案
- 三維激光掃描技術與應用實例-PPT課件
評論
0/150
提交評論