




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
華中科技大學文華學院信息學部課程設計報告華中科技大學文華學院信息學部課程設計報告PAGE2PAGE22C語言課程設計報告題目:職工信息管理系統(tǒng)班級:電科二班學生姓名:錢浩宇學號:100110021118指導老師:陳維日期:2011-6-29
目錄前言22、需求分析33、總體設計34、詳細設計45、調試過程56、結束語77、參考文獻78、附錄8
1.前言C語言是近年來在國內外都得到迅速推廣的一種現(xiàn)代通用的程序設計語言,它不但具有豐富的數(shù)據(jù)類型與運算符、靈活的控制結構、簡潔而高效的表達式、清晰的程序結構和良好的可移植性等優(yōu)點,還具有直接支持計算機硬件編程的強大功能。其既具有高級語言的優(yōu)點,有具有低級語言的優(yōu)點,具有完善的結構化、模塊化程序結構,是世界最流行、使用最廣泛的高級程序設計語言之一。但由于課堂教學和實驗的深度和廣度有限,練習的深度也受到一定的限制。所以開設了課程設計這門課。它比教學實驗復雜一些,涉及的深度也廣些,這樣便可培養(yǎng)我們學生實際分析問題、編程和動手能力,也可以讓我們更好的掌握《C語言》這門課程。
2.需求分析根據(jù)要設計職工信息管理系統(tǒng)可以知道職工數(shù)據(jù)由職工編號、姓名、部門、職稱、基本工資、加班工資、獎金和總工資構成。功能要求如下:(1)添加職工的記錄(2)查詢職工(分別按職工編號和姓名)(3)對職工數(shù)據(jù)排序(分別按總工資的降序)(4)刪除職工記錄(5)修改職工記錄(6)插入職工信息(7)輸出職工信息表(8)保存職工信息3.總體設計根據(jù)上面的需求分析,可以將這個系統(tǒng)設計分為以下模塊:增加職工信息、刪除職工信息、查詢職工信息、修改職工信息、插入職工信息、排序、保存職工信息、顯示職工信息。系統(tǒng)功能模塊如下:職工信息管理系統(tǒng)職工信息管理系統(tǒng)菜單選擇菜單選擇顯示職工信息保存職工信息排序插入職工信息修改職工信息查詢職工信息增加職工信息刪除職工信息顯示職工信息保存職工信息排序插入職工信息修改職工信息查詢職工信息增加職工信息刪除職工信息按姓名按工號按姓名按工號按姓名按工號按姓名按工號按姓名按工號按姓名按工號4.詳細設計(1).主函數(shù):創(chuàng)建一個鏈表,并使用指針。voidmain()Linklist;FILE*fp;intchoose;charch; intcount=0; structnode*p,*r; pintf("\t\t\t\t職工信息管理系統(tǒng)\n\t\t\t\t\n"); list=(structnode*)malloc(sizeof(structnode)); if(!list){printf("\nallocatememoryfailure");return;}(2).定義各部分功能函數(shù):voidAdd(Linkl)增加職工信息voidDel(Linkl)刪除職工信息voidQur(Linkl)查詢職工信息voidModify(Linkl)修改職工信息voidInsert(Linkl)插入職工信息voidSort(Linkl)排序菜單函數(shù):voidmenu(){printf("\t***************************************************************\n");printf("\t**\n");printf("\t*職工信息管理系統(tǒng)*\n");printf("\t**\n");printf("\t*[1]增加職工信息[2]刪除職工信息*\n");printf("\t*[3]查詢職工信息[4]修改職工信息*\n");printf("\t*[5]插入職工記錄[6]排序*\n");printf("\t*[7]保存職工信息[8]顯示職工信息*\n");printf("\t*[0]退出系統(tǒng)*\n");printf("\t**\n");printf("\t**************************************************************\n");}.輸出中文標題函數(shù):voidprintstart();voidWrong();voidNofind();voidprintc();5、調試過程1.主菜單2.增加職工信息3.刪除職工信息4.查詢職工信息5.修改職工信息6.插入職工信息7排序.6.結束語通過為期二周的課程設計學習,我對《C語言》這門課程有了更深一步的了解。它是計算機程序設計的重要理論技術基礎,在我們電子科學與技術專業(yè)的學習中占據(jù)著十分重要的地位。同時也使我知道,要學好這門課程,僅學習書本上的知識是不夠的,還要有較強的實踐能力。因為我們學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。然而這個程序還有不足之處,比如說:界面會跟隨輸入的數(shù)據(jù)而變得整齊或不整齊等等,這些都是有待改進的地方。
7.參考文獻:1.網(wǎng)站搜索:2.《程序設計基礎》(c語言)楊有安陳維曹慧雅魯麗編著3.《C程序設計課程設計》劉振安,孫忱劉燕君編著4.《C語言程序設計-實驗指導.課程設計.習題解答》高濤陸麗娜編著5.《C語言課程設計案例精編》姜靈芝余健編著8.附錄(源程序):#include<stdio.h>#include<stdlib.h>#include<string.h>intsaveflag=0;structemployee{ charname[15]; charnum[10]; charsex[4]; charbm[15]; charzc[20]; intgz; intjbgz; intjj; intzgz; };typedefstructnode{ structemployeedata; structnode*next;}Node,*Link;voidadd(Linkl);voiddisp(Linkl);voiddel(Linkl);Node*Locate(Linkl,charfindmess[],charnameornum[]);voidQur(Linkl);voidSort(Linkl);voidModify(Linkl);voidsave(Linkl);voidprinte(Node*p);voidprintstart();voidWrong();voidNofind();voidprintc();voidmenu(){printf("\t****************************************************************\n");printf("\t**\n");printf("\t*職工信息管理系統(tǒng)*\n");printf("\t**\n");printf("\t*[1]增加職工信息[2]刪除職工信息*\n");printf("\t*[3]查詢職工信息[4]修改職工信息*\n");printf("\t*[5]插入職工記錄[6]排序*\n");printf("\t*[7]保存職工信息[8]顯示職工信息*\n");printf("\t*[0]退出系統(tǒng)*\n");printf("\t**\n");printf("\t***************************************************************\n");}{ intcount=0; Node*p; p=l->next; if(!p) { printf("\n=====>提示:沒有職工記錄可以顯示!\n"); return; } printf("\t\t\t\t顯示結果\n"); printstart(); printc(); printf("\n"); while(p) { printe(p); p=p->next; } printstart(); printf("\n");}voidprintstart(){printf("\n");}voidWrong(){ printf("\n=====>提示:輸入錯誤!\n");}voidNofind(){ printf("\n=====>提示:沒有找到該職工!\n");}voidprintc(){printf("工號\t姓名性別部門職稱工資加班工資獎金總工資\n");}voidprinte(Node*p){printf("%-12s%s\t%s\t%s\t%s\t%d\t%d\t%d\t%d\n",p->data.num,p->,p->data.sex,p->data.bm,p->data.zc,p->data.gz,p->data.jbgz,p->data.jj,p->data.zgz);}Node*Locate(Linkl,charfindmess[],charzcornum[]){ Node*r; if(strcmp(zcornum,"num")==0) { r=l->next; while(r!=NULL) { if(strcmp(r->data.num,findmess)==0) returnr; r=r->next; } } elseif(strcmp(zcornum,"zc")==0) { r=l->next; while(r!=NULL) { if(strcmp(r->data.zc,findmess)==0) returnr; r=r->next; } } return0;}voidAdd(Linkl){ Node*p,*r,*s; charnum[10]; intflag=0; r=l; s=l->next; while(r->next!=NULL) while(1) { printf("請你輸入工號(以'0'返回上一級菜單:)"); scanf("%s",num); if(strcmp(num,"0")==0) break; s=l->next; while(s) { if(strcmp(s->data.num,num)==0) {printf("=====>提示:工號為'%d'的職工已經(jīng)存在,若要修改請你選擇'4修改'!\n",num); flag=1;break; return; } s=s->next; } p=(Node*)malloc(sizeof(Node)); strcpy(p->data.num,num); printf("請你輸入姓名:"); scanf("%s",p->); getchar(); printf("請你輸入性別:"); scanf("%s",p->data.sex); getchar(); printf("請你輸入職工所在部門:"); scanf("%s",&p->data.bm); getchar(); printf("請你輸入職工職稱:"); scanf("%s",&p->data.zc); getchar(); printf("請你輸入職工工資:"); scanf("%d",&p->data.gz); getchar(); printf("請你輸入職工加班工資:"); scanf("%d",&p->data.jbgz); getchar(); printf("請你輸入職工獎金:"); scanf("%d",&p->data.jj); getchar(); p->data.zgz=p->data.gz+p->data.jbgz+p->data.jj; p->next=NULL; r->next=p; r=p; saveflag=1; }} voidDel(Linkl){ intsel; Node*p,*r; charfindmess[20]; if(!l->next) { printf("\n=====>提示:沒有記錄可以刪除!\n"); return; } printf("\n=====>1按工號刪除\n=====>2按姓名刪除\n"); scanf("%d",&sel); if(sel==1)//按工號刪除 { printf("請你輸入要刪除的工號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("\n=====>提示:該職工已經(jīng)成功刪除!\n"); saveflag=1; } else Nofind(); } elseif(sel==2) { printf("請你輸入要刪除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next;//r r->next(p)p->next free(p); printf("\n=====>提示:該職工已經(jīng)成功刪除!\n"); saveflag=1; } else Nofind(); }//if(sel==2) else Wrong();}voidQur(Linkl){ intsel; charfindmess[20]; Node*p; if(!l->next) { printf("\n=====>提示:沒有資料可以查詢!\n"); return; }printf("\n=====>1按工號查找\n=====>2按職稱查找\n"); scanf("%d",&sel); if(sel==1)/*工號*/ { printf("請你輸入要查找的工號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("\t\t\t\t查找結果\n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } elseif(sel==2) { printf("請你輸入要查找的職稱:"); scanf("%s",findmess); p=Locate(l,findmess,"zc"); if(p) { printf("\t\t\t\t查找結果\n"); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else Wrong();}voidModify(Linkl)//修改功能{ Node*p; charfindmess[20]; if(!l->next) { printf("\n=====>提示:沒有資料可以修改!\n"); return; } printf("請你輸入要修改的職工工號:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("請你輸入新工號(原來是%s):",p->data.num); scanf("%s",p->data.num); printf("請你輸入新姓名(原來是%s):",p->); scanf("%s",p->); getchar(); printf("請你輸入新性別(原來是%s):",p->data.sex); scanf("%s",p->data.sex); getchar(); printf("請你輸入新的部門(原來是%s):",p->data.bm); scanf("%s",&p->data.bm); printf("請你輸入新的職稱(原來是%s):",p->data.zc); scanf("%s",&p->data.zc); getchar(); printf("請你輸入新的工資(原來是%d):",p->data.gz); scanf("%d",&p->data.gz); getchar(); printf("請你輸入新的加班工資(原來是%d):",p->data.jbgz); scanf("%d",&p->data.jbgz); getchar(); printf("請你輸入新的獎金(原來是%d):",p->data.jj); scanf("%d",&p->data.jj); getchar();p->data.zgz=p->data.gz+p->data.jbgz+p->data.jj; printf("\n=====>提示:資料修改成功!\n"); } else Nofind();}voidInsert(Linkl){ Node*s,*r,*p; charch,new_num[10],old_num[10]; intflag=0; s=l->next; system("cls"); Disp(l); while(1) { printf("請你輸入已存在的工號(以'0'返回上一級菜單:)"); scanf("%s",old_num); if(strcmp(old_num,"0")==0) return; s=l->next; flag=0; while(s) { if(strcmp(s->data.num,old_num)==0) { flag=1; break; } s=s->next; } if(flag==1) break; else { getchar(); printf("\n=====>Thenumber%sisnotexisting,tryagain?(y/n):",old_num); scanf("%c",&ch); if(ch=='y'||ch=='Y') {continue;} else {return;} } } printf("請你輸入待插入的工號(以'0'返回上一級菜單:)"); scanf("%s",new_num); if(strcmp(new_num,"0")==0) return; s=l->next; while(s) { if(strcmp(s->data.num,new_num)==0) { printf("=====>提示:工號為'%s'的職工已經(jīng)存在'!\n",new_num); flag=1; return; } s=s->next; } p=(Node*)malloc(sizeof(Node)); if(!p) { printf("\nallocatememoryfailure"); return; } strcpy(p->data.num,new_num); printf("請你輸入姓名:"); scanf("%s",p->); getchar(); printf("請你輸入性別:"); scanf("%s",p->data.sex); getchar(); printf("請你輸入部門:"); scanf("%s",&p->data.bm); getchar(); printf("請你輸入職稱:"); scanf("%s",&p->data.zc); getchar(); printf("請你輸入工資:"); scanf("%d",&p->data.gz); getchar(); printf("請你輸入加班工資:"); scanf("%d",&p->data.jbgz); getchar(); printf("請你輸入獎金:"); scanf("%d",&p->data.jj); getchar(); p->data.zgz=p->data.gz+p->data.jbgz+p->data.jj; p->next=NULL; saveflag=1; r=l->next; while(1) { if(strcmp(r->data.num,old_num)==0) { p->next=r->next; r->next=p; break; } r=r->next; } Disp(l); printf("\n\n"); }voidSort(Linkl){ Linkll; Node*p,*rr,*s; inti=0; if(l->next==NULL) {system("cls"); printf("\n=====>Notemployeerecord!\n"); getchar(); return; } ll=(Node*)malloc(sizeof(Node)); if(!ll) { printf("\nallocatememoryfailure"); return; } ll->next=NULL; system("cls"); Disp(l); p=l->next; while(p) { s=(Node*)malloc(sizeof(Node)); if(!s)/*s==NULL*/ { printf("\nallocatememoryfailure"); return; } s->data=p->data; s->next=NULL; rr=ll; while(rr->next!=NULL&&rr->next->data.zgz>=p->data.zgz) {rr=rr->next;} if(rr->next==NULL) rr->next=s; else { s->next=rr->next; rr->next=s; } p=p->next; } l->next=ll->next; Disp(l); saveflag=1; printf("\n=====>sortcomplete!\n");}voidSave(Linkl){ FILE*fp; Node*p; intflag=1,count=0; fp=fopen("employee.txt","wb"); if(fp==NULL) { printf("\n=====>提示:重新打開文件時發(fā)生錯誤!\n"); return; } p=l->next; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(count>0) { printf("\n=====>提示:文件保存成功.(有%d條記錄已經(jīng)保存.)\n",count); saveflag=0; } else { system("cls"); printf("保存文件失敗,'0'條記錄被保存!\n"); } fclose(fp);}voidmain(){ Linklist; FILE*fp; intchoose; charch; intcount=0; structnode*p,*r; printf("\t\t\t\t職工信息管理系統(tǒng)\n\t\t\t\t\n"); list=(structnode*)malloc(sizeof(structnode)); if(!list) { printf("\nallocatememoryfailure"); return; } list->next=NULL; r=list; p=fopen("employee.txt","rb"); if(fp==NULL) { printf("\n=====>提示:文件還不存在,是否創(chuàng)建?(y/n)\n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') fp=fopen("employee.txt","ab+"); else exit(0); } printf("\n=====>提示:文件已經(jīng)打開,正在導入記錄\n"); while(!feof(fp)) { p=(structnode*)malloc(sizeof(structnode)); if(!p) { printf("memorymallocfailure!\n"); exit(0); } if(fread(p,sizeof(structnode),1,fp)) { p->next=NULL; r->next=p; r=p; count++; } } fclose(fp); printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count); while(1) { menu(); printf("\t\t====>請選擇:"); scanf("%d",&choose); if(choose==0) { if(saveflag==1) { getchar(); printf("\n=====>提示:資料已經(jīng)改動,是否將改動保存到文件中(y/n)?\n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(list); } printf("\n=====>提示:你已經(jīng)退出系統(tǒng),再見!\n"); break; } switch(choose) { case1:Add(list); break; case2: Del(list); break; case3: Qur(list); break; case4: Modify(list); break; case5: Insert(list); break; case6: Sort(list); break; case7: Save(list); break; case8: system("cls"); Disp(list); break; default: Wrong(); getchar(); break; } }}基于C8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統(tǒng)的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構件開發(fā)的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉變壓器-數(shù)字轉換器的研究基于單片機的光纖Bragg光柵解調系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出差人員接待安排表格
- 單層鋼結構廠房施工方案
- 互聯(lián)網(wǎng)公司技術創(chuàng)新成果統(tǒng)計表
- 房屋買賣補充合同
- 《戰(zhàn)國策的文學特色與選讀:高中語文經(jīng)典教案》
- 農產(chǎn)品營銷策略與方案
- 蚌埠灌溉打井施工方案
- 吊頂吸音砂漿施工方案
- 2025年二手奢品項目發(fā)展計劃
- 防水冬季施工方案
- 小學生春耕教學課件
- 2025年個人投資合同電子版模板
- 車輛掛靠協(xié)議書
- 2025年湖南交通職業(yè)技術學院單招職業(yè)適應性測試題庫1套
- 法規(guī)解讀丨2024新版《突發(fā)事件應對法》及其應用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術標準
- 肺炎的中醫(yī)護理方案
- 基本樂理及音樂常識類知識考試題及答案
- 轉學申請表、轉學證明
- 低壓電工作業(yè)電工培訓課件.ppt
- 新房購房合同
評論
0/150
提交評論