員工信息管理系統(數據結構)_第1頁
員工信息管理系統(數據結構)_第2頁
員工信息管理系統(數據結構)_第3頁
員工信息管理系統(數據結構)_第4頁
員工信息管理系統(數據結構)_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、【精品文檔】如有侵權,請聯系網站刪除,僅供學習與交流員工信息管理系統(數據結構).精品文檔.員工信息管理系統課程設計報告系 別: 計算機與信息工程系 班 級: B080501 姓 名: 李海鵬 學 號: B08050128 指導教師: 張紅霞 課設時間:2010-6-21到2010-6-25 摘要員工信息管理系統屬于信息管理系統。員工信息管理是每個公司不可缺少的。系統用C程序開發,主要在于建立好一個合適的數據結構,并要求程序簡潔實用。本系統利用C語言簡潔、靈活,數據結構豐富等特點,編寫適合公司使用的系統。整個系統使用起來也比較方便,入手簡單,操作方便。論文主要介紹了程序設計過程、設計方案以及測

2、試過程,重點講解了設計過程中的思想,技術解決方案等等。關鍵字:員工信息管理,C程序,數據結構目錄前言3第1章 課設題目4第2章 開發運行環境及相關知識4第3章 程序總體設計53.1 主要功能模塊53.2 數據結構6第4章 程序詳細設計及實現74.1 輸入函數74.2 排序函數74.3 顯示函數74.4 查找函數74.5更改函數84.6 刪除函數84.7 主函數84.8 其他函數9第5章 系統功能測試95.1 系統主界面95.2 輸入數據95.3 顯示數據105.4 信息排序105.5 更改信息115.6 刪除信息11第6章 課設總結12第7章 程序清單13參考文獻22前言本課程設計旨在理論學習

3、和基礎實驗的基礎上,開發規模較大的程序,掌握應用計算機編程解決實際問題的基本方法,熟悉C程序開發的全過程,掌握數據結構的使用方法,熟練應用各種數據結構。本次任務是根據給定的數據和程序,應用單向鏈表處理一系列公司員工的信息。通過整個程序開發的過程,提高綜合應用C語言的能力、編程和調試能力,為進一步學習相關專業課程創建較扎實的理論基礎和實踐基礎。報告將分6個章節來詳細講述本次課設題目的開發過程。第1章主要描述課設的題目及要求;第2章來介紹程序開發運行環境;第3章介紹程序主體設計,網絡程序概要;第4章是對程序進行詳細分析,對各個函數進行詳細描述,并闡述程序實現技術等信息;第5章為測試過程,主要用測試

4、過程中的圖片來表述最終信息;第6章也是最后一章,為本次實踐活動的心得體會。第1章 課設題目1.1課設題目每個員工的信息包括:編號、姓名、性別、出生年月、學歷、職務、電話、住址等。系統能夠完成員工信息的查詢、更新、插入、刪除、排序等功能。1.2基本要求(1)每條記錄內,包括員工的個人信息,有:編號、姓名、性別、出生年月、學歷、職務、電話、住址等;(2)按不同關鍵字(如編號,姓名等),對所有員工的信息進行排序;(3) 按照指定條件查找某員工所有信息;(4) 按編號對某個員工的信息進行修改;(5) 加入新員工的信息,并實現排序;(6) 按編號刪除已離職的員工的信息。1.3 其他需求 程序除需完成基本

5、功能外,程序源代碼還應具有良好的編程結構和適當的注釋,運行界面清晰,提示內容明確,易于操作。第2章 開發運行環境及相關知識2.1 運行環境軟件環境:Windows 2000,Windows XP和Windows NT4.0。2.2開發工具微軟公司的Microsoft Visual C+ 6.0。2.3開發工具簡介Visual C+是一個功能強大的可視化軟件開發工具。自1993年Microsoft公司推出Visual C+1.0后,隨著其新版本的不斷問世,Visual C+已成為專業程序員進行軟件開發的首選工具。 雖然微軟公司推出了Visual C+.NET(Visual C+7.0),但它的應

6、用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C+6.0為平臺。 Visual C+6.0不僅是一個C+編譯器,而且是一個基于Windows操作系統的可視化集成開發環境(integrated development environment,IDE)。Visual C+6.0由許多組件組成,包括編輯器、調試器以及程序向導AppWizard、類向導Class Wizard等開發工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發環境。第3章 程序總體設計3.1 主要功能模塊依據

7、程序的數據結構和功能,遵照“自頂向下”原則,描述該程序的層次結構,在總體上包括數據的錄入、增加、刪除、查找、更改和數據的排序等功能模塊。主函數main()輸入顯示查找排序更改刪除退出按編號按姓名按編號按姓名圖3-1 程序主體3.2 數據結構依據給定的數據格式,個人信息由九個字段來組成,即編號、姓名、性別、生日、學歷、職務、電話和住址,外加一個判斷關鍵字。本課程設計根據功能需求,使用線性結構來組織數據,因為數據占據空間比較大,要對表中某項數據進行操作,所以使用鏈表比較方便。結構體定義:typedef struct Stuff char number10; /編號 char name10; /姓名

8、 char sex8; /性別 char birthday10; /生日 char degree20; /學歷 char business20; /職務 char phone15; /電話 char place50; /住址 char con50; /判斷關鍵字 struct Stuff *next; /指針域 Stuff;信息存儲:信息存儲結構如圖3-2Head 指針域數據域 指針域數據域 指針域NULL圖 3-2 鏈式存儲結構第4章 程序詳細設計及實現4.1 輸入函數函數原型:Stuff *App(Stuff *head);函數功能:通過輸入各項數據給數據元素,來建立一個數據表。算法要點:

9、(1) 用循環控制輸入記錄;(2) 為每一結構體數據項輸入數據;(3) 返回輸入記錄數。4.2 排序函數函數原型:void Sort(Stuff *head);void Scpy(char *p,char *q);int Sel(char ch,Stuff *p,Stuff *q);函數功能:按照指定關鍵字對員工信息進行排序。算法要點:(1)比較法對信息進行排序; (2)使用交換函數,對每項信息進行交換。4.3 顯示函數函數原型:void Show(Stuff *head);函數功能:輸出表中所有節點的信息。算法要點:使用循環輸出所有信息。程序清單:4.4 查找函數函數原型:Stuff *Se

10、arch(Stuff *head);函數功能:按照指定關鍵字,對相應員工信息進行查找。算法要點:(1) 輸入字段和信息相應字段的比較;(2) 函數中調用刪除和更改函數。4.5更改函數函數原型:Stuff *Change(Stuff *head,char n10);函數功能:輸入員工編號,查找到員工信息,對其信息進行更新。算法要點:(1) 信息查找;(2) 信息重新錄入及保存。4.6 刪除函數函數原型:Stuff *Del(Stuff *head,char n10);函數功能:查找到要刪除員工的相應信息,并將其從表中永久的刪除。算法要點:(1) 按關鍵字查找信息;(2) 鏈表中刪除節點信息,并釋

11、放節點空間。4.7 主函數主函數主要是調用以上的子函數,用開關語句進行選擇性的調用。大致程序如下: switch(Menu()case 1: 調用函數語句; break; case 2: 調用函數語句; break; case 0: 退出程序語句;default: printf("輸入錯誤,請重新輸入!n");4.8 其他函數其他函數主要起到輔助功能,如菜單函數,主要起到引導作用;釋放空間函數,主要用于釋放已經刪除節點的信息,或者釋放整個鏈表的節點信息。菜單函數原型:char Menu();釋放函數原型:void Fre(Stuff *head);第5章 系統功能測試5.1

12、 系統主界面圖 5-1 系統主界面5.2 輸入數據(1)輸入操作字符1;(2)輸入員工信息;(3)輸入“#”字符結束輸入。圖 5-2 輸入操作5.3 顯示數據圖 5-3 顯示信息5.4 信息排序圖 5-4信息排序5.5 更改信息圖 5-5 更正信息5.6 刪除信息圖 5-6刪除信息第6章 課設總結如何才能真正的去掌握編程的方法,如何才能真正的去理解書上的理論信息,理論知識用于實踐才是最終的目的。通過本次數據結構課程設計,我對數據結構的理論知識有了更為直接的認識,從實際中獲得了很多寶貴的經驗,這些對我以后做程序開發將是一筆很寶貴的財富。我有以下兩點感觸:(1)沒有解決不了的問題。這個程序在課設前

13、一周就開始著手編寫,中間遇到了不少的問題,由于以前寫過類似的程序,所以對其中的一些錯誤很是敏感,也通過不少的途徑來解決了問題。比如,通過和網上的一些程序代碼的對比,解決了自己程序中輸出亂碼的問題。(2)注重團隊協作。雖然此次課設是完全個人完成的,但是我還是要強調團隊的重要性,因為我們以后走項的程序開發的道路上,沒有單槍匹馬的,都是一個團隊協作完成的,所以今后的程序開發過程中,盡可能的和他人合作。萬事開頭難,學好編程,我還有很長的路要走。 第7章 程序清單#include "stdio.h"#include "stdlib.h"#include "

14、;windows.h " /清屏函數頭文件#include "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 *App(St

15、uff *head); /添加函數void Sort(Stuff *head); /排序函數Stuff *Search(Stuff *head); /查找函數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);

16、 /釋放函數int n=1; /定義全局變量,實現人數統計/菜單函數char Menu(void)int ch; printf("-菜單-n"); printf(" 1.添加員工信息n"); printf(" 2.員工信息排序n"); printf(" 3.查找員工信息n"); printf(" 4.輸出員工信息n"); printf(" 5.更改員工信息n"); printf(" 6.刪除員工信息n"); printf(" 0.退出n"

17、;);printf("-n");printf(“請選擇你的操作:”); scanf(" %d",&ch); return ch;/添加成員函數Stuff *App(Stuff *head)Stuff *p=NULL,*q=head; while(n)p=(Stuff *)malloc(sizeof(Stuff); /申請結構體空間 if(p=NULL)printf("空間不足,自動退出系統!n"); exit(0); p->next =NULL; /指針域為空 printf("請輸入第%d名員工:n"

18、,n); printf(" 編號 | 姓名 | 性別 | 出生年月 | 學歷 | 職務 | 電話 | 住址 :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=&

19、#39;0' /防止后面判斷出現隨機值 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;/排序函數void Sort(Stuff *head)char ch; Stuff *p,*q,*r; while(1)printf("請選擇排序條件:1.編號|2.姓名|0.退出n");get

20、char(); scanf("%c",&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) /調用判斷函數r=q; q=q->next; if(r!=p) /交換信息Scpy(r->number,p->num

21、ber); Scpy(r->name,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); /輸出/交換函數void Scpy(char *p,char *q)char c50;

22、strcpy(c,p); strcpy(p,q); strcpy(q,c);/判斷函數int Sel(char ch,Stuff *p,Stuff *q)switch(ch) /實現各個關鍵字查找case '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 ; def

23、ault : exit(0);/查找函數Stuff *Search(Stuff *head)Stuff *p=NULL,*q; 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

24、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(" 編號 | 姓名 | 性別 | 出生年月 | 學歷 | 職務 | 電話 | 住址 n%s t%s t%s t%s t%s t%s t%s t%sn",p->number ,p->nam

25、e ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("是否需要:1.更改 2.刪除 3.繼續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(

26、flag=0)printf("沒有找到該員工信息!n");return head;/更改函數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 編號 | 姓名 | 性別 | 出生年月 | 學歷 | 職務 | 電話 | 住址 n");scanf("%s

27、%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;if(flag=0)printf("未找到該員工信息!n");Show(head); return head;/刪除函數Stuff *Del(Stuff *head,char n10)Stuff *p,*pr;int f

28、lag;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=head)head=p->next ;elsepr->next=p->next ;free(p);printf("刪除成功!n");n-;elseprintf("未找到員工信息!n");Show(head); return head;/輸出函數void Show(Stuff *head)Stuff *p=head;int i=1;if(head!=NULL)printf("員工信息如下:n"); while(p!=NULL)printf("%d. %s %s %s %s %s %s %s %sn",i+,p->number ,p->name ,p->sex ,p-&

溫馨提示

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

評論

0/150

提交評論