企業(yè)員工信息管理系統(tǒng)-設(shè)計與實現(xiàn)----c語言_第1頁
企業(yè)員工信息管理系統(tǒng)-設(shè)計與實現(xiàn)----c語言_第2頁
企業(yè)員工信息管理系統(tǒng)-設(shè)計與實現(xiàn)----c語言_第3頁
企業(yè)員工信息管理系統(tǒng)-設(shè)計與實現(xiàn)----c語言_第4頁
企業(yè)員工信息管理系統(tǒng)-設(shè)計與實現(xiàn)----c語言_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題目:企業(yè)員工信息管理系統(tǒng)設(shè)計與實現(xiàn)院、 系: 計算機(jī)信息與技術(shù)系學(xué)科專業(yè): 計算機(jī)科學(xué)與技術(shù) 學(xué) 號: B 學(xué)生姓名: 指導(dǎo)教師: 王 楠 2012年9月16日目錄第一章 設(shè)計要求1.1 問題描述近年來,隨著企業(yè)彼此間的競爭日趨激烈,信息管理技術(shù)在企業(yè)的發(fā)展中占據(jù)著越來越重要的地位。在企業(yè)的經(jīng)營生產(chǎn)中,員工信息已成為企業(yè)經(jīng)營管理中不可缺少的一部分,為管理者進(jìn)行管理決和進(jìn)行各種人事調(diào)配活動提供了重要的依據(jù),在生產(chǎn)分配安排中發(fā)揮了越來越重要的作用。此次課程設(shè)計應(yīng)該具有的功能是能夠查看員工的個人信息,每個員工的信息包括:編號、姓名、性別、部門、工資;

2、系統(tǒng)能夠完成員工信息的查詢、更新、插入、刪除、排序等功能。1.2 需求分析(1)在相應(yīng)的每條記錄中,應(yīng)該包括該員工的所有信息,譬如:編號、姓名、性別、出生年月、學(xué)歷、職務(wù)、電話、住址等;(2)根據(jù)不同關(guān)鍵字(如編號,姓名等),對所有員工的信息進(jìn)行排序;(3)按照指定條件查找某個員工的所有信息;(4)按編號對某個員工的信息進(jìn)行更改;(5)添加新員工的信息,并實現(xiàn)排序;(6)按編號刪除已離職的員工的信息;(7)與此同時,除了以上基本的需求以外,該企業(yè)員工信息管理系統(tǒng)的程序源代碼還應(yīng)具有良好的編程結(jié)構(gòu)和適當(dāng)?shù)淖⑨?,運行界面清晰,提示內(nèi)容明確,易于操作。第二章 概要設(shè)計2.1 主界面設(shè)計當(dāng)輸入相應(yīng)的操

3、作字符(比如:0-6或者#),通過在主函數(shù)中選擇并調(diào)用對應(yīng)的子函數(shù)程序以及其他函數(shù)(比如:菜單函數(shù))中的輔助調(diào)用,實現(xiàn)并完成各自的功能操作(比如:添加、查找、更改、排序、刪除、顯示等)。系統(tǒng)主界面如下:2.2 存儲結(jié)構(gòu)設(shè)計依據(jù)給定的數(shù)據(jù)格式,個人信息由九個字段來組成,即編號、姓名、性別、生日、學(xué)歷、職務(wù)、電話和住址,外加一個判斷關(guān)鍵字。如: 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 01 fdf n 1991-10 b q 189 p本課程設(shè)計根據(jù)功能需求,使用線性結(jié)構(gòu)來組織數(shù)據(jù),由于要對表中某項數(shù)據(jù)進(jìn)行插入、刪除操作,所以使用鏈表比較方便。2.3 系統(tǒng)功

4、能設(shè)計依據(jù)程序的數(shù)據(jù)結(jié)構(gòu)和功能,遵照“自頂向下”原則,描述該程序的層次結(jié)構(gòu),在總體上包括數(shù)據(jù)的插入、添加、刪除、查找、更改和數(shù)據(jù)的排序以及數(shù)據(jù)的顯示等功能模塊。(1)輸入函數(shù)功能:通過輸入各項數(shù)據(jù)給數(shù)據(jù)元素,來建立一個數(shù)據(jù)表。(2)排序函數(shù)功能:按照指定關(guān)鍵字對員工信息進(jìn)行排序。(3)顯示函數(shù)功能:輸出表中所有節(jié)點的信息。(4)查找函數(shù)功能:按照指定關(guān)鍵字,對相應(yīng)員工信息進(jìn)行查找。(5)更改函數(shù)功能:輸入員工編號,查找到員工信息,對其信息進(jìn)行更新。(6)刪除函數(shù)功能:查找到要刪除員工的相應(yīng)信息,并將其從表中永久的刪除。(7)主函數(shù)功能:調(diào)用以上子函數(shù),并用開關(guān)語句進(jìn)行選擇性的調(diào)用。(8)其它函

5、數(shù)功能:主要起輔助作用,比如:菜單函數(shù),主要起到引導(dǎo)作用;釋放空間函數(shù),主要用于釋放已經(jīng)刪除節(jié)點的信息,或者釋放整個鏈表的節(jié)點信息。第三章 模塊設(shè)計3.1 系統(tǒng)子程序及功能設(shè)計1. 創(chuàng)建成員表函數(shù)Stuff *Cre(Stuff *head) /創(chuàng)建一個員工的信息列表2. 添加成員函數(shù)Stuff *App(Stuff *head) /添加其他員工的信息列3. 排序函數(shù)void Sort(Stuff *head) /按照編號等對員工進(jìn)行排序4. 判斷函數(shù)int Sel(char ch,Stuff *p,Stuff *q) /判斷該員工是否存在5. 查找函數(shù)Stuff *Search(Stuff

6、*head) /查找該員工的信息情況6更改函數(shù)Stuff *Change(Stuff *head,char n10)/更改員工的信息情況7. 刪除函數(shù)Stuff *Del(Stuff *head,char n10) /刪除員工的信息情況3.2 系統(tǒng)功能圖主函數(shù) main()輸入顯示查找更改排序刪除退出按編號按姓名按編號按姓名第四章 詳細(xì)設(shè)計4.1 數(shù)據(jù)類型定義1.員工結(jié)構(gòu)體定義struct Stuff char number10; char name10; char sex8; char borth10; char degree20; char business20; char phone15

7、; char place50; char con50; struct Stuff *next; ;4.2 系統(tǒng)主要子程序詳細(xì)設(shè)計1.輸入函數(shù):Stuff *App(Stuff *head)Stuff *p=NULL,*q=head; while(n)p=(Stuff *)malloc(sizeof(Stuff); /申請結(jié)構(gòu)體空間 if(p=NULL)printf("空間不足,自動退出系統(tǒng)!n"); exit(0); p->next =NULL; /指針域為空 printf("請輸入第%d名員工:n",n); printf(" 編號 |

8、姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 :n"); getchar(); scanf("%s",p->number ); if(strcmp(p->number,"#")+n;scanf("%s%s%s%s%s%s%s",p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place ); p->con0='0' /防止后面判斷出現(xiàn)隨機(jī)值

9、if(head=NULL)head=p; elsewhile(q->next !=NULL) q=q->next ; q->next =p; q=p; /尾插法if(!strcmp(p->number ,"#")free(p); /完成添加,釋放多余空間 break; return head;2.排序函數(shù):void Sort(Stuff *head)char ch; Stuff *p,*q,*r; while(1)printf("請選擇排序條件:1.編號|2.姓名|0.退出n");getchar(); scanf("%c

10、",&ch); if(ch='0') break; if(ch<'1'|ch>'2')printf("輸入錯誤,請重新輸入!n"); continue; p=head; while(p->next!=NULL) /選擇排序q=p->next; r=p; while(q!=NULL)if(Sel(ch,r,q) /調(diào)用判斷函數(shù)r=q; q=q->next; if(r!=p) /交換信息Scpy(r->number,p->number); Scpy(r->name,

11、p->name); Scpy(r->sex,p->sex);Scpy(r->birthday,p->birthday); Scpy(r->degree,p->degree); Scpy(r->business,p->business); Scpy(r->phone,p->phone); Scpy(r->place,p->place); p=p->next; Show(head); /輸出3.顯示函數(shù):void Show(Stuff *head)Stuff *p=head;int n=1;if(head!=NUL

12、L)printf("員工信息如下:n");printf(" 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 :n"); while(p!=NULL)printf("%d. %s %s %s %s %s %s %s %s n",n+,p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place); p=p->next ;elseprintf(&qu

13、ot;信息為空!n");4.查找函數(shù):Stuff *Search(Stuff *head)Stuff *p=NULL,*q,a="0","0","0","0","0","0","0","0" int flag; /查找判斷 char ch,sh; /兩個控制變量 q=&a; while(1)printf("請輸入要查找的條件:1.編號2.姓名0.退出n"); scanf(" %c"

14、;,&ch); if(ch='0') break; if(ch<'1'|ch>'2')printf("輸入錯誤,請重新輸入!n");continue;getchar();printf("請輸入:"); gets(q->con);p=head; /指向表頭flag=0;while(p!=NULL)if(strcmp(q->con,p->number)=0|strcmp(q->con,p->name)=0)printf("員工信息如下:n")

15、;printf(" 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 n%s t%s t%s t%s t%s t%s t%s t%sn",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("是否需要:1.更改 2.刪除 3.繼續(xù)n");scanf(" %c",&sh);if(sh='1')Change

16、(head,p->number); /調(diào)用更改函數(shù)else if(sh='2')head=Del(head,p->number); /調(diào)用刪除函數(shù)flag=1;break;p=p->next ;if(flag=0)printf("沒有找到該員工信息!n");return head;5.更改函數(shù):Stuff *Change(Stuff *head,char n10)Stuff *p=head;int flag=0;if(head=NULL)printf("信息表為空,請先建立信息表!n");elsewhile(p!=NUL

17、L)if(!strcmp(p->number,n)printf("找到員工,請輸入新的信息:n 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 n");scanf("%s%s%s%s%s%s%s%s",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("員工信息如下:n");flag=1;p=p->next;i

18、f(flag=0)printf("未找到該員工信息!n");Show(head); return head;/刪除函數(shù)Stuff *Del(Stuff *head,char n10)Stuff *p,*pr;int flag;flag=0;p=head,pr=head;if(head=NULL)printf("未找到員工信息!n");elsewhile(strcmp(p->number ,n)&&p->next !=NULL)pr=p;p=p->next ;if(!strcmp(p->number ,n)if(p=

19、head)head=p->next ;elsepr->next=p->next ;free(p);printf("刪除成功!n");n-;elseprintf("未找到員工信息!n");Show(head); return head;6.刪除函數(shù):void Fre(Stuff *head)Stuff *p;while(head!=NULL)p=head;head=head->next ;free(p); 7.主函數(shù): void main()char Index10; Stuff *head=NULL; /鏈表頭指針定義 print

20、f("-歡迎使用員工信息管理系統(tǒng)-n"); Sleep(1000); while(1)switch(Menu()/case 1:/head=Cre(head);/break;case 1:printf("請輸入員工信息,直接輸入'#'結(jié)束n"); head=App(head); break; case 2: Sort(head); break; case 3: head=Search(head); break; case 4: Show(head); break; case 5: printf("請輸入員工編號:");

21、 scanf("%s",Index); Change(head,Index); break; case 6: printf("請輸入員工編號:"); scanf("%s",Index); head=Del(head,Index); break; case 0: printf("-歡迎下次光臨!-n");Sleep(2000); exit(0);break; default: printf("輸入錯誤,請重新輸入!n"); printf("按Enter鍵繼續(xù)"); getcha

22、r();getchar(); system("cls"); /清屏效果 Fre(head); 8.其他函數(shù):char Menu(); /菜單函數(shù)void Show(Stuff *head); /輸出函數(shù)第五章 測試分析各功能的運行結(jié)果:(1)添加界面(2)排序界面(3)查找界面(4)輸出員工界面(5)更改員工信息界面(6)刪除員工信息界面數(shù)據(jù)域 指針域第六章 源程序清單#include "stdio.h"#include "stdlib.h"#include "windows.h " #include "

23、string.h"typedef struct Stuff char number10; char name10; char sex8; char birthday10; char degree20; char business20; char phone15; char place50; char con50; struct Stuff *next; Stuff;char Menu(); /Stuff *Cre(Stuff *head); Stuff *App(Stuff *head); void Sort(Stuff *head); Stuff *Search(Stuff *he

24、ad); Stuff *Change(Stuff *head,char n10); void Scpy(char *p,char *q); Stuff *Del(Stuff *head,char n10); int Sel(char ch,Stuff *p,Stuff *q); void Show(Stuff *head); void Fre(Stuff *head); int n=1; /菜單函數(shù)char Menu(void)int ch;printf("-歡迎光臨-n"); / printf(" 1.建立員工信息n"); printf("*

25、 1.添加員工信息 2.員工信息排序 *n"); printf("* 3.查找員工信息 4.輸出員工信息 *n"); printf("* 5.更改員工信息 6.刪除員工信息 *n"); printf("* 0.退出 *n"); printf("-n");printf("請選擇你的操作:"); scanf(" %d",&ch); return ch;/創(chuàng)建成員表函數(shù)/Stuff *Cre(Stuff *head)/ / Stuff *p=NULL,*q=hea

26、d; / p=(Stuff *)malloc(sizeof(Stuff); /App(head); / return head;/添加成員函數(shù)Stuff *App(Stuff *head)Stuff *p=NULL,*q=head; while(n)p=(Stuff *)malloc(sizeof(Stuff); if(p=NULL)printf("空間不足,自動退出系統(tǒng)!n"); exit(0); p->next =NULL; printf("請輸入第%d名員工:n",n); printf(" 編號 | 姓名 | 性別 | 出生年月 |

27、 學(xué)歷 | 職務(wù) | 電話 | 住址 :n"); getchar(); scanf("%s",p->number ); if(strcmp(p->number,"#")+n;scanf("%s%s%s%s%s%s%s",p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place ); p->con0='0' if(head=NULL)head=p; elsewhil

28、e(q->next !=NULL) q=q->next ; q->next =p; q=p; if(!strcmp(p->number ,"#")free(p); break; return head;/排序函數(shù)void Sort(Stuff *head)char ch; Stuff *p,*q,*r; while(1)printf("請選擇排序條件:1.編號|2.姓名|0.退出n");getchar(); scanf("%c",&ch); if(ch='0') break; if(ch

29、<'1'|ch>'2')printf("輸入錯誤,請重新輸入!n"); continue; p=head; while(p->next!=NULL) q=p->next; r=p; while(q!=NULL)if(Sel(ch,r,q) r=q; q=q->next; if(r!=p) Scpy(r->number,p->number); Scpy(r->name,p->name); Scpy(r->sex,p->sex);Scpy(r->birthday,p->

30、birthday); Scpy(r->degree,p->degree); Scpy(r->business,p->business); Scpy(r->phone,p->phone); Scpy(r->place,p->place); p=p->next; Show(head); /交換函數(shù)void Scpy(char *p,char *q)char c50; strcpy(c,p); strcpy(p,q); strcpy(q,c);/判斷函數(shù)int Sel(char ch,Stuff *p,Stuff *q)switch(ch) ca

31、se '1':return strcmp(q->number ,p->number )<0|strcmp(q->con ,p->number )=0 ; case '2': return strcmp(q->name ,p->name )<0|strcmp(q->con ,p->name )=0 ; default : exit(0); /查找函數(shù)Stuff *Search(Stuff *head)Stuff *p=NULL,*q,a="0","0","

32、0","0","0","0","0","0" int flag; char ch,sh; q=&a; while(1)printf("請輸入要查找的條件:1.編號2.姓名0.退出n"); scanf(" %c",&ch); if(ch='0') break; if(ch<'1'|ch>'2')printf("輸入錯誤,請重新輸入!n");continu

33、e;getchar();printf("請輸入:"); gets(q->con);p=head; flag=0;while(p!=NULL)if(strcmp(q->con,p->number)=0|strcmp(q->con,p->name)=0)printf("員工信息如下:n");printf(" 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 n%s t%s t%s t%s t%s t%s t%s t%sn",p->number ,p->name ,p-

34、>sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("是否需要:1.更改 2.刪除 3.繼續(xù)n");scanf(" %c",&sh);if(sh='1')Change(head,p->number); else if(sh='2')head=Del(head,p->number); flag=1;break;p=p->next ;if(flag=0)printf("

35、;沒有找到該員工信息!n");return head;/更改函數(shù)Stuff *Change(Stuff *head,char n10)Stuff *p=head;int flag=0;if(head=NULL)printf("信息表為空,請先建立信息表!n");elsewhile(p!=NULL)if(!strcmp(p->number,n)printf("找到員工,請輸入新的信息:n 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 n");scanf("%s%s%s%s%s%s%s%s"

36、;,p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("員工信息如下:n");flag=1;p=p->next;if(flag=0)printf("未找到該員工信息!n");Show(head); return head;/刪除函數(shù)Stuff *Del(Stuff *head,char n10)Stuff *p,*pr;int flag;flag=0;p=head,p

37、r=head;if(head=NULL)printf("未找到員工信息!n");elsewhile(strcmp(p->number ,n)&&p->next !=NULL)pr=p;p=p->next ;if(!strcmp(p->number ,n)if(p=head)head=p->next ;elsepr->next=p->next ;free(p);printf("刪除成功!n");n-;elseprintf("未找到員工信息!n");Show(head); return head;/輸出函數(shù)void Show(Stuff *head)Stuff *p=head;int n=1;if(head!=NULL)printf("員工信息如下:n");printf(" 編號 | 姓名 | 性別 | 出生年月 | 學(xué)歷 | 職務(wù) | 電話 | 住址 :n"); while(p!=NULL)printf("%d. %s %s %s %s %s %s %s %s n",n+,p->number ,p->name ,p->sex ,p->birthday ,p->degree

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論