C語言課程設計報告:職工信息管理系統(tǒng)_第1頁
C語言課程設計報告:職工信息管理系統(tǒng)_第2頁
C語言課程設計報告:職工信息管理系統(tǒng)_第3頁
C語言課程設計報告:職工信息管理系統(tǒng)_第4頁
C語言課程設計報告:職工信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華中科技大學文華學院信息學部課程設計報告C語言課程設計報告題 目:職工信息管理系統(tǒng)班 級:電科二班 學生姓名:錢 浩 宇 學 號:100110021118指導老師:陳 維日 期: 2011-6-29 目 錄1、 前言.22、需求分析.33、總體設計.34、詳細設計.45、調試過程.56、結束語.77、參考文獻.78、附錄.81.前言C語言是近年來在國內外都得到迅速推廣的一種現(xiàn)代通用的程序設計語言,它不但具有豐富的數(shù)據(jù)類型與運算符、靈活的控制結構、簡潔而高效的表達式、清晰的程序結構和良好的可移植性等優(yōu)點,還具有直接支持計算機硬件編程的強大功能。其既具有高級語言的優(yōu)點,有具有低級語言的優(yōu)點,具有完

2、善的結構化、模塊化程序結構,是世界最流行、使用最廣泛的高級程序設計語言之一。但由于課堂教學和實驗的深度和廣度有限,練習的深度也受到一定的限制。所以開設了課程設計這門課。它比教學實驗復雜一些,涉及的深度也廣些,這樣便可培養(yǎng)我們學生實際分析問題、編程和動手能力,也可以讓我們更好的掌握C語言這門課程。2.需求分析根據(jù)要設計職工信息管理系統(tǒng)可以知道職工數(shù)據(jù)由職工編號、姓名、部門、職稱、基 本工資、加班工資、獎金和總工資構成。功能要求如下:(1)添加職工的記錄(2)查詢職工(分別按職工編號和姓名)(3)對職工數(shù)據(jù)排序(分別按總工資的降序)(4)刪除職工記錄(5)修改職工記錄(6)插入職工信息(7)輸出職

3、工信息表(8)保存職工信息3.總體設計根據(jù)上面的需求分析,可以將這個系統(tǒng)設計分為以下模塊:增加職工信息、刪除職工信息、查詢職工信息、修改職工信息、插入職工信息、排序、保存職工信息、顯示職工信息。系統(tǒng)功能模塊如下: 職 工 信 息 管 理 系 統(tǒng) 菜 單 選 擇顯 示 職 工 信 息保 存 職 工 信 息排 序插 入 職 工 信 息修 改 職 工 信 息查 詢 職 工 信 息增 加 職 工 信 息刪 除 職 工 信 息按姓名 按工號 按姓名 按工號 按姓名 按工號 4.詳細設計 (1).主函數(shù):創(chuàng)建一個鏈表,并使用指針。 void main() Link list; FILE *fp; int

4、choose; char ch; int count=0; struct node *p,*r; pintf(tttt職工信息管理系統(tǒng)nttttn); list=(struct node*)malloc(sizeof(struct node); if(!list) printf(n allocate memory failure ); return ; (2).定義各部分功能函數(shù): void Add(Link l) 增加職工信息 void Del(Link l) 刪除職工信息 void Qur(Link l) 查詢職工信息 void Modify(Link l) 修改職工信息 void Ins

5、ert(Link l) 插入職工信息 void Sort(Link l) 排序(3) 菜單函數(shù): void menu() 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(

6、t*n); (4) .輸出中文標題函數(shù): void printstart(); void Wrong(); void Nofind(); void printc(); 5、調試過程1.主菜單2.增加職工信息3.刪除職工信息4.查詢職工信息5.修改職工信息6.插入職工信息7排序.6.結束語通過為期二周的課程設計學習,我對C語言這門課程有了更深一步的了解。它是計算機程序設計的重要理論技術基礎,在我們電子科學與技術專業(yè)的學習中占據(jù)著十分重要的地位。同時也使我知道,要學好這門課程,僅學習書本上的知識是不夠的,還要有較強的實踐能力。因為我們學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與

7、掌握書本上的東西。然而這個程序還有不足之處,比如說:界面會跟隨輸入的數(shù)據(jù)而變得整齊或不整齊等等,這些都是有待改進的地方。7.參考文獻:1.網站搜索:2.程序設計基礎(c語言) 楊有安 陳維 曹慧雅 魯麗 編著3.C程序設計 課程設計 劉振安,孫 忱 劉燕君 編著4.C語言程序設計-實驗指導.課程設計.習題解答 高濤 陸麗娜 編著5.C語言課程設計 案例精編 姜靈芝 余健 編著8.附錄(源程序): #include #include #include int saveflag=0; struct employee char name15; char num10;char sex4; char b

8、m15; char zc20; int gz;int jbgz;int jj;int zgz; typedef struct node struct employee data; struct node *next; Node,*Link; void add(Link l); void disp(Link l); void del(Link l); Node* Locate(Link l,char findmess,char nameornum);void Qur(Link l); void Sort(Link l); void Modify(Link l); void save(Link l

9、); void printe(Node *p); void printstart(); void Wrong(); void Nofind(); void printc();void menu()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 退出系

10、統(tǒng) *n);printf(t* *n);printf(t*n); int count=0; Node *p; p=l-next; if(!p) printf(n=提示:沒有職工記錄可以顯示!n);return; printf(tttt顯示結果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void printstart() printf(-n); void Wrong() printf(n=提示:輸入錯誤!n); void Nofind() printf(

11、n=提示:沒有找到該職工!n); void printc() printf(工號t 姓名 性別 部門 職稱 工資 加班工資 獎金 總工資n); void printe(Node *p) printf(%-12s%st%st%st%st%dt%dt%dt%dn,p-data.num,,p-data.sex,p-data.bm,p-data.zc,p-data.gz,p-data.jbgz,p-data.jj,p-data.zgz); Node* Locate(Link l,char findmess,char zcornum) Node *r; if(strcmp(zcor

12、num,num)=0) r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(zcornum,zc)=0) r=l-next; while(r!=NULL) if(strcmp(r-data.zc,findmess)=0) return r; r=r-next; return 0; void Add(Link l) Node *p,*r,*s; char num10;int flag=0;r=l; s=l-next; while(r-next!=NULL)whi

13、le(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的職工已經存在,若要修改請你選擇4 修改!n,num); flag=1; break;return ; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); printf(請你輸入姓名:); scanf(%s,); getch

14、ar(); 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-d

15、ata.jj); getchar();p-data.zgz=p-data.gz+p-data.jbgz+p-data.jj; p-next=NULL; r-next=p; r=p; saveflag=1; void Del(Link l) int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:沒有記錄可以刪除!n); return; printf(n=1按工號刪除n=2按姓名刪除n); scanf(%d,&sel); if(sel=1) /按工號刪除 printf(請你輸入要刪除的工號:); scanf(%s,findmes

16、s);p=Locate(l,findmess,num);if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該職工已經成功刪除!n); saveflag=1; else Nofind(); else if(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-nextfr

17、ee(p); printf(n=提示:該職工已經成功刪除!n); saveflag=1; else Nofind(); /if(sel=2)else Wrong(); void Qur(Link l) int sel; char findmess20; 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,findme

18、ss,num); if(p) printf(tttt查找結果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) printf(請你輸入要查找的職稱:); scanf(%s,findmess); p=Locate(l,findmess,zc); if(p) printf(tttt查找結果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Modify(Link l

19、) /修改功能 Node *p; char findmess20; 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):,); scanf(%s,); getchar(); printf(請你輸入新性別(原來

20、是%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-

21、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(); void Insert(Link l) Node *s,*r,*p; char ch,new_num10,old_num10; int flag=0; s=l-next; system(cls); Disp(l); while(1) printf(請你

22、輸入已存在的工號(以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=The number %s is not existing,try again?(y/n):,old_num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else

23、 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的職工已經存在!n,new_num); flag=1; return ; s=s-next; p=(Node *)malloc(sizeof(Node); if(!p) printf(n allocate memory failure ); return ; strcpy(p-da

24、ta.num,new_num); printf(請你輸入姓名:); scanf(%s,); 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-d

25、ata.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(nn); void Sort(Link l) Link ll; Node *p,*rr,*s; i

26、nt i=0; if(l-next=NULL) system(cls); printf(n=Not employee record!n); getchar(); return ; ll=(Node*)malloc(sizeof(Node); if(!ll) printf(n allocate memory failure ); return ; ll-next=NULL; system(cls); Disp(l); p=l-next; while(p) s=(Node*)malloc(sizeof(Node); if(!s) /*s=NULL*/ printf(n allocate memor

27、y failure ); 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 =sort complete!n); void Save(Link l) FILE* fp; Node *p; int flag

28、=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(count0) printf(n=提示:文件保存成功.(有%d條記錄已經保存.)n,count); saveflag=0; else system(cls); printf(保存文件失敗,0條記錄被保存!n); fclose(fp); void main() Link list; FILE *fp; int choose; char ch; int count=0; struct node *p,*r; printf(tttt職工信息管理系統(tǒng)nttttn); list=(struct node*)malloc(sizeof(struct node); if(!list) printf(n al

溫馨提示

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

評論

0/150

提交評論