


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言課程設計C語言課程設計任務書一、題目:職工信息管理系統二、目的和要求 目的:要求熟練掌握 C 語言的基本知識和編輯技能; 基本掌握結構化程序設計的基本思路和方法。要求:設計一個職工信息管理系統,使之能提供以下功能:1、應提供一個界面來調用各個功能 , 調用界面和各個功能的操作界面 應盡可能清晰美觀 !2、輸入功能:職工信息錄入(職工信息用文件保存),可以一次完成 若干條記錄的輸入。3、瀏覽功能:完成對全部職工信息的顯示。4、查找功能:完成按職工的職工號查詢職工的相關信息,并顯示。 完成按職工的學歷查詢職工的相關信息,并顯示。 完成按職工的查詢職工的相關信息,并顯示。5、刪除功能:通過輸入
2、職工的完成對該名職工的信息進行刪除。6、添加功能:完成添加新職工的信息的任務。7、修改功能:通過輸入職工的完成對該名職工的信息進行修改。8、退出職工信息管理系統。三、信息描述 職工信息包括職工號、性別、年齡、學歷、工資、住址、等。四、解決方案1、首先進行需求分析,搞清楚系統功能和任務;2、然后在總體設計中確定模塊結構、劃分功能模塊,將軟件功能需求分配 給所劃分的最單元模塊。確定模塊間的聯系,確定數據結構、文件結構、數據庫 模式,確定測試方法與策略;3、在詳細設計中,為每個模塊確定采用的算法,選擇適當的工具表達算法 的過程(流程圖) 來描述模塊的詳細過程。 確定每一模塊采用的數據結構和模塊接口的
3、細節,包括對系統外部的接口和用戶界面,對系統部其他模塊的接口;4、根據分析編寫C語言代碼。五、進度安排課程設計時間為兩周,分為五個階段完成:1、分析設計階段。在老師的指導下自主學習和鉆研問題,明確設計要求, 找出現實方法。按照需求分析、總體設計、詳細設計幾個步驟進行。這一 階段前 1-2 天完成;2、編碼調試階段。根據設計分析方案編寫 C語言代碼,然后調試該代碼, 實現課題要求的功能。這一階段在 3-7 天完成;3、總結報告階段。總結設計工作,寫出課程設計說明書,包括需求分析、 總體設計、詳細設計、編碼、測試的步驟和容。這一階段在 8-9 天完成;4、考核階段。六、寫課程設計總結課程設計報告要
4、求總結報告包括需求分析、 總體設計、 詳細設計、 編碼(詳細寫出編程步驟) 測試的步驟和容、課程設計總結和參考資料等。七、參考資料C程序設計(第三版)譚浩強 著 清華大學C程序設計題解與上機指導(第三版)譚浩強編著清華大學目錄1 .總體設計方案 32 使用說明及運行實例 53. 項目源程序代碼104. 課程設計心得23系統的總體流程圖總體設計方案圖1.系統的總體流程圖二 . 為了方便使用結構此系統結構均為全局類型定義 struct employee/ 定義一個職工信息的結構體int num;char name10;char sex;int age;char xueli30;int wage;c
5、har addr30;char tel20; em100;三. 各模塊的功能和實現1. 菜單模塊:顯示職工管理系統的主菜單, 供用戶選擇所需的功能, 通過自己定 義的 void menu() 函數來實現。2. 輸入模塊:輸入職工的工號、 以及其它的一些職工的相關信息, 通過自己定義 的 void input() 函數來實現。3. 保存模塊:將存中職工的信息輸出到磁盤文件中,可以通過自己定義的 void save(int) 函數來實現。4. 瀏覽模塊:瀏覽所有職工的相關信息,通過自己定義的void display ()函數來實現。5. 刪除模塊:刪除需要刪除的職工的所有信息,通過自己定義的 vo
6、id del() 函 數來實現。6. 添加模塊:添加需要添加的職工的相關信息,通過自己定義的 void add() 函 數來實現。7. 按職工號查詢模塊:可以按職工號來查詢職工的相關信息,通過自己定義的 void search_num() 函數來實現。8. 按職工的的學歷查詢模塊: 可以按職工的學歷來查詢職工的相關信息, 通過自 己定義的 void search_xuelil 函數來實現。9. 按職工的查詢模塊:可以按職工的來查詢職工的相關信息,通過自己定義的 void search_tel 函數來實現。10. 修改模塊:可以修改需要修改的職工的相關信息,通過自己定義的voidmodify (
7、)函數 來實現。11. 退出系統模塊:退出職工信息管理系統, 通過頭文件 windows.h 中的 exit (0) 函數來實現。使用說明及運行實例1. 運行程序,進入職工信息管理系統的主菜單:*ffift 人耳RT信*1.錄人職工信息2 -瀏覽職X信息3 .查詢貝RT倍.冒4.冊1際護工信.慝5 -添iirBRT信息6.修改職X信息一a退出、請再旅進擇你需要操作的涉驟U曲:圖1:進入主菜單界面2. 輸入數字“1”進行錄入職工信息:圖2:錄入職工信息3. 輸入“ y”返回主菜單(界面同圖1)4. 輸入“ 2”瀏覽職工信息:諸選滓恰犢哥廩作的世驟“ ?> =r.瀏覽職X信忌* <年齡
8、£m lisduiig k Anyin>IS學歷工遙住址電話d mu £ lie n ke足否淫融行e護 ri J):J iangix isThefftQflS20H71filP)8圖3:瀏覽職工信息5. 輸入“y ”后繼續,輸入“ 3 ”進行查詢職工信息:錯選擇你需要操作的歩驟"J 按職工號含伺職工信.息 號宜誼請搔丄;按學歷變訶請按乂 :按電詒號碼查詢請觀:進入主囲數請按4 層厭聶黒的職工號;已找到此人,其衛錄為:職工呂年齡1xiedonfx iniiQfrtId學丿力工資仕址電話daxuic ibc n kc200j d-ckik grx is he
9、n g1G260S7180S曲回甘誼黒封請按縛續音旬眼I呂青攝Z薩耳RT號壹誼請按站+安學歷苣詞請按暑按電話號硝宜詞請按肌進入主囲數請按4 險學歷查詢博輸入要查找的學歷二naxuebnke己找到1具記錄為:十-職工號年齡1xiodonrxinigrm<is學厲工竊任址電話dftxuc; be n Re200j iamgrxisheri j1260971008圖4:按職工號及學歷查詢職工信息返回查詢固數請按小降穗 詢學歷請按z1按職工號查詢請按“按學歷壹詢請按2;按電話導碼查詢請按2;進入主畫數請按43按電話號碼直詢請輸入要查找的電話邑碼:己諄!1此人,其記銀為:職工號年齡1xiedonQ
10、fxinsfn:IS學歷工資住址電話d»Kiii?lhiFnk|Rvaaj i ani shiRrig1F;2fiRfl7l HflR憧回查詢兩數請按1,繼縝查詢電話號碼請按2圖5:按查詢職工信息6. 進入主菜單,輸入“ 4”進行刪除職工信息: 刪除冃HT信懇原來的職工信息:職工號年齡1xiedongxingm18學J5工資住址電話daxuebenke200j iangixisheiig1520幽?丄0側請諭入雰刪涂的職工的姓各xiedorixdLngr已找到此人原始i己錄為:職工號年齡1xiedonx insrm18學歷工資住址電話dAXLtehenke200jiartxishen
11、g確宴要刪除此人信息請按不刪陰謹按0瀏覽冊誅涪的所有職工信息:職工尋年齡學歷工資仕址電話纟蜒刪徐請按1,不再刪除請按&圖6:刪除職工信息7. 進入主菜單輸入“ 5”進行添加職工信息:原來的職工唁息:職工號摑年齡1xiedongxing18學歷二資住址屯遼daxuebenke2U0jIangxisheng152m71U0»信輸入想增加的職二數=1請輸入手斤墻皿職工的信息F青輸入職工號;:2請輸入姓名:wenxiaiojuin請輸入性女m男:m隨輸入年隔:丄爭屠輸入學歷:daxuebenke潔諭入工資:清輸入住址:hunansheng眉齬入電話:120080649品加的人數;1標
12、加売畢Tk % . GB 1 * 、-1f.科覽堆加后刃所有職丄信烈職T粵ffijj年齡1xiedongxingfmia2vienixiac jiinm19學疣工資住址電話daxuebenke200j ian£fK±sheng15290»71008daxuebenke200hktfi An sheng圖7:添加職工信息8. 進入主菜單輸入“ 6”進行修改職工信息:年齡xiedongxingf18學歷住址電話daxuebenke200jiansfxisheng年齡Kiedongxingf學歷住址電話daxuebenke瀏覽修改后的所有職工信息職工號年齡18ienxi
13、aojun學歷工資住址電話dxuebenke.jianaxisliencr1S2B0971008確實要修改此人信息潔按丄;不修改遺按鼻已找到此人 職工號普殺鬻髭改請按2序平內耳肚信息 耳號需要進行修改的選項職丄號沢牡名3.性 4年齡學功6丄貿化任址8電詁 請輸 加佛 條由的那一項序昂閃?S改為 3 wcnxiaojun幘輸入要修改的耳FIT的姓名 pcledongpxingr圖8:修改職工信息*/(1-7):n");職工信息管理系統源程序代碼#include <stdio.h>#include <windows.h>#include <string.h&
14、gt;#define N 100 struct employeeint num;char name20; char sex;int age; char xueli30;int wage;char addr30;char tel20;em100; /* 定義一個結構體 void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /* 定
15、義各函數 */void main() menu(); int n,flag; char a; do printf(" 請選擇你需要操作的步驟 scanf("%d",&n);if(n>=1&&n<=7) flag=1;break; 輸入職工信息 瀏 覽職 工信息 按職工號查詢職工信息 刪 除職工信息 添 加職 工信息 修改職工信息 (1-7):n");elseflag=0;printf(" 您輸入有誤,請重新選擇 !");while(flag=0);while(flag=1)switch(n)case
16、1:printf("n");printf("n");input();break;case2:printf("n");printf("n");display();break;case 3:printf(" n");printf("n");search();break;case 4:printf(" n");printf("n");del();break;case5:printf("n");printf("n&
17、quot;);add();break;case6:printf("n");printf("n");modify();break;case 7:exit(0);break;default :break;getchar();printf("n");printf(" 是否繼續進行 (y or n):n"); scanf("%c",&a);if(a='y')flag=1;system("cls"); /* 清屏 */menu(); /* 調用菜單函數 */pr
18、intf(" 請再次選擇你需要操作的步驟 scanf("%d",&n);printf("n");else exit(0); void menu() /* 菜單函數 */printf(" * 歡迎進入職工信息管理系統 *n")printf("1.錄入職工信息printf("2.瀏覽職工信息printf("3.查詢職工信息printf("4.刪除職工信息printf("5.添加職工信息printf("6.修改職工信息printf("7.退出 n&quo
19、t;);printf("*");n");");n");");n");謝謝使用 *n");printf("n"); printf("n");void input() /* 錄入函數 */int i,m;printf(" 請輸入需要創建信息的職工人數 (1-100):n"); scanf("%d",&m);for (i=0;i<m;i+)printf(" 請輸入職工號: "); scanf("%d
20、",&emi.num);printf(" 請輸入 : "); scanf("%s",); getchar();printf("請輸入性別 (f- 女 m- 男 ): ");scanf("%c",&emi.sex);printf(" 請輸入年齡 : "); scanf("%d",&emi.age);printf(" 請輸入學歷 : "); scanf("%s",emi.xueli);pri
21、ntf(" 請輸入工資 : "); scanf("%d",&emi.wage);printf(" 請輸入住址 : "); scanf("%s",emi.addr); printf(" 請輸入 : "); scanf("%s",emi.tel); printf("n");printf("n 創建完畢 !n");save(m);void save(int m) /* 保存文件函數 */int i;FILE*fp;if (fp=fop
22、en("employee_list","wb")=NULL)printf ("cannot open filen");exit(0);for (i=0;i<m;i+) /* 將存中職工的信息輸出到磁盤文件中去 */ if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf("file write errorn");fclose(fp);int load() /* 導入函數 */FILE*fp;int i=0;if(fp=fopen("e
23、mployee_list","rb")=NULL)printf ("cannot open filen"); exit(0);elsedofread(&emi,sizeof(struct employee),1,fp); i+;while(feof(fp)=0);fclose(fp); return(i-1);void display() /* int i;瀏覽函數 */int m=load();printf(" 職工號 ttt 性別 tt 年齡 n"); for(i=0;i<m;i+) /*m為輸入部分的職工
24、人數 */ printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age);printf("n 學歷 tt 工資 tt 住址 tt n");for(i=0;i<m;i+) /*m 為輸入部分的職工人數 */printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);void del() /* 刪除函數 */int m=load();int i,j,n,t,flag;char name20;printf(&qu
25、ot;n 原來的職工信息 :n");display();printf("n");printf(" 請輸入要刪除的職工的 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i+)if(strcmp(,name)=0)printf("n已找到此人,原始記錄為: n");printf("職工號 ttt 性別 tt 年齡 n");printf("n %dtt%st%ctt%dtn",emi.n
26、um,,emi.sex,emi.age);printf("n 學歷 tt 工資 tt 住址 tt n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);printf("n 確實要刪除此人信息請按 1, 不刪除請按 0n"); scanf("%d",&n);if(n=1)for(j=i;j<m-1;j+)strcpy(,emj+1.name);emj.num=emj+1.num;emj.sex=
27、emj+1.sex;emj.age=emj+1.age;strcpy(emj.xueli,emj+1.xueli);emj.wage=emj+1.wage;strcpy(emj.addr,emj+1.addr);strcpy(emj.tel,emj+1.tel);flag=0; if(!flag)m=m-1;elseprintf("n對不起,查無此人 !n");printf("n瀏覽刪除后的所有職工信息 :n");save(m); /*調用保存函數 */display(); /*調用瀏覽函數 */printf("n 繼續刪除請按 1 ,不再刪除
28、請按 0n"); scanf("%d",&t);switch(t)case 1:del();break;case 0:break;default :break;void add()/* 添加函數 */FILE*fp;int n;int count=0;int i;int m=load();printf("n 原來的職工信息 :n");display();printf("n");fp=fopen("emploee_list","a");printf(" 請輸入想增加的職
29、工數 :n");scanf("%d",&n);for (i=m;i<(m+n);i+)printf("n 請輸入新增加職工的信息 :n");printf(" 請輸入職工號 : ");scanf("%d",&emi.num);printf("n");printf(" 請輸入 : ");scanf("%s",);getchar();printf(" 請輸入性別 (f- 女 m- 男 ): ")
30、;scanf("%c",&emi.sex);printf(" 請輸入年齡 : ");scanf("%d",&emi.age);printf("請輸入學歷 : ");scanf("%s",emi.xueli);printf("請輸入工資 : ");scanf("%d",&emi.wage);printf("請輸入住址 : ");scanf("%s",emi.addr);printf("
31、 請輸入 : ");scanf("%s",emi.tel);printf("n");count=count+1;printf(" 已增加的人數 :n");printf("%dn",count);printf("n 添加完畢 !n");m=m+count;printf("n 瀏覽增加后的所有職工信息 :n");printf("n");save(m);display();fclose(fp);void search()/* 查詢函數 */int t,
32、flag;doprintf("n 按職工號查詢請按 1; 按學歷查詢請按 2; 按查詢請按 3; 進入主函數請 按 4n");scanf("%d",&t);if(t>=1&&t<=4)flag=1;break;elseflag=0;printf(" 您輸入有誤,請重新選擇 !"); while(flag=0); while(flag=1)switch(t)case 1:printf("按職工號查詢 n");search_num();break;case 2:printf(&quo
33、t;按學歷查詢 n");search_xueli();break;case 3:printf("按查詢 n");search_tel();break;case 4:main();break;default:break;void search_num()int num;int i,t;int m=load();printf(" 請輸入要查找的職工號 :n");scanf("%d",&num);for(i=0;i<m;i+)if(num=emi.num) printf("n已找到此人,其記錄為: n&qu
34、ot;);printf("職工號 ttt 性別 tt 年齡 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n學歷 tt 工資 tt 住址 tt n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel); break;if(i=m)printf("n 對不起,查無此人 n");printf("n");pr
35、intf(" 返回查詢函數請按 1, 繼續查詢職工號請按 2n"); scanf("%d",&t);switch(t)case 1:search();break;case 2: break;default:break;void search_xueli()char xueli30;int i,t;int m=load();printf(" 請輸入要查找的學歷 :n"); scanf("%s",xueli);for(i=0;i<m;i+)if(strcmp(emi.xueli,xueli)=0)prin
36、tf("n已找到,其記錄為: n");printf("職工號 ttt 性別 tt 年齡 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n學歷 tt 工資 tt 住址 tt n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);if(i=m)printf("n 對不起,查無此人 n");printf(
37、"n");printf(" 返回查詢函數請按 1, 繼續查詢學歷請按 2n"); scanf("%d",&t);switch(t)case 1:search();break;case 2:break;default :break;void search_tel()char tel20;int i, t;int m=load();printf(" 請輸入要查找的 :n"); scanf("%s",tel);for(i=0;i<m;i+)if(strcmp(tel,emi.tel)=0
38、)printf("n已找到此人,其記錄為: n");printf("職工號 ttt 性別 tt 年齡 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n學歷 tt 工資 tt 住址 tt n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel); break;if(i=m)printf("n 對不起,查無此人 n&
39、quot;);printf("n");printf(" 返回查詢函數請按 1, 繼續查詢請按 2n"); scanf("%d",&t);switch(t)case 1:search();break;case 2:break;default :break;void modify() /* 修改函數 */int num;char name20;char sex;int age;char xueli30;int wage;char addr30;char tel20;int b,c,i,n,t,flag;int m=load();p
40、rintf("n 原來的職工信息 :n");display();printf("n");printf(" 請輸入要修改的職工的 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i+)if(strcmp(,name)=0)printf("n已找到此人,原始記錄為: n");printf("職工號 ttt 性別 tt 年齡 n");printf("n %dtt%st%ctt%dtn&qu
41、ot;,emi.num,,emi.sex,emi.age);printf("n學歷 tt 工資 tt 住址 tt n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);printf("n 確實要修改此人信息請按 1 ; 不修改請按 0n");scanf("%d",&n);if(n=1)printf("n 需要進行修改的選項 n 1. 職工號 2. 3. 性別 4. 年齡 5. 學歷 6. 工資 7. 住址
42、 8.n");printf(" 請輸入你想修改的那一項序號 :n");scanf("%d",&c);if(c>8|c<1)printf("n 選擇錯誤,請重新選擇 !n");flag=0;if(flag=1)printf("n 對不起,查無此人 !n");doswitch(c) /* 因為當找到第 i 個職工時 ,for 語句后 i 自加了 1, 所以下面的應該把改 后的信息賦值給第 i-1 個人 */case 1:printf(" 職工號改為 : ");scanf
43、("%d",&num);emi-1.num=num;break;case 2:printf(" 改為 : "); scanf("%s",name); strcpy(,name);break;case 3:printf(" 性別改為 : "); getchar(); scanf("%c",&sex);emi-1.sex=sex;break;case 4:printf(" 年齡改為 : ");scanf("%d",&age);emi-1.age=age;break;case 5:printf(" 學歷改為 : "); scanf("%s",xueli);strcpy(emi-1.xueli,xueli);break;case 6:printf(" 工資改為 : "); scanf("%d",wage);break;case 7:printf(" 住址改為 : "); scanf("%s",addr);strcpy(emi-1.addr,addr);break;ca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025年商旅行業市場前景及投資研究報告:管理市場
- 穆棱輔警考試題庫2024
- 老王說課課件模板
- 2025年汝陽縣社區工作者招聘考試筆試試題(含答案)
- 老年護理安全課件
- 老年護理壓瘡課件
- 老年中醫養生教學課件
- 知識產權密集型部分股份轉讓合同樣本
- 生態農業部分股權投資與產業鏈整合合同
- 餐飲連鎖企業員工福利待遇合同范本
- 廣東省湛江市雷州市2023-2024學年六年級下學期4月月考綜合試題
- 護理MDT多學科協作模式
- 《槍炮、病菌與鋼鐵》讀書分享交流會
- DB13-T1431-2011森林消防物資儲備庫建設和管理規范
- 煙臺市開發區行業報告
- 臨床男科學與男科疾病診療
- 乳腺癌輔助化療
- 10kV試驗報告模板-大全
- 醫院保潔服務投標方案(完整技術標)
- 范卿平人教版初三化學講義全集
- 產科運用PDCA循環降低入室新生兒低血糖發生率品管圈成果匯報
評論
0/150
提交評論