數據結構課程設計_員工信息管理系統方案_第1頁
數據結構課程設計_員工信息管理系統方案_第2頁
數據結構課程設計_員工信息管理系統方案_第3頁
數據結構課程設計_員工信息管理系統方案_第4頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、成 績12信計 2013-2014 (一)數據結構課程設計設計題目員工信息管理系統設計時間學生葛考學生學號20120402127所在班級12 精算指導教師風 華工程學院數學與物理科學學院題目員工信息管理系統下載可編輯一、需求分析員工信息管理系統設計,具體功能如下:1、系統以菜單方式工作,應為用戶提供清晰的使用提示,依據用戶的選擇來進行各種處理,并且在此過程中能夠盡可能的兼容用戶使用過程中的輸入異常情況。2、員工信息錄入系統(員工信息用文件保存),注意員工按員工編號進行區分,即每個員工的員工編號都是唯一的,不允許出現兩個員工或員工編號相同的情況。3、可對員工信息進行查詢,具體分為:按查詢、按員工

2、號查詢、按生日查詢;4、可對員工信息進行刪除;5、可對員工信息進行修改,但應注意員工號不能修改,修改應逐個進行,一個員工記錄的更改不應影響其他的員工記錄;6、可對全部的員工信息進行顯示 v(員工信息瀏覽),注意員工信息的顯示規;員工信息應包括、員工編號、性別、年齡、生日、學歷、職務、聯系、住址。二、概要設計2.1 、抽象數據類型ADT List數據對象: D=ai|aiElemSet, i=1 ,2,······, n,n>=0數據關系: R1=<ai-1 ,ai>|ai-1 ,ai D, i=1 , 2,·

3、;·····, n 基本操作:Init List(&L);操作結果:構造一個空的線性表L。DestroyList(&L);初始條件:線性表L 存在。操作結果:銷毀線性表L。LocateElem(L,I,&e);初始條件:線性表L 存在, 1<i<Listlength(L)。操作結果:用 e 返回線性表 L 中第 i 個數據元素的值。ClearList( &L);初始條件:線性表L 存在。操作結果:將線性表L 重置為空表。ADT Graph2.2 、程序流程系統的執行從菜單的選擇開始,依據用戶的選擇進行

4、相應的處理,直到用戶選擇退出系統為止。其間應對用戶的選擇做出判斷及異常處理。系統的流程如圖1 所示:.專業 .整理 .下載可編輯圖 1員工信息管理系統流程圖三、詳細設計3.1 函數構成(1)主函數: void main ();(2)文件讀入函數: void read data();(3)文件寫入函數: void write data();(4)菜單函數函數原型: void Menu ()功能:此函數的功能為依據用戶選擇的功能來進行相應的處理,直到用戶選擇退出系統為止,包括員工信息的查詢、更新、列表及退出管理;(5)信息查詢函數函數原型: void chaxun ()功能:該函數的功能是按照用戶

5、的選擇進行不同方式的查找,本程序實現了按三種方式進行查找,包括按編號、 、生日查找;(6)信息更新函數函數原型: void gengxin()功能:此函數的功能為使用戶修改記錄。首先判斷用戶要修改的記錄是否存在,因為只有員工編號是唯一的,所以根據員工編號進行查找。若存在則用用戶輸入的新的信息替換原信息;若不存在則函數結束。在此函數中要注意的是文件的打開方式應為” rb+”,因為在這個函數中不僅要讀文件,還要向文件中寫入數據,所以要用讀寫的方式打開二進制文件;(7)信息一覽函數函數原型: void liebiao()功能:此函數的功能為從文件中依次取出每條記錄并將其顯示出來。因為只需讀文件不需要

6、向文件中寫入數據,所以文件的打開方式是只讀。3.2 模塊程序清單(詳細程序見附錄)1、員工信息的結構體:.專業 .整理 .下載可編輯Typedef struct emplong int num;/編號char name20;/int age;/年齡char sex4;/性別char birthday10;/生日char tel15;/char edu8;/學歷char pos20;/職務char add30;/住址struct emp *next;2、菜單函數:void menu(void)char i,lj100;int flog;time_t T;struct tm * timenow;t

7、ime ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息管理系統n");printf(" n");printf(" n");printf(" n");printf("1.員工信息查詢 n");printf(" n");printf(" n");printf("

8、 n");printf("2.員工信息更新 n");printf(" n");printf(" n");printf(" n");printf("3.員工信息列表 n");printf(" n");printf(" n");printf(" n");printf("0.退出管理系統 n");printf(" n");printf(" n");printf("

9、 n");printf("n");.專業 .整理 .下載可編輯printf(" %s", asctime (timenow) );printf("請輸入您的選擇(數字0-3 ):n");scanf("%c",&i);gets(lj);if(lj0)i='a'switch(i) case '1':chaxun();break;case '2':gengxin();break;case '3':liebiao();break;case &

10、#39;0':flog=1;break;default:printf(" 輸入有誤,請按回車鍵重新輸入 n");gets(lj);break; if(flog)break;3、信息查詢函數:void chaxun()char i,lj100; int flog; time_t T; struct tm * timenow; time ( &T );timenow = localtime ( &T ); flog=0;while(1)system("cls");printf("nnnnn");printf(&qu

11、ot;員工信息查詢系統n");printf("n");printf("n");printf("n");pri ntf("1.按照編號查詢n");printf("n");printf("n");printf("n");printf("2.按照查詢n");printf("n");printf("n");printf("n");printf("3.按照生日查詢n&

12、quot;);printf("n");printf("n");printf("0.退出管理系統n");printf("n");printf("n");printf("n");pri ntf("n");printf("%s", asctime (timenow) );printf("請輸入您的選擇(數字0-3 ):n");scanf("%c",&i);gets(lj);if(lj0)i=&#

13、39;a'switch(i).專業 .整理 .下載可編輯case '1':bianhao();break;case '2':xingming();break;case '3':shengri();break;case '0':flog=1;break;default:printf(" 輸入有誤,請重新輸入 n");gets(lj);break; if(flog)break;4、信息更新函數:void gengxin()char i,lj100;time_t T;int flog;struct tm *

14、timenow;time ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息更新系統n");printf("n");printf("n");printf("n");printf("1.員工信息添加n");printf("n");printf("n");printf(&qu

15、ot;n");printf("2.員工信息刪除n");printf("n");printf("n");printf("n");printf("3.員工信息修改n");printf("n");printf("n");printf("n");printf("0.退出管理系統n");printf("n");printf("n");printf("n");

16、printf("n");printf(" %s",asctime (timenow) );printf("請輸入您的選擇(數字0-3 ):n");scanf("%c",&i);gets(lj);if(lj0)i='a'.專業 .整理 .下載可編輯switch(i) case '1':tianjia();break; case '2':shanchu();break; case '3':xiugai();break; case '0

17、9;:flog=1;break;default:printf("輸入有誤,請重新輸入 n");gets(lj);break;if(flog)break;5、信息一覽函數:void liebiao()char lj100; struct emp *p;p=head;system("cls");if(head=NULL)printf("查找不到信息 n");menu();printf("員工信息列表n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt職務 tt住址 :n&qu

18、ot;);if(head!=NULL)while(p!=NULL)display(p);p=p->next;printf("n按回車鍵返回主菜單 n");gets(lj);四、調試分析4.1 、時間復雜度分析在源程序的各個模塊,時間復雜讀為 O(n) ,并且隨著輸入信息量的增加,從而時間復雜度也逐漸增加。4.2 、問題解決在程序設計過程中,本程序采用兩種方式進行數據輸入,一種是由用戶手動輸入數據,另一種是由文本文件數據導入 1 的方式。但在文本導入過程中, 導入的是二進制文件,但由于復雜程度較高,從而根據所查資料進行修改,采用導入文本文件。在結果輸出上,由于輸出的是黑

19、屏,所以經過查閱資料,運用 system函數對輸出結果的頁面進行修飾。4.3 、設計收獲在做實驗前,一定要將課本上的知識吃透,因為這是做實驗的基礎,否則,在做設計程序實驗時,這將使你做的難度加大,浪費寶貴的時間,使你事倍功半。做實驗時,一定要親力親為,務必要將每個步驟,每個細節弄清楚,弄明白。實驗后,還要復習,思考,這樣,你的印象才深刻,記得才牢固,否則,過后不久你就會忘得一干二凈,這還不如不做。通過這次程序設計的實驗,使我們學到了不少實用的知識,更重要的是,.專業 .整理 .下載可編輯做實驗的過程,思考問題的方法,這與做其他的實驗是通用的,真正使我們們受益匪淺。五、測試結果1、菜單函數的測試

20、結果如圖2圖 22、信息查詢函數的測試結果如圖3圖 33、信息更新函數測試結果如圖4.專業 .整理 .下載可編輯圖 4六、用戶使用說明本程序實在環境下通過編譯并執行。用戶根據提示信息進行選擇并操作。.專業 .整理 .下載可編輯七、附錄源程序:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <windows.h>/清屏函數頭文件#include <string.h>#include <time.h>#include <io.h>#d

21、efine LEN sizeof(struct emp)#define DATA "employee.txt"struct emplong int num;/編號char name20;/int age;/年齡char sex4;/性別char birthday10;/生日char tel15; /char edu8;/學歷char pos20;/職務char add30;/住址struct emp *next;struct emp *head=NULL;int t=0;void menu();void gengxin();void tianjia();void inser

22、t(struct emp *em);void display(struct emp *p);void liebiao();void chaxun();void bianhao();void shengri();void xingming();void readDate();void writeDate();void freeAll();void shanchu();void change();void devise(struct emp *p);void main().專業 .整理 .下載可編輯struct emp *head=NULL;head=(struct emp *)malloc(LE

23、N);head->next=NULL;system("color F1");system("mode con: cols=500 lines=1000");readDate();menu();system("cls");printf("nnnnnnnnnnnnnnnnnnn");printf("謝謝使用,再見 n");void menu(void)char i,lj100;int flog;time_t T;struct tm * timenow;time ( &T );timen

24、ow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息管理系統n");printf(" n");printf(" n");printf(" n");printf("1.員工信息查詢 n");printf(" n");printf(" n");printf(" n");printf(&qu

25、ot;2.員工信息更新 n");printf(" n");printf(" n");printf(" n");printf("3.員工信息列表 n");printf(" n");printf(" n");printf(" n");printf("0.退出管理系統 n");printf(" n");printf(" n");printf(" n");printf(&qu

26、ot;n");printf(" %s", asctime (timenow) );printf("請輸入您的選擇(數字0-3 ):n");scanf("%c",&i);gets(lj);if(lj0)i='a'switch(i).專業 .整理 .下載可編輯case '1':chaxun();break;case '2':gengxin();break;case '3':liebiao();break;case '0':flog=1;bre

27、ak;default:printf("輸入有誤,請按回車鍵重新輸入n");gets(lj);break;if(flog)break;void tianjia()struct emp *p,*p1;char lj100;p=NULL;p1=head;printf("請輸入第 %d個員工的信息 .n",t+1);p=(struct emp *)malloc(LEN);if(p=NULL)printf("分配空間失敗 "); exit(0);printf("請輸入員工的編號 :n");scanf("%ld&qu

28、ot;,&p->num);while(p1!=NULL)&&(p->num!=p1->num)p1=p1->next;if(p1!=NULL)if(p->num=p1->num)printf("編號已經存在 , 請重新輸入 , 按回車鍵繼續 :n");free(p);gets(lj);getchar(); printf("請輸入員工的 :n");scanf("%s",p->name);printf("請輸入員工的年齡 :n");scanf("

29、;%d",&p->age);printf("請輸入員工的性別 :n");scanf("%s",p->sex);printf("請輸入員工的出生年月 :n"); scanf("%s",p->birthday);printf("請輸入員工的 :n");scanf("%s",p->tel);printf("請輸入員工的學歷 :n");scanf("%s",p->edu);printf("

30、;請輸入員工的職務 :n");scanf("%s",p->pos);printf("請輸入員工的住址 :n");scanf("%s",p->add);insert(p);printf("輸入的員工信息為 :n");printf("-:n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt 職務 tt住址 :n");display(p);printf("按 回車 鍵 繼續n");writeDate();g

31、ets(lj);getchar();void insert(struct emp *em)struct emp *p0,*p1,*p2;p1=head;p0=em;if(head=NULL)head=p0;p0->next=NULL;elsewhile(p0->num > p1->num)&&(p1->next!=NULL).專業 .整理 .下載可編輯p2=p1;p1=p1->next; if(p0->num<=p1->num)if(head=p1)head=p0;elsep2->next=p0;p0->next

32、=p1;elsep1->next=p0; p0->next=NULL;t+;void display(struct emp *p)printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p->num,p->name,p->age,p->sex,p->birthday,p->tel,p->edu,p->pos,p->add); void liebiao()char lj100; struct emp *p;p=head;system("cls");if(h

33、ead=NULL)printf("查找不到信息 n");menu();printf("員工信息列表n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt職務 tt住址 :n");if(head!=NULL)while(p!=NULL) display(p);p=p->next; printf("n 按回車鍵返回主菜單 n");gets(lj);void chaxun()char i,lj100;int flog;time_t T;struct tm * timenow;time

34、 ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息查詢系統n");printf("n");printf("n");printf("n");printf("1.按照編號查詢n");prin tf(" n");printf("n");printf("n"

35、);printf("2.按照查詢n");printf("n");printf("n");printf("n");.專業 .整理 .下載可編輯printf("3.按照生日查詢n");printf("n");printf("n");printf("0.退出管理系統n");printf("n");printf("n");printf("n");printf("n"

36、);printf("%s", asctime (timenow) );printf("請輸入您的選擇(數字0-3 ):n");scanf("%c",&i);gets(lj);if(lj0)i='a'switch(i)case '1':bianhao();break;case '2':xingming();break;case '3':shengri();break;case '0':flog=1;break;default:printf("

37、;輸入有誤,請重新輸入 n");gets(lj);break;if(flog)break;void bianhao()int number;char lj100;struct emp *p1;p1=head;printf("請輸入要查詢員工的編號:n");scanf("%d",&number);while(number!=p1->num)&&(p1->next!=NULL)p1=p1->next; if(number=p1->num)printf("員工 信 息 查詢 n");

38、printf("要查詢的員工信息 :n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt職務 tt住址 :n");printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p1->num,p1->name,p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1->pos,p1->add);printf(" 按回車鍵繼續 n");gets(lj); getc

39、har(); else if(p1->next=NULL) printf(" 要查詢的員工信息不存在,按回車鍵返回 :n"); gets(lj);getchar();void xingming()char ch10;struct emp *p;char lj100;p=head;printf("請輸入要查詢的員工的名字:n");scanf("%s",ch);if(p=NULL).專業 .整理 .下載可編輯printf("不存在員工記錄,按回車鍵返回.n");gets(lj);getchar();return

40、;while(strcmp(ch,p->name)&&p->next!=NULL)p=p->next;if(!strcmp(ch,p->name)printf("員工信息查詢n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt職務 tt住址 :n");display(p);printf("按回車鍵繼續 n");gets(lj);getchar();else if(p->next=NULL)printf("不存在員工記錄 .n");get

41、s(lj);getchar();return;void shengri()char bir20,lj100;struct emp *p;p=head;printf("請輸入要查詢的員工的出生日期:n");scanf("%s",bir);if(p=NULL)printf("不存在員工記錄 . 按回車鍵返回 n");gets(lj);getchar();return ;while(strcmp(bir,p->birthday)&&p->next!=NULL)p=p->next;if(!strcmp(bir

42、,p->name)printf("員工信息查詢n");printf("編號 tttt年齡 tt性別 tt出生年月 tttt學歷 tt職務 tt住址 :n");display(p);printf("按回車鍵繼續 n");gets(lj);getchar();else if(p->next=NULL)printf("不存在員工記錄 . 按回車鍵返回 n");gets(lj);getchar();return;void readDate()FILE * fp;struct emp *p1,*p2;fp=fop

43、en(DATA, "r"); if(!fp)printf(" 打開文件失敗 ! 按回車鍵繼續 n");getchar(); else fscanf(fp,"%dn",&t);head=p1=p2=(struct emp *)malloc(LEN); fscanf(fp,"%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",&p1->nu m,p1->name,&p1->age,p1->sex,p1->birthday,p1->tel

44、,p1->edu,p1->pos,p1->add);while(!feof(fp).專業 .整理 .下載可編輯p1=(struct emp *)malloc(LEN);fscanf(fp,"%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1->pos,p1->add);p2->next=p1;p2=p1;p2->next

45、=NULL;fclose(fp);void writeDate()FILE* fp;struct emp *p1;fp=fopen(DATA, "w");if(!fp)printf("打開文件失敗 !n");getchar();elsefprintf(fp,"%dn",t);for(p1=head;p1!=NULL;p1=p1->next) fprintf(fp,"%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p1->num,p1->name,p1->age,p

46、1->sex,p1->birthday,p1->tel,p1->edu,p1->pos,p1->add); fclose(fp);void freeAll()struct emp *p1,*p2;p1=p2=head;while(p1) p2=p1->next;free(p1);p1=p2; void shanchu()struct emp *p1,*p2; long int number;char lj100; if(head=NULL)printf("無員工紀錄 ! 按回車鍵返回 n");gets(lj);getchar();r

47、eturn;printf("請輸入你要刪除的員工的編號:n");scanf("%ld",&number);p1=head;while(number!=p1->num&&p1->next!=NULL)p2=p1;p1=p1->next;if(number=p1->num)if(p1=head)head=p1->next;else p2->next=p1->next;free(p1);t-;writeDate();printf("刪除成功,按回車鍵繼續n"); elsepr

48、intf(" 沒 有 該 員 工 的 紀 錄 , 請 核 對 . 按 回 車 鍵 返 回 n");gets(lj); getchar();void xiugai()struct emp *p1,*p2;long int number;char lj100;if(head=NULL).專業 .整理 .下載可編輯printf("無員工紀錄 ! 按回車鍵返回 n");gets(lj);getchar();return;printf("請輸入你要修改的員工的編號:n");scanf("%ld",&number);g

49、ets(lj);p1=head;while(number!=p1->num&&p1->next!=NULL)p2=p1;p1=p1->next;if(number=p1->num)devise(p1);writeDate();printf("修改成功,按回車鍵繼續n");elseprintf(" 沒有該員工的紀錄 , 請核對 . 按回車鍵返回 n"); gets(lj);getchar();void devise(struct emp *p)char i,lj100;int flog;time_t T;struct

50、 tm * timenow;time ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息修改n");printf(" n");printf("n");printf(" n");printf("1.修改員工n");printf(" n");.專業 .整理 .下載可編輯printf("

51、n");printf(" n");printf("2.修改員工年齡 n");printf(" n");printf("n");printf(" n");printf("3.修改員工性別 n");printf(" n");printf(" n");printf(" n");printf("4.修改員工生日 n");printf(" n");printf(" n");printf(" n");printf("5.修改員工 n");printf("n");printf(" n");printf(" n");printf("0.退出管理系統 n");printf("n");printf(" n");printf(" n");printf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論