版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE12-浙江工商大學計算機與信息工程學院數(shù)據(jù)結(jié)構(gòu)實驗大作業(yè)報告專業(yè):電子商務(wù)班級:商務(wù)1202學號:1212200206姓名:陳志偉指導教師:韓建偉2013年5月一、問題分析職工管理系統(tǒng)是一個工作單位不可缺少的管理工具,它管理的數(shù)據(jù)對于公司的決策者和管理者來說都至關(guān)重要,所以職工管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。作為計算機應(yīng)用的一部分,使用計算機對職工進行管理,具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高職工管理的效率,也是公司的科學化、正規(guī)化管理和與世界接軌的重要條件。簡單的職工管理系統(tǒng):1、問題描述對單位的職工進行管理,包括插入、刪除、查找、排序等功能。2、要求職工對象包括姓名、性別、出生年月、工作年月、學歷、職務(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];/*學歷*/ 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)需要輸入職工的基本信息:姓名、性別、出生年月、工作年月、學歷、職務(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ù)問題描述可知,需要解決問題并不復雜,整個問題只需要實現(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)中沒有職工序號的信息,所以允許職工姓名相同,在一定程度上可能存在職工信息重復。我的程序還需要進一步的改進和成熟才能使這套職工管理系統(tǒng)更加的完善。五、測試結(jié)果(1)進入職工管理系統(tǒng),如圖6所示:(3)新增一名職工信息并查詢?nèi)柯毠ば畔ⅲ鐖D8所示:圖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];/*學歷*/ 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復制給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學歷\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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招投標項目供應(yīng)鏈管理優(yōu)化
- 商業(yè)廣場樓面耐磨施工合同
- 籃球場水電布線施工協(xié)議
- 石油開采挖機計時租賃合同
- 商務(wù)樓宇治安管理規(guī)則
- 生物科技項目跟投管理
- 舞臺座位分配指南
- 藝術(shù)展覽設(shè)計審查策略
- 言語康復治療師年終總結(jié)
- 低空經(jīng)濟:應(yīng)急救援的新力量
- 智慧文旅云服務(wù)平臺建設(shè)方案
- 2024年遼寧省中考一模英語試題(解析版)
- DZ/T 0462.9-2023 礦產(chǎn)資源“三率”指標要求 第9部分:鹽湖和鹽類礦產(chǎn)(正式版)
- DZ∕T 0261-2014 滑坡崩塌泥石流災害調(diào)查規(guī)范(1:50000)(正式版)
- 2024-2030年中國賽馬產(chǎn)業(yè)發(fā)展狀況與前景動態(tài)預測報告
- DZ∕T 0011-2015 地球化學普查規(guī)范(1:50000)(正式版)
- 手術(shù)器械物品不全應(yīng)急預案
- 學生體育學情分析報告
- 三年級上冊語文 第五單元《交流平臺與初試身手》教學課件
- “楓橋經(jīng)驗”課件
評論
0/150
提交評論