職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第1頁
職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第2頁
職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第3頁
職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第4頁
職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE12-浙江工商大學(xué)計算機與信息工程學(xué)院數(shù)據(jù)結(jié)構(gòu)實驗大作業(yè)報告專業(yè):電子商務(wù)班級:商務(wù)1202學(xué)號:1212200206姓名:陳志偉指導(dǎo)教師:韓建偉2013年5月一、問題分析職工管理系統(tǒng)是一個工作單位不可缺少的管理工具,它管理的數(shù)據(jù)對于公司的決策者和管理者來說都至關(guān)重要,所以職工管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。作為計算機應(yīng)用的一部分,使用計算機對職工進行管理,具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高職工管理的效率,也是公司的科學(xué)化、正規(guī)化管理和與世界接軌的重要條件。簡單的職工管理系統(tǒng):1、問題描述對單位的職工進行管理,包括插入、刪除、查找、排序等功能。2、要求職工對象包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。(1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。(2)刪除一名職工:從職工管理文件中刪除一名職工對象。(3)查詢:從職工管理文件中查詢符合某些條件的職工。(本實驗查詢的是2000前進入公司的男職工)(4)修改:檢索某個職工對象,對其某些屬性進行修改。(本實驗修改的是某個職工的電話號碼)(5)排序:按某種需要對職工對象文件進行排序。(本實驗是按照職工工作時間長短排序)3、實現(xiàn)提示職工對象數(shù)不必很多,便于一次讀入內(nèi)存,所有操作不經(jīng)過內(nèi)外存交換。(1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。(2)對職工對象中的"姓名"按字典順序進行排序。(3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。二、概要設(shè)計1、輸入功能的實現(xiàn):要想實現(xiàn)職工管理系統(tǒng)的輸入,必須要建立一個職工信息系統(tǒng)的抽象數(shù)據(jù)類型,其中職工信息以鏈表的存儲方式實現(xiàn)。由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。2、系統(tǒng)處理功能的實現(xiàn):系統(tǒng)管理員根據(jù)公司的人員流動情況,在提示信息的提示下,選擇相應(yīng)的服務(wù)進行操作。如對職工對象中的"姓名"按字母順序進行排序;對排序后的職工對象進行增、刪、查詢、修改、排序等操作。3、輸出的實現(xiàn):根據(jù)選擇的操作,輸出與之對應(yīng)的信息。由以上條件可以繪制出職工管理功能的系統(tǒng)流程圖,如圖1所示圖1系統(tǒng)流程圖4、系統(tǒng)功能結(jié)構(gòu)根據(jù)職工管理系統(tǒng)問題的分析和設(shè)計要求,可以得到該職工管理系統(tǒng)可以分為五個模塊:職工信息添加模塊、職工信息修改模塊、職工信息刪除模塊、職工信息查詢模塊、職工信息排序模塊。其系統(tǒng)功能結(jié)構(gòu)如圖2所示。圖2系統(tǒng)功能結(jié)構(gòu)圖5、模塊函數(shù)構(gòu)造根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的抽象數(shù)據(jù)類型和相對應(yīng)的函數(shù),其方法名和功能如表1所示。表1函數(shù)功能表模塊函數(shù)或數(shù)據(jù)結(jié)構(gòu)功能鏈表數(shù)據(jù)類型typedefstruct定義鏈表結(jié)點structdataemployee[maxsize]定義職工信息seqlist*creatlist()初始化鏈表系統(tǒng)處理模塊insertlist(seqlist*L)/插入職工信息deletelist(seqlist*L,charName[])刪除職工信息updatelist(seqlist*L,chars[],longb)修改職工信息search(seqlist*L,longx)查詢職工信息orderstartlist(seqlist*L)職工信息排序輸出模塊traveselist(seqlist*L)顯示職工信息三、詳細設(shè)計1、抽象數(shù)據(jù)類型定義(1)定義表結(jié)點(typedefstructdate);structdata//單個員工信息{ charname[5];/*姓名*/ charsex[10];/*性別*/ longbirth;/*出生年月*/ longstart;/*開始工作時間*/ chardegree[5];/*學(xué)歷*/ charjob[10];/*職務(wù)*/ charaddress[10];/*住址*/ longtel;/*電話號碼*/}employ(2)定義職工信息(typedefstructDatatype)typedefstructtypedefstruct{ structdataemployee[maxsize]; intsize;}seqlist;(3)創(chuàng)建順序表(seqlist*creatlist())seqlist*creatlist()/*創(chuàng)建順序表*/{ charNAME[20]; charm[10]={'e','n','d'}; seqlist*L; L=(seqlist*)malloc(sizeof(seqlist));//申請內(nèi)存的格式和大小,返回申請內(nèi)存首地址給l L->size=0;2、主函數(shù)設(shè)計(1)根據(jù)詳細設(shè)計要求,可以得到主函數(shù)代碼及其對應(yīng)的程序流程圖:在主函數(shù)中,實現(xiàn)了友好的界面設(shè)計。系統(tǒng)需要輸入職工的基本信息:姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等。這個系統(tǒng)還利用鍵盤輸入提供的主菜單服務(wù),在主菜單中,有六種操作的調(diào)用:新增職工信息:insertlist(seqlist*L)/查詢職工信息:search(seqlist*L,longx)刪除職工信息:deletelist(seqlist*L,charName[])修改職工信息:updatelist(seqlist*L,chars[],longb)職工信息排序:orderstartlist(seqlist*L)顯示職工信息:traveselist(seqlist*L)(2)主函數(shù)程序流程圖如圖3所示:圖3主函數(shù)程序流程圖4、排序算法設(shè)計在排序算法中,職工管理系統(tǒng)提供了四種查詢操作,實現(xiàn)了系統(tǒng)的基本排序操作。這些排序操作分別為:對姓名進行排序,對性別進行排序,對出生年月進行排序,對工作年月進行排序。排序算法中,利用鏈表的指針的移動掃描整個職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。四、調(diào)試分析經(jīng)驗與體會:本次課程設(shè)計是圍繞數(shù)據(jù)結(jié)構(gòu)進行。根據(jù)問題描述可知,需要解決問題并不復(fù)雜,整個問題只需要實現(xiàn)一個職工管理系統(tǒng)功能,那就是在這個系統(tǒng)中實現(xiàn)對職工信息的插入、刪除、查詢、排序、修改以及保存。但是,為了實現(xiàn)該功能,卻需要優(yōu)秀的算法和數(shù)據(jù)結(jié)構(gòu)以保證實現(xiàn)的時間和空間效率。把職工信息存儲在一個單鏈表中,利用指針實現(xiàn)對職工信息的各項基本操作。雖然設(shè)計的程序完成了題目描述所需要實現(xiàn)的功能,但是仍然存在不如人意的地方,由于技術(shù)方面的原因,程序設(shè)計的比較單一、簡單,每次只能實現(xiàn)單一的功能,但是可以排序上面多設(shè)計幾個算法,實現(xiàn)多角度排序。在這個系統(tǒng)中沒有職工序號的信息,所以允許職工姓名相同,在一定程度上可能存在職工信息重復(fù)。我的程序還需要進一步的改進和成熟才能使這套職工管理系統(tǒng)更加的完善。五、測試結(jié)果(1)進入職工管理系統(tǒng),如圖6所示:(3)新增一名職工信息并查詢?nèi)柯毠ば畔?,如圖8所示:圖8新增并查詢職工信息界面(4)刪除職工信息,如圖9所示:圖9刪除職工信息界面(6)修改職工信息,如圖10所示圖10職工信息修改界面(7)職工信息排序,如圖11所示圖11職工信息排序界面2、實驗程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#definemaxsize3000structdata//單個員工信息{ charname[5];/*姓名*/ charsex[10];/*性別*/ longbirth;/*出生年月*/ longstart;/*開始工作時間*/ chardegree[5];/*學(xué)歷*/ charjob[10];/*職務(wù)*/ charaddress[10];/*住址*/ longtel;/*電話號碼*/}employ;typedefstruct{ structdataemployee[maxsize];//數(shù)組用于存儲員工信息 intsize;//現(xiàn)有員工人數(shù)}seqlist;seqlist*creatlist()/*創(chuàng)建順序表*/{ charNAME[20]; charm[10]={'e','n','d'}; seqlist*L; L=(seqlist*)malloc(sizeof(seqlist));//申請內(nèi)存的格式和大小,返回申請內(nèi)存首地址給l L->size=0; scanf("%s",NAME);//輸入一個名字 while(strcmp(NAME,m)!=0)//比較name和m是否相同,不斷輸入員工信息直到end { strcpy(L->employee[L->size].name,NAME);//將NAME復(fù)制給L->employee[L->size].name scanf("%s%ld%ld%s%s%s%ld",L->employee[L->size].sex,&L->employee[L->size].birth,&L->employee[L->size].start,L->employee[L->size].degree,L->employee[L->size].job,L->employee[L->size].address,&L->employee[L->size].tel); L->size++; scanf("%s",NAME); } returnL;}voidordernamelist(seqlist*L)/*將職工信息按名字的字母順序排序*/{ inti,j; structdatat; for(i=0;i<L->size-1;i++) { for(j=1;j<L->size;j++) { if(strcmp(L->employee[i].name,L->employee[j].name)>0) { t=L->employee[j]; L->employee[j]=L->employee[i]; L->employee[i]=t; } } }}voidinsertlist(seqlist*L)/*插入一個新職工的全部信息*/{ inti=0,j; structdataM; scanf("%s%s%ld%ld%s%s%s%ld",M.name,M.sex,&M.birth,&M.start,M.degree,M.job,M.address,&M.tel); while(strcmp(L->employee[i].name,M.name)<0&&i<L->size) i++; if(i==L->size) L->employee[i]=M; else for(j=L->size-1;j>=i;j--) { strcpy(L->employee[j+1].name,L->employee[j].name); strcpy(L->employee[j+1].sex,L->employee[j].sex); L->employee[j+1].birth=L->employee[j].birth; L->employee[j+1].start=L->employee[j].start; strcpy(L->employee[j+1].degree,L->employee[j].degree); strcpy(L->employee[j+1].address,L->employee[j].address); L->employee[j+1].tel=L->employee[j].tel; strcpy(L->employee[j+1].job,L->employee[j].job);strcpy(L->employee[i].name,M.name); strcpy(L->employee[i].sex,M.sex); L->employee[i].birth=M.birth; L->employee[i].start=M.start; strcpy(L->employee[i].degree,M.degree); strcpy(L->employee[i].address,M.address); L->employee[i].tel=M.tel; strcpy(L->employee[i].job,M.job); } L->size++; return;}voiddeletelist(seqlist*L,charName[])/*刪除某一職工的全部信息*/{ inti=0,j; scanf("%s",Name); while(strcmp(L->employee[i].name,Name)!=0&&i<L->size) i++; if(i==L->size) printf("thereisnothisperson"); else for(j=i+1;j<L->size;j++) { L->employee[j-1]=L->employee[j]; } L->size--; return;}voidsearch(seqlist*L,longx)/*查找在2000年之前進入公司的男職員名單*/{ inti; charn[5]={'m','a','l','e'}; for(i=0;i<L->size;i++) { if(L->employee[i].start<2000&&strcmp(L->employee[i].sex,n)==0) printf("%s\t",L->employee[i].name); } printf("\n");}voidupdatelist(seqlist*L,chars[],longb)/*對某員工的電話進行修改*/{ inti=0; while(strcmp(L->employee[i].name,s)!=0&&i<L->size) i++; if(i==L->size) printf("thereisnothisperson"); else { L->employee[i].tel=b; } return;}voidorderstartlist(seqlist*L)/*按進入公司的時間長短對員工信息進行排序,從長到短排*/{ inti,j; structdataN; for(i=0;i<L->size-1;i++) { for(j=1;j<L->size;j++) { if(L->employee[i].start>L->employee[j].start) { N=L->employee[j]; L->employee[j]=L->employee[i]; L->employee[i]=N; } } }}voidtraveselist(seqlist*L)/*輸出各員工信息*/{inti; for(i=0;i<L->size;i++) printf("%s\t%s\t%ld\t%ld\t%s\t%s\t%s\t%ld\n",L->employee[i].name,L->employee[i].sex,L->employee[i].birth, L->employee[i].start,L->employee[i].degree,L->employee[i].job,L->employee[i].address,L->employee[i].tel);}intmain(){ charName[20]; chars[20];longb; longx; seqlist*L;printf("請創(chuàng)建一個職工表\n"); printf("姓名\t性別\t出生年月\t工作年月\t學(xué)歷\t職務(wù)\t住址\t電話\n"); L=creatlist(); ordernamelist(L);printf("職工信息按名字的字典順序排序如下:\n");

溫馨提示

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

評論

0/150

提交評論