高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)_第1頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)_第2頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)_第3頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)_第4頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告 課程名稱: 高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì) 姓 名: 班級(jí)學(xué)號(hào): 指導(dǎo)教師: 完成日期: 1 課程設(shè)計(jì)目的與要求高級(jí)語(yǔ)言程序設(shè)計(jì)是本科工科類各專業(yè)的重要基礎(chǔ)課,課程以影響深遠(yuǎn)的、傳統(tǒng)的、面向過程的優(yōu)秀編程語(yǔ)言C語(yǔ)言為基礎(chǔ),學(xué)習(xí)程序設(shè)計(jì)的基本概念和方法,通過本門課程學(xué)習(xí),應(yīng)使同學(xué)掌握高級(jí)語(yǔ)言的基本原理,熟練掌握程序設(shè)計(jì)的基礎(chǔ)知識(shí)、基本概念;掌握程序設(shè)計(jì)的思想和編程技巧。課程設(shè)計(jì)是在學(xué)生已經(jīng)具備了使用C語(yǔ)言編寫簡(jiǎn)單的應(yīng)用程序的能力,為使學(xué)生對(duì)C語(yǔ)言有更全面的理解,進(jìn)一步提高運(yùn)用C語(yǔ)言編程解決實(shí)際問題的能力,通過提出算法、指定輸入輸出來設(shè)計(jì)一個(gè)解決方案。經(jīng)過該實(shí)踐環(huán)節(jié),培養(yǎng)學(xué)生的探索精神和創(chuàng)

2、新能力。通過答辯訓(xùn)練學(xué)生的綜合表達(dá)能力。參加本課程設(shè)計(jì)的學(xué)生,應(yīng)當(dāng)認(rèn)真完成本課程設(shè)計(jì)的全部過程。并以最終課程設(shè)計(jì)成果來證明其獨(dú)立完成各種實(shí)際任務(wù)的能力。從而反映出理解和運(yùn)用本課程知識(shí)的水平和能力。具體如下:(1)數(shù)據(jù)組織方面盡量使用到:數(shù)組、鏈表、結(jié)構(gòu)體、文件;(2)程序結(jié)構(gòu)方面做到函數(shù)調(diào)用,盡量采用指針運(yùn)算;(3)代碼編寫規(guī)范,形成良好的編程習(xí)慣;(4)程序須有一定的健壯性和必要的提示信息,考慮問題的多種可能和邊界數(shù)據(jù)。(5)課設(shè)完成須進(jìn)行答辯,提交課設(shè)報(bào)告電子稿、裝訂的打印稿。課設(shè)報(bào)告內(nèi)容包括以下幾個(gè)方面:l 程序的總體設(shè)計(jì)和算法分析。l 程序流程圖、函數(shù)說明l 源程序代碼清單l 測(cè)試數(shù)據(jù)

3、和測(cè)試過程記錄l 遇到的問題及解決方法分析l 課程設(shè)計(jì)小結(jié)2 問題描述設(shè)計(jì)一個(gè)職工信息管理系統(tǒng),其中:職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號(hào)不重復(fù))。功能包括:(1)錄入員工資料(2)瀏覽員工資料(3)員工信息查詢(4)修改員工資料(5)員工信息排序(6)員工信息刪除3總體設(shè)計(jì)3.1 功能分析系統(tǒng)提供主界面,各種功能操作以獨(dú)立的函數(shù)為基礎(chǔ),通過把職工信息存入到一個(gè)結(jié)構(gòu)體中來對(duì)職工信息進(jìn)行管理,同時(shí)對(duì)操作結(jié)果在計(jì)算機(jī)中做永久保存。3.2 系統(tǒng)使用的主要函數(shù)menu(); /*主菜單*/void enter(); /*輸入*/browse(); /*瀏覽*/sear

4、ch(); /*查詢*/search1(); /*按職工工號(hào)查詢*/search2(); /*按職工姓名查詢*/modify(); /*修改職工信息*/modify_data(); /*修改職工信息*/void sort(); /*對(duì)職工信息進(jìn)行排序*/void import(); /*對(duì)于追加的信息進(jìn)行保存*/void save(); /*信息的保存*/int load(); /*加載函數(shù)*/ void del(); /*職工信息的刪除*/3.3 系統(tǒng)使用的主要數(shù)據(jù)結(jié)構(gòu)struct worker /*定義結(jié)構(gòu)體函數(shù)*/ char id50; /*定義工號(hào)*/ char name20; /*定

5、義名字*/ char sex10; /*定義性別*/ char age10; /*定義年齡*/ char edu20; /*定義學(xué)歷*/ char salary10; /*定義工資*/ char address20; /*定義地址*/ char tel20; /*定義電話號(hào)碼/workerN;4 詳細(xì)設(shè)計(jì)4.1 程序總體結(jié)構(gòu)圖圖4.1主控模塊4.2 程序流程圖圖4.2.1 主菜單系統(tǒng) 圖4.2.2員工信息錄入模塊 圖4.2.3員工信息查詢模塊 圖4.2.4員工信息修改模塊 圖刪除員工信息模塊 參考文獻(xiàn)1吉順如.C程序設(shè)計(jì)教程與實(shí)驗(yàn). 北京: 清華大學(xué)出版社 , 2011年6月2吉順如.c程序設(shè)

6、計(jì)習(xí)題集與課程設(shè)計(jì)指導(dǎo).北京: 電子工業(yè)出版社,2012年9月3譚浩強(qiáng). c程序設(shè)計(jì).第四版.北京: 清華大學(xué)出版社, 2010年6月附錄 系統(tǒng)源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 50struct worker char id50; char name20; char sex10; char age10; char edu20; char salary10; char address20; char tel20;wor

7、kerN;/定義一個(gè)結(jié)構(gòu)體變量worker來存放職工信息menu();/主菜單函數(shù)void enter();/錄入職工信息函數(shù)browse();/瀏覽職工信息函數(shù)search();/查詢職工信息函數(shù)search1();/按工號(hào)查詢職工信息函數(shù)search2();/按姓名查詢職工信息函數(shù)modify();/修改職工信息函數(shù)modify_data();/修改職工信息函數(shù)void sort();/職工信息排序函數(shù)void del();/刪除職工信息函數(shù)void import();/職工信息錄入保存函數(shù)void save();/職工信息保存函數(shù)int load();/加載職工信息函數(shù)main() pr

8、intf("t n"); printf(" t 歡迎使用職工信息管理系統(tǒng) n"); menu(); menu() int n; printf("n n"); printf("t 1.錄入員工資料 n"); printf("t 2.瀏覽員工資料 n"); printf("t 3.員工信息查詢 n"); printf("t 4.修改員工記錄 n"); printf("t 5.員工信息排序 n"); printf("t 6.刪除員工

9、信息 n"); printf("t 7.退出信息系統(tǒng) n"); printf("請(qǐng)選擇對(duì)應(yīng)選項(xiàng): "); scanf("%d",&n); switch(n) case 1:enter();break; /錄入 case 2:browse();break; /瀏覽 case 3:search();break; /查詢 case 4:modify();break; /修改 case 5:sort();break; /排序 case 6:del();break; /刪除 case 7:exit(0); /退出 void e

10、nter() /輸入模塊 int i,n,w; printf("輸入多少個(gè)職工信息(0-%d):",N-1); scanf("%d",&n); printf("n 請(qǐng)輸入職工信息nn"); for(i=0;i<n;i+) printf("工號(hào):");scanf("%s",workeri.id); printf("姓名:");scanf("%s",); printf("性別:");scanf(&quo

11、t; %s",&workeri.sex); printf("年齡:");scanf("%s",&workeri.age); printf("工資:");scanf("%s",workeri.salary); printf("學(xué)歷:");scanf("%s",&); printf("住址:");scanf("%s",workeri.address); printf("電話:

12、");scanf("%s",workeri.tel); printf("n"); if(i!=0) import(n);/以追加方式保存信息 printf("nnt信息已保存!.nn"); printf("請(qǐng)選擇操作:nnt1).瀏覽全部t2).返回:n"); scanf("%d",&w); if(w=1)browse();/瀏覽信息 else menu();/返回主菜單browse() /瀏覽模塊 int i,n; n=load();/數(shù)據(jù)的個(gè)數(shù) printf("n

13、t工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); for(i=0;i<n;i+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); printf("t這里有 %d 條記錄.n",n); printf("n按任意鍵返回.n"); getch(); menu();

14、search() /查詢模塊 int c; do printf("n查詢方式=>nn1).工號(hào) 2).姓名 "); printf("請(qǐng)選擇:n"); scanf("%d",&c); if(c>2|c<1) printf("n沒有此選項(xiàng),請(qǐng)重新輸入!n"); getchar(); while(c>2|c<1); switch(c) case 1:search1();break; /按工號(hào)查詢模塊 case 2:search2();break;/按姓名查詢模塊 search1()

15、/按工號(hào)查詢模塊 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn輸入要查詢的工號(hào)! id:"); scanf("%s",s.id); printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要查詢的職工編號(hào) k=i; printf("%10s %10s %5s %5s %8s %6s %10s %10sn",

16、workerk.id,,workerk.sex,workerk.age,workerk.salary,,workerk.address,workerk.tel); break; if(k=-1) printf("n無此記錄,輸入有誤!n");printf("n按任意鍵返回主菜單n");getch(); menu(); if(k!=-1) printf("nn接下來干什么?nt1).查找另一個(gè) 2).返回菜單n"); scanf("%d",&w2); switch

17、(w2) case 1:search1();break; case 2:menu();break; while(w2=1); menu();search2() /按姓名查詢模塊 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn請(qǐng)輸入你要查詢的姓名:n"); scanf("%s",); printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); for(i=0;i<n;i+) if(strcmp(,work

18、)=0)/查找要查詢的職工姓名 k=i; printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerk.id,,workerk.sex,workerk.age,workerk.salary,,workerk.address,workerk.tel); if(k=-1) printf("n無此記錄,輸入有誤!n");printf("n按任意鍵返回主菜單n");getch(); menu(); if(k!=-1) printf(&q

19、uot;nn接下來干什么?nt1).查找另一個(gè) 2).返回菜單n"); scanf("%d",&w2); switch(w2) case 1:search2();break; case 2:menu();break; while(w2=1); menu();modify() /修改模塊 struct worker s; int i,n,k,w0,w1; n=load(); do k=-1; printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); for(i=0;i<n;i+) printf("%1

20、0s %10s %5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); do printf("nn輸入要修改的職工工號(hào)! 工號(hào):"); scanf("%s",s.id); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要修改的數(shù)據(jù) k=i; /找到要修改的記錄 s=workeri;

21、/把workeri備份,以便恢復(fù) if(k=-1) printf("nn未找到請(qǐng)重新輸入:n");while(k=-1); w1=modify_data(k,n); /修改記錄并返回保存控制值w1,w1=1表示用戶已確認(rèn)修改 if(w1=1) printf("n操作成功!是否繼續(xù)修改?nnt1).是 2).否,保存退出n"); scanf("%d",&w0); while(w0=1); menu();modify_data(int i,int n) /修改函數(shù) int c,w1; do printf("n修改選項(xiàng)=&

22、gt;nn 1).工號(hào) 2).姓名 3).性別 4).年齡 5).工資 6).學(xué)歷 7).地址 8).電話 9).取消"); printf("n請(qǐng)選擇:n"); scanf("%d",&c); if(c>9|c<1) printf("n選擇錯(cuò)誤!請(qǐng)重新輸入!"); getchar(); while(c>9|c<1); do switch(c) case 1:printf("工號(hào)");scanf("%s",workeri.id);break; case 2

23、:printf("姓名:");scanf("%s",);break; case 3:printf("性別:");scanf("%s",workeri.sex);break; case 4:printf("年齡:");scanf("%s",workeri.age);break; case 5:printf("工資:");scanf("%s",workeri.salary);break; case 6:printf(

24、"學(xué)歷:");scanf("%s",);break; case 7:printf("住址:");scanf("%s",workeri.address);break; case 8:printf("電話:");scanf("%s",workeri.tel);break; case 9:menu();break; printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); printf("%10s %10s

25、%5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); printf("n確定?nnt1).是 2).否,重新修改 n"); scanf("%d",&w1); if(w1=1) save(n);/保存職工信息 while(w1=2); return(w1);void sort() /*排序函數(shù)*/ int i,j,k; int m

26、=load(); struct worker c; printf("工號(hào)排序:1 工資排序:2n"); scanf("%d",&k); switch(k) case 1: for(i=0;i<m-1;i+)/冒泡排序法排序職工工號(hào) for(j=0;j<m-1-i;j+) if(strcmp(workerj.id,workerj+1.id)>0) c=workerj; workerj=workerj+1; workerj+1=c; printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n");

27、for(j=0;j<m;j+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerj.id,,workerj.sex,workerj.age,workerj.salary,,workerj.address,workerj.tel); printf("n按任意鍵返回.n"); getch(); menu(); case 2: for(i=0;i<m-1;i+)/冒泡排序法排序職工工資 for(j=0;j<m-1-j;j+) if(atoi(

28、workerj.salary)>atoi(workerj+1.salary)/atoi把字符串轉(zhuǎn)換成整型數(shù) c=workerj; workerj=workerj+1; workerj+1=c; printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話號(hào)碼n"); for(j=0;j<m;j+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerj.id,,workerj.sex,workerj.age,workerj.salary,,

29、workerj.address,workerj.tel); printf("n按任意鍵返回.n"); getch(); menu(); void del()/刪除職工信息 int n,i,c; char id50,name20; FILE *fp; n=load(); printf("按工號(hào)刪除: 1 n"); printf("按姓名刪除: 2 n"); scanf("%d",&c); switch(c) case 1:/按工號(hào)刪除 if(fp=fopen("worker.txt",&q

30、uot;wb")=NULL) printf("n文件打開錯(cuò)誤!n"); exit(0); printf("請(qǐng)輸入要?jiǎng)h除的員工號(hào):"); scanf("%s",id); for(i=0; i<n;i+) if(strcmp(id,workeri.id)=0) strcpy(workeri.id,"del");/把要?jiǎng)h除的工號(hào)標(biāo)記為“del” for(i=0;i<n;i+) if(strcmp(workeri.id,"del")!=0) if(fwrite(&worke

31、ri,sizeof(struct worker),1,fp)!=1)/不刪除的內(nèi)容寫入文件 printf("無法輸入!n"); printf("保存成功!n"); fclose(fp); browse(); case 2:/按姓名刪除職工信息 if(fp=fopen("worker.txt","wb")=NULL) printf("n文件打開錯(cuò)誤!n"); exit(0); printf("請(qǐng)輸入要?jiǎng)h除的姓名:"); scanf("%s",name); for(i=0; i<n;i+)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論