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

下載本文檔

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

文檔簡介

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,a

3、iD,i=1,2,······,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()功能:此函數的功能為從文件中依次取出每條記錄并將其顯示出來。因為只需讀文件不需要向文件中寫入數據,所以文件的打開方式是只讀。3.2模

6、塊程序清單(詳細程序見附錄)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;time ( &T );timenow = lo

7、caltime ( &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(" 2

8、.員工信息更新 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("

9、; 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;break;default:pri

10、ntf("輸入有誤,請按回車鍵重新輸入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("員工信息查詢系統n");printf(" n")

11、;printf(" n");printf(" n");printf(" 1.按照編號查詢 n");printf(" n");printf(" n");printf(" n");printf(" 2.按照姓名查詢 n");printf(" n");printf(" n");printf(" n");printf(" 3.按照生日查詢 n");printf(" n&quo

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

13、ase '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 * timenow;time ( &T );timenow =

14、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("

15、 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

16、ot;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':flog=1;break; default

17、: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("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學歷tt職務tt住址 :n");if(head!=NULL)while(p!=

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

19、前,一定要將課本上的知識吃透,因為這是做實驗的基礎,否則,在做設計程序實驗時,這將使你做的難度加大,浪費寶貴的時間,使你事倍功半。做實驗時,一定要親力親為,務必要將每個步驟,每個細節弄清楚,弄明白。實驗后,還要復習,思考,這樣,你的印象才深刻,記得才牢固,否則,過后不久你就會忘得一干二凈,這還不如不做。通過這次程序設計的實驗,使我們學到了不少實用的知識,更重要的是,做實驗的過程,思考問題的方法,這與做其他的實驗是通用的,真正使我們們受益匪淺。五、測試結果1、菜單函數的測試結果如圖2圖22、信息查詢函數的測試結果如圖3圖33、信息更新函數測試結果如圖4圖4六、用戶使用說明本程序實在VB.6.0環

20、境下通過編譯并執行。用戶根據提示信息進行選擇并操作。七、附錄源程序:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <windows.h> /清屏函數頭文件#include <string.h>#include <time.h>#include <io.h>#define LEN sizeof(struct emp)#define DATA "employee.txt"struct emplong int nu

21、m; /編號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 insert(struct emp *em);void display(struct emp *p);void liebiao();void chaxun();

22、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(LEN);head->next=NULL;system("color F1");system("mode con: cols=500 lines=

23、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 );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn"

24、);printf(" 員工信息管理系統n");printf(" n");printf(" n");printf(" n");printf(" 1.員工信息查詢 n");printf(" n");printf(" n");printf(" n");printf(" 2.員工信息更新 n");printf(" n");printf(" n");printf(" n&quo

25、t;);printf(" 3.員工信息列表 n");printf(" n");printf(" n");printf(" n");printf(" 0.退出管理系統 n");printf(" n");printf(" n");printf(" n");printf(" n");printf(" %s", asctime (timenow) ); printf("請輸入您的選擇(數字0-3

26、):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;break; default:printf("輸入有誤,請按回車鍵重新輸入n");gets(lj);break;if(flog)break;void tianjia()st

27、ruct 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",&p->num);while(p1!=NULL)&&(p->num!=p1->num)p1=p1->next;if(p1!=NULL)if

28、(p->num=p1->num)printf("編號已經存在,請重新輸入,按回車鍵繼續:n");free(p);gets(lj);getchar();printf("請輸入員工的姓名:n");scanf("%s",p->name);printf("請輸入員工的年齡:n");scanf("%d",&p->age);printf("請輸入員工的性別:n");scanf("%s",p->sex);printf("請

29、輸入員工的出生年月:n");scanf("%s",p->birthday);printf("請輸入員工的電話:n");scanf("%s",p->tel);printf("請輸入員工的學歷:n");scanf("%s",p->edu);printf("請輸入員工的職務:n");scanf("%s",p->pos);printf("請輸入員工的住址:n");scanf("%s",p-&

30、gt;add);insert(p);printf("輸入的員工信息為:n");printf("-:n");printf("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學歷tt職務tt住址:n");display(p);printf("按回車鍵繼續n");writeDate();gets(lj);getchar();void insert(struct emp *em)struct emp *p0,*p1,*p2;p1=head;p0=em;if(head=NULL)head=p0;p0->next=N

31、ULL;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=p1;elsep1->next=p0;p0->next=NULL;t+;void display(struct emp *p)printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p->

32、;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(head=NULL)printf("查找不到信息n");menu();printf("員工信息列表n");printf("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學歷tt職務tt住址 :n");if

33、(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 ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf("員工信息查詢系統n");pri

34、ntf(" n");printf(" n");printf(" n");printf(" 1.按照編號查詢 n");printf(" n");printf(" n");printf(" n");printf(" 2.按照姓名查詢 n");printf(" n");printf(" n");printf(" n");printf(" 3.按照生日查詢 n");

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

36、9;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;void bianhao()int number;char lj100;struct emp *p1;p1=head;printf("請輸入要查詢員工的

37、編號:n");scanf("%d",&number);while(number!=p1->num)&&(p1->next!=NULL)p1=p1->next;if(number=p1->num)printf("員工信息查詢n");printf("要查詢的員工信息:n");printf("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學歷tt職務tt住址:n");printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt

38、%sn",p1->num,p1->name,p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1->pos,p1->add);printf("按回車鍵繼續n");gets(lj);getchar();else if(p1->next=NULL)printf("要查詢的員工信息不存在,按回車鍵返回:n");gets(lj);getchar();void xingming() char ch10;struct emp *p;char lj100;p

39、=head;printf("請輸入要查詢的員工的名字:n");scanf("%s",ch);if(p=NULL)printf("不存在員工記錄,按回車鍵返回.n");gets(lj);getchar();return ;while(strcmp(ch,p->name)&&p->next!=NULL)p=p->next;if(!strcmp(ch,p->name)printf("員工信息查詢n");printf("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學

40、歷tt職務tt住址:n");display(p);printf("按回車鍵繼續n");gets(lj);getchar();else if(p->next=NULL)printf("不存在員工記錄.n");gets(lj);getchar();return;void shengri() char bir20,lj100;struct emp *p;p=head;printf("請輸入要查詢的員工的出生日期:n");scanf("%s",bir);if(p=NULL)printf("不存在員

41、工記錄.按回車鍵返回n");gets(lj);getchar();return ;while(strcmp(bir,p->birthday)&&p->next!=NULL)p=p->next;if(!strcmp(bir,p->name)printf("員工信息查詢n");printf("編號tt姓名tt年齡tt性別tt出生年月tt電話tt學歷tt職務tt住址:n");display(p);printf("按回車鍵繼續n");gets(lj);getchar();else if(p-&

42、gt;next=NULL)printf("不存在員工記錄.按回車鍵返回n");gets(lj);getchar();return;void readDate()FILE * fp;struct emp *p1,*p2;fp=fopen(DATA, "r");if(!fp)printf("打開文件失敗!按回車鍵繼續n");getchar();elsefscanf(fp,"%dn",&t);head=p1=p2=(struct emp *)malloc(LEN); fscanf(fp,"%ldtt%s

43、tt%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);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=

溫馨提示

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

評論

0/150

提交評論