T1123-7班-16劉宇京的課程設(shè)計(jì)報(bào)告.doc_第1頁(yè)
T1123-7班-16劉宇京的課程設(shè)計(jì)報(bào)告.doc_第2頁(yè)
T1123-7班-16劉宇京的課程設(shè)計(jì)報(bào)告.doc_第3頁(yè)
T1123-7班-16劉宇京的課程設(shè)計(jì)報(bào)告.doc_第4頁(yè)
T1123-7班-16劉宇京的課程設(shè)計(jì)報(bào)告.doc_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告課設(shè)題目: 職工信息管理系統(tǒng) 專 業(yè): 自動(dòng)化(電動(dòng)車輛工程) 班 級(jí): T1123-7班 姓 名: 劉宇京 成 績(jī): 完成日期: 2012年6月18日2012年6月22日 指導(dǎo)教師: 胡寧亞 目 錄1.課程設(shè)計(jì)目的22.需求分析22.1要求22.2任務(wù)描述22.3運(yùn)行環(huán)境32.4開(kāi)發(fā)工具33.總體設(shè)計(jì)33.1系統(tǒng)流設(shè)計(jì)33.2系統(tǒng)模塊設(shè)計(jì)44.詳細(xì)設(shè)計(jì)54.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)54.2模塊接口設(shè)計(jì)64.3 以下是幾個(gè)主要模塊的流程圖:75.運(yùn)行結(jié)果105.1主菜單界面:105.2信息錄入界面:105.3信息瀏覽界面:115.4 信息查詢界面:115.5信息修改界面:126.程序調(diào)試與測(cè)試126.1程序調(diào)試126.2程序測(cè)試127.問(wèn)題與不足128.建議129.編程體會(huì)1210.程序源代碼:1211.參考文獻(xiàn)1312.用戶使用手冊(cè)131.課程設(shè)計(jì)目的1) 通過(guò)課程設(shè)計(jì),加深對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思想的理解,能對(duì)系統(tǒng)功能進(jìn)行分析,并設(shè)計(jì)合理的模塊化結(jié)構(gòu)。2) 通過(guò)課程設(shè)計(jì),進(jìn)一步掌握C語(yǔ)言中重要的數(shù)據(jù)結(jié)構(gòu)。掌握并熟練運(yùn)用指針、鏈表、結(jié)構(gòu)體、文件等數(shù)據(jù)結(jié)構(gòu)。3) 通過(guò)課程設(shè)計(jì),提高程序開(kāi)發(fā)能力,能運(yùn)用合理的控制流編寫清晰高效的程序。4) 通過(guò)課程設(shè)計(jì),培養(yǎng)C語(yǔ)言知識(shí)運(yùn)用和自學(xué)能力,真正的把課堂上獲得的知識(shí)運(yùn)用起來(lái),培養(yǎng)自己對(duì)程序編寫的興趣,并能獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)一個(gè)小型系統(tǒng)。5) 通過(guò)課程設(shè)計(jì),加強(qiáng)了自己的程序分析能力。2.需求分析2.1要求1) 遵循軟件開(kāi)發(fā)過(guò)程的基本規(guī)范;能靈活應(yīng)用,初步具備運(yùn)用C程序解決實(shí)際問(wèn)題的能力。2) 運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,按照課程設(shè)計(jì)題目要求,完成包括需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編寫代碼、調(diào)試和測(cè)試C程序等過(guò)程。3) 學(xué)會(huì)利用數(shù)組、結(jié)構(gòu)體、鏈表進(jìn)行相關(guān)信息表示。4) 功能模塊劃分清晰,系統(tǒng)結(jié)構(gòu)圖符合功能操作要求,且有詳盡的功能描述5) 各主要功能模塊有詳盡的流程圖及描述,用函數(shù)的形式實(shí)現(xiàn),且調(diào)用入口、功能、出口等關(guān)系正確。6) 所設(shè)計(jì)的C程序較好的可讀性和可靠性;程序書寫風(fēng)格規(guī)范,注釋清晰。7) 界面友好(良好的人機(jī)互交),凡需要輸入信息時(shí),都有較詳盡的提示信息,并對(duì)輸入信息有較完善的值域分析。8) 程序經(jīng)上機(jī)調(diào)試通過(guò),不應(yīng)出現(xiàn)語(yǔ)法型、功能型錯(cuò)誤,并獲得滿意的結(jié)果。9) 學(xué)會(huì)通過(guò)各功能性測(cè)試用例測(cè)試程序的能力,盡可能避免原則性錯(cuò)誤的出現(xiàn)。10) 掌握編寫、調(diào)試和測(cè)試C語(yǔ)言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。11) C語(yǔ)言課程設(shè)計(jì)報(bào)告的內(nèi)容反應(yīng)實(shí)際設(shè)計(jì)過(guò)程,且符合格式要求,無(wú)抄襲現(xiàn)象。2.2任務(wù)描述此系統(tǒng)以普通公司職工為背景,提供對(duì)職工信息的了新建、查詢、統(tǒng)計(jì)等各項(xiàng)功能。具體功能實(shí)現(xiàn)如下:1) 能從鍵盤輸入職工的信息,并能在輸入時(shí)檢查輸入日期是否合法及職工號(hào)是否已經(jīng)存在。2) 能從指定的文件中讀入職工的信息。3) 能按職工號(hào)查詢職工的信息。4) 能按學(xué)歷統(tǒng)計(jì)職工數(shù)。5) 能查詢到指定年份需要退休的職工的信息(男:60歲,女55歲)。6) 能刪除指定職工號(hào)的職工信息。7) 能將職工信息保存在指定的文件中。8) 能顯示所有職工信息。9) 能顯示題目信息。10) 系統(tǒng)以菜單方式工作,界面清晰,易于操作。2.3運(yùn)行環(huán)境1) WindowsXP/7系統(tǒng)2) VC+6.0編譯環(huán)境2.4開(kāi)發(fā)工具C語(yǔ)言3.總體設(shè)計(jì)3.1系統(tǒng)流設(shè)計(jì) 本系統(tǒng)的功能模塊如圖1所示,主要有以下模塊:主菜單界面職工信息新建 職工信息顯示職工信息導(dǎo)入職工信息保存 職工人數(shù)統(tǒng)計(jì)退出系統(tǒng)按職工號(hào)查詢按指定年份查詢?cè)撏诵莸穆毠ば畔@示所有職工信息顯示題目信息 職工信息查詢刪除職工信息圖1系統(tǒng)功能模塊圖 3.2系統(tǒng)模塊設(shè)計(jì)1) 主菜單界面:構(gòu)造函數(shù)int menu_select(),實(shí)現(xiàn)系統(tǒng)主菜單的顯示。2) 職工信息的新建:構(gòu)造函數(shù)void createRec(),實(shí)現(xiàn)職工信息的錄入。其中構(gòu)造了一個(gè)用于判斷輸入日期是否合法的函數(shù)judgedate(char date)。3) 職工信息的保存:構(gòu)造函數(shù)void writeInfo(),實(shí)現(xiàn)將輸入的職工信息保存到指定的文件中。4) 職工信息的讀入:構(gòu)造函數(shù)loadRec(),實(shí)現(xiàn)將保存到文件中的信息讀出來(lái)。5) 職工信息的查詢:分別構(gòu)造函數(shù)void searchRec()及void findRec()實(shí)現(xiàn)按職工號(hào)查詢并顯示職工信息和按指定年份查詢需要退休的職工信息并顯示。6) 職工人數(shù)的統(tǒng)計(jì):構(gòu)造函數(shù)void countRec(),實(shí)現(xiàn)根據(jù)職工學(xué)歷統(tǒng)計(jì)職工人數(shù)。7) 職工信息的刪除:構(gòu)造函數(shù)void deleteRec(),實(shí)現(xiàn)根據(jù)指定的職工號(hào)刪除 相應(yīng)的職工記錄。4.詳細(xì)設(shè)計(jì)4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)根據(jù)系統(tǒng)要求,系統(tǒng)中需要保存的數(shù)據(jù)信息,其結(jié)構(gòu)如下:數(shù)據(jù)項(xiàng)名稱數(shù)據(jù)項(xiàng)系統(tǒng)表示數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度備注職工號(hào)num字符數(shù)組20=6姓名name字符數(shù)組20date,4),可是實(shí)現(xiàn)不了,胡老師交我用printf(“atoi(fun)”); printf(“atoi(year)”);year為我定義的從鍵盤接受的字符數(shù)組用atoi(year)與atoi(fun)比較,那樣一下就知道錯(cuò)在哪了。10.程序源代碼:/*所使用的有頭文件*/#include#include#include#include#include#define LEN sizeof(struct worker)/*結(jié)構(gòu)體定義*/struct workerchar num20;char name20;char sex5;char date20; char edu20;double wage;char add20;char tel12;struct worker *next;/*函數(shù)聲明*/int judgedate(char date); /*判斷日期是否合理*/void createRec(); /*新建職工信息*/void loadRec(); /*從指定文件中讀入職工信息*/void listRec(); /*顯示所有職工信息*/void exam(); /*顯示題目*/void searchRec(); /*按職工號(hào)查詢職工信息*/void countRec(); /*按學(xué)歷統(tǒng)計(jì)職工人數(shù)*/void findRec(); /*查詢到指定年份需要退休的職工信息*/void deleteRec(); /*刪除指定職工號(hào)的職工信息*/void writeInfo(); /*將職工信息保存在指定的文件中*/void exit0(); /*退出*/int menu_select();/*主菜單*/*鏈表操作所用結(jié)構(gòu)體指針*/struct worker *head=NULL,*p1,*p2,*p3;/*定義結(jié)構(gòu)體指針head 為頭指針p1 為輸入數(shù)據(jù)緩存空間指針p2 為尾指針*/*職工記錄保存標(biāo)志全局變量*/intwriteinfo_flag=0;/*主函數(shù)*/int main() loadRec();for(;)switch(menu_select() case 1: system(cls); createRec();break;case 2: system(cls); searchRec();break;case 3: system(cls); countRec(); break; case 4: system(cls); findRec(); break;case 5: system(cls); deleteRec();break;case 6: system(cls); writeInfo();break;case 7: system(cls); listRec(); break;case 8: system(cls); exam(); break;case 0: system(cls); exit0(); return 0;default : getchar();printf(n 選擇錯(cuò)誤請(qǐng)正確輸入你的選擇(0-8);printf(n 按回車鍵返回.n);getch();system(cls); /*清屏*/ return 0;/*主菜單*/int menu_select()int c;printf(tt=菜單=n);printf(ttt1.新建職工信息n);printf(ttt2.按職工號(hào)查詢職工信息n);printf(ttt3.按學(xué)歷統(tǒng)計(jì)職工人數(shù)n);printf(ttt4.查詢到指定年份需要退休的職工信息n);printf(ttt5.刪除指定職工號(hào)的職工信息n);printf(ttt6.將職工信息保存在指定的文件中n);printf(ttt7.顯示所有職工信息n);printf(ttt8.顯示題目信息n);printf(ttt0.退出(任何情況下按Ctrl+C 退出程序)n);printf(tt=n);printf(nnntt 輸入你的選擇(0-8):);scanf(%d,&c);return c;/*從磁盤文件導(dǎo)入職工信息到內(nèi)存*/void loadRec()FILE *fp;int n=0;if(fp=fopen(d:file.txt,r)=NULL) /*打開(kāi)文件*/printf(文件不存在或無(wú)法打開(kāi)!n);return;head=p1=(struct worker *)malloc(LEN);/*開(kāi)辟一個(gè)新單元*/p1-next =NULL;while(!feof(fp)n+;fscanf(fp,%s%s%s%s%s%lf%s%s, p1-num,p1-name,p1-sex,p1-date,p1-edu,&p1-wage,p1-add,p1-tel);if(p1-num0num09) n-;break; p2=(struct worker *)malloc(LEN); /*開(kāi)辟一個(gè)新單元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d項(xiàng)信息輸入完畢,按回車鍵返回.n,n);getchar();system(cls); /*清屏*/writeinfo_flag=0; /*設(shè)置保存記錄標(biāo)志*/if( fclose(fp) ) /* 關(guān)閉文件 */ printf( Can not close the file!n ); exit(0); /*判斷日期輸入是否正確*/int judgedate(char date) int year,month,day,i,isrunnian; for(i=0,year=0;i4;i+) year=year*10+(datei-0); /*把表示年份的字符串轉(zhuǎn)換成整形*/ for(i=5,month=0;i7;i+) month=month*10+(datei-0); /*把表示月份字符串轉(zhuǎn)換成整形*/ for(i=8,day=0;i10;i+) day=day*10+(datei-0); /*把表示日字符串轉(zhuǎn)換成整形*/ if(date4!=-|date7!=-) return 0; else if(month12) return 0; else isrunnian=(year%4=0&year%100!=0|year%400=0); /*判斷閏年*/ if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) if(day31) return 0; else return 1; else if(month=4|month=6|month=9|month=11) if(day30) return 0; else return 1; else if(isrunnian=1&month=2) if(day29) return 0; else return 1; else if(day28) return 0; else return 1; /*新建職工記錄*/void createRec()int n,i;if(head!=0) p3=head;while( p3-next!=NULL)p3=p3-next;getchar();printf(n 職工信息數(shù)據(jù)庫(kù)已存在,新建職工信息將接續(xù)在信息庫(kù)的后面,按回車鍵繼續(xù).:n); getchar();system(cls); /*清屏*/p3-next=p1=(struct worker *)malloc(LEN);/*開(kāi)辟一個(gè)新單元*/ else head=p1=(struct worker *)malloc(LEN); /*開(kāi)辟一個(gè)新單元*/ p1-next =NULL; printf(nn 請(qǐng)輸入希望建立的職工基本信息條數(shù)n(n1&n10):n); doscanf(%d,&n); if(n10) printf(nn輸入范圍有誤,請(qǐng)重新輸入希望建立的職工基本信息條數(shù)n(n1&n10):n);while(n10); /*開(kāi)始建立n條職工基本信息記錄*/ printf(nn 請(qǐng)每行按職工號(hào) 職工姓名 性別 出生日期 學(xué)歷 工資 住址 電話的形式輸入%d條職工記錄:n,n); printf(備注:n); printf(1 (num=6位) n); printf(2 (name=10漢字) n); printf(3 性別用nan和nv分別代表男性和女性 n); printf(4 出生日期長(zhǎng)度為10位,形如:年-月-日(YYYY-YY-YY) n); printf(5 學(xué)歷:zhongzhuan,dazhuan,benke,shuoshi,boshi n); printf(6 工資用數(shù)字 n); printf(7 住址輸入到地區(qū)即可 n); printf(8 電話為手機(jī)號(hào)碼十一位 n); printf(系統(tǒng)功能尚待完善,請(qǐng)用戶嚴(yán)格按照備注說(shuō)明輸入信息以防造成系統(tǒng)不能運(yùn)行。謝謝合作!n); printf(請(qǐng)記住你創(chuàng)建的職工號(hào)以便以后查詢!n);for(i=0;inum);scanf(%s, p1-name);scanf(%s, p1-sex);scanf(%s, p1-date);scanf(%s, p1-edu);scanf(%lf,&p1-wage);scanf(%s, p1-add);scanf(%s, p1-tel);if(atoi(p1-num)=999999)doprintf(nn職工號(hào)輸入有誤,超出范圍);printf(nn職工號(hào)最大六位,請(qǐng)重新輸入:);scanf(%s,p1-num);while(atoi(p1-num)=999999); if(judgedate(p1-date)=0)do printf(nn職工出身日期輸入有誤!); printf(nn請(qǐng)重新輸入職工出生日期:); scanf(%s,p1-date);while(judgedate(p1-date)=0); if(strlen(p1-tel)!=11)do printf(nn手機(jī)號(hào)輸入位數(shù)有誤!n); printf(請(qǐng)重新輸入手機(jī)號(hào)(tel=11位):); scanf(%s,p1-tel);while(strlen(p1-tel)11); p2=(struct worker *)malloc(LEN); /*開(kāi)辟一個(gè)新單元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d項(xiàng)信息輸入完畢,按回車鍵返回.n,n);getch();system(cls); /*清屏*/writeinfo_flag=1; /*清除保存記錄標(biāo)志*/*顯示所有職工信息*/void listRec()if(head=NULL)printf(n文件中沒(méi)有職工信息,按回車鍵返回.n);getch();system(cls);return ;printf(n所有職工信息顯示如下:n);printf(n職工號(hào)t職工姓名t性別t出生日期t學(xué)歷t工資tt住址tt電話 n); p1=head;while(p1!=NULL)printf(%st%stt%st%st%st%lft%st%sn, p1-num,p1-name,p1-sex,p1-date,p1-edu,p1-wage,p1-add,p1-tel); p1=p1-next; system(pause);getchar();system(cls); /*清屏*/return ;/*查詢職工信息*/ void searchRec()char num20;p1=head;if(p1=NULL) printf(nn職工信息數(shù)據(jù)庫(kù)為空! n);printf(n 按回車鍵返回主菜單建立職工信息.n);getch();system(cls); /*清屏*/return ;printf(nn 請(qǐng)輸入職工號(hào)以便查證:n);scanf(%s,num);while(p1!=NULL)if(strcmp(p1-num,num )=0) printf(t該職工信息如下:nt 職工號(hào):);printf(%sn,p1-num );printf(t 職工姓名:);printf(%sn,p1-name );printf(t 職工性別:);printf(%sn,p1-sex ); printf(t 職工出生日期:);printf(%sn,p1-date ); printf(t 職工學(xué)歷:);printf(%sn,p1-edu); printf(t 職工工資:);printf(%lfn,p1-wage); printf(t 職工住址:);printf(%sn,p1-add ); printf(t 職工電話:);printf(%sn,p1-tel ); break;else p1=p1-next ;if(p1=NULL) printf(nn找不到該職工信息!n); printf(n 按回車鍵返回.n); getch(); system(cls); /*清屏*/*按學(xué)歷統(tǒng)計(jì)職工人數(shù)*/void countRec() char edu20;int n=0;p1=head;if(head=NULL)getchar();printf(n 職工信息數(shù)據(jù)庫(kù)為空! n);printf(n按回車鍵返回.n);getch();system(cls);/*清屏*/return ;printf(nn請(qǐng)輸入你要統(tǒng)計(jì)的學(xué)歷名稱以便查詢:n);printf(nn備注:學(xué)歷包含zhongzhuan,dazhuan,benke,shuoshi,boshin);scanf(%s,edu);while(p1!=NULL)if(strcmp(p1-edu,edu)=0)n+;p1=p1-next;if(n=0) printf(nn沒(méi)有該學(xué)歷的職工!n); printf(nn按回車鍵返回.n); getch(); system(cls); /*清屏*/ return; elseprintf(人數(shù)為%d,n);printf(n 按回車鍵返回.);getch();system(cls); /*清屏*/*查詢到指定年份需要退休的職工信息*/void findRec() int n=0;char year10,fun10 ; char sex10;p1=head;if(p1=NULL) printf(nn職工信息數(shù)據(jù)庫(kù)為空! n); printf(nn按回車鍵返回.);getch();system(cls); /*清屏*/return ;printf(nn請(qǐng)輸入指定的年份及性別以便查詢:n);printf(nn說(shuō)明:年份為四位,例如1991;性別分別用nan和nv代表男女。n); printf(nn請(qǐng)嚴(yán)格按照說(shuō)明輸入,否則實(shí)現(xiàn)不了查詢?nèi)蝿?wù)。 );scanf(%s%s,year,sex);while(p1!=NULL) strncpy(fun,p1-date,4);fun4=0;if(strcmp(p1-sex,sex)=0) if(atoi(year)-atoi(fun)=59) printf(年齡為%dn,(atoi(year)-atoi(fun)+1); printf(t該職工信息如下:nt 職工號(hào):); printf(%sn,p1-num ); printf(t 職工姓名:); printf(%sn,p1-name ); printf(t 職工性別:); printf(%sn,p1-sex ); printf(t 職工出生日期:); printf(%sn,p1-date ); printf(t 職工學(xué)歷:); printf(%sn,p1-edu); printf(t 職工工資:); printf(%lfn,p1-wage); printf(t 職工住址:); printf(%sn,p1-add ); printf(t 職工電話:); printf(%sn,p1-tel ); n+; p1=p1-next;if(n=0) printf(nn沒(méi)有要退休的職工!n); printf(n 按回車鍵返回.n); getch(); system(cls); /*清屏*/*刪除指定職工號(hào)的職工信息*/void deleteRec()char num20;if(head=NULL) getchar();printf(n 職工信息數(shù)據(jù)庫(kù)為空,不能刪除,按回車鍵將返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(nn請(qǐng)輸入要?jiǎng)h除的職工號(hào):n);scanf(%s,num);while(strcmp(num,p1-num )!=0&p1-next!=NULL)p2=p1;p1=p1-next ;if(strcmp(num,p1-num )=0)if(head-next=NULL)free(head);head=NULL;else if(head=p1) head=p1-next;free(p1);else p2-next=p1-next;free(p1);printf(n已經(jīng)刪除完畢;);else printf(nn找不到該職工號(hào)信息!); getchar(); printf(按回車鍵返回:n); getchar(); system(cls);/*清屏*/ writeinfo_flag=1;/*清除保存記錄標(biāo)志*/ retu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論