




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告 課程名稱(chēng): 高級(jí)語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì) 姓 名: 班級(jí)學(xué)號(hào): 指導(dǎo)教師: 完成日期: 1 課程設(shè)計(jì)目的與要求高級(jí)語(yǔ)言程序設(shè)計(jì)是本科工科類(lèi)各專(zhuān)業(yè)的重要基礎(chǔ)課,課程以影響深遠(yuǎn)的、傳統(tǒng)的、面向過(guò)程的優(yōu)秀編程語(yǔ)言C語(yǔ)言為基礎(chǔ),學(xué)習(xí)程序設(shè)計(jì)的基本概念和方法,通過(guò)本門(mén)課程學(xué)習(xí),應(yīng)使同學(xué)掌握高級(jí)語(yǔ)言的基本原理,熟練掌握程序設(shè)計(jì)的基礎(chǔ)知識(shí)、基本概念;掌握程序設(shè)計(jì)的思想和編程技巧。課程設(shè)計(jì)是在學(xué)生已經(jīng)具備了使用C語(yǔ)言編寫(xiě)簡(jiǎn)單的應(yīng)用程序的能力,為使學(xué)生對(duì)C語(yǔ)言有更全面的理解,進(jìn)一步提高運(yùn)用C語(yǔ)言編程解決實(shí)際問(wèn)題的能力,通過(guò)提出算法、指定輸入輸出來(lái)設(shè)計(jì)一個(gè)解決方案。經(jīng)過(guò)該實(shí)踐環(huán)節(jié),培養(yǎng)學(xué)生的探索精神和創(chuàng)
2、新能力。通過(guò)答辯訓(xùn)練學(xué)生的綜合表達(dá)能力。參加本課程設(shè)計(jì)的學(xué)生,應(yīng)當(dāng)認(rèn)真完成本課程設(shè)計(jì)的全部過(guò)程。并以最終課程設(shè)計(jì)成果來(lái)證明其獨(dú)立完成各種實(shí)際任務(wù)的能力。從而反映出理解和運(yùn)用本課程知識(shí)的水平和能力。具體如下:(1)數(shù)據(jù)組織方面盡量使用到:數(shù)組、鏈表、結(jié)構(gòu)體、文件;(2)程序結(jié)構(gòu)方面做到函數(shù)調(diào)用,盡量采用指針運(yùn)算;(3)代碼編寫(xiě)規(guī)范,形成良好的編程習(xí)慣;(4)程序須有一定的健壯性和必要的提示信息,考慮問(wèn)題的多種可能和邊界數(shù)據(jù)。(5)課設(shè)完成須進(jìn)行答辯,提交課設(shè)報(bào)告電子稿、裝訂的打印稿。課設(shè)報(bào)告內(nèi)容包括以下幾個(gè)方面:l 程序的總體設(shè)計(jì)和算法分析。l 程序流程圖、函數(shù)說(shuō)明l 源程序代碼清單l 測(cè)試數(shù)據(jù)
3、和測(cè)試過(guò)程記錄l 遇到的問(wèn)題及解決方法分析l 課程設(shè)計(jì)小結(jié)2 問(wèn)題描述設(shè)計(jì)一個(gè)職工信息管理系統(tǒng),其中:職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話(huà)等(職工號(hào)不重復(fù))。功能包括:(1)錄入員工資料(2)瀏覽員工資料(3)員工信息查詢(xún)(4)修改員工資料(5)員工信息排序(6)員工信息刪除3總體設(shè)計(jì)3.1 功能分析系統(tǒng)提供主界面,各種功能操作以獨(dú)立的函數(shù)為基礎(chǔ),通過(guò)把職工信息存入到一個(gè)結(jié)構(gòu)體中來(lái)對(duì)職工信息進(jìn)行管理,同時(shí)對(duì)操作結(jié)果在計(jì)算機(jī)中做永久保存。3.2 系統(tǒng)使用的主要函數(shù)menu(); /*主菜單*/void enter(); /*輸入*/browse(); /*瀏覽*/sear
4、ch(); /*查詢(xún)*/search1(); /*按職工工號(hào)查詢(xún)*/search2(); /*按職工姓名查詢(xún)*/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; /*定義電話(huà)號(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員工信息查詢(xún)模塊 圖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來(lái)存放職工信息menu();/主菜單函數(shù)void enter();/錄入職工信息函數(shù)browse();/瀏覽職工信息函數(shù)search();/查詢(xún)職工信息函數(shù)search1();/按工號(hào)查詢(xún)職工信息函數(shù)search2();/按姓名查詢(xún)職工信息函數(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.員工信息查詢(xún) 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; /查詢(xún) 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("電話(huà):
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é)歷 地址 電話(huà)號(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() /查詢(xún)模塊 int c; do printf("n查詢(xún)方式=>nn1).工號(hào) 2).姓名 "); printf("請(qǐng)選擇:n"); scanf("%d",&c); if(c>2|c<1) printf("n沒(méi)有此選項(xiàng),請(qǐng)重新輸入!n"); getchar(); while(c>2|c<1); switch(c) case 1:search1();break; /按工號(hào)查詢(xún)模塊 case 2:search2();break;/按姓名查詢(xún)模塊 search1()
15、/按工號(hào)查詢(xún)模塊 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn輸入要查詢(xún)的工號(hào)! id:"); scanf("%s",s.id); printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話(huà)號(hào)碼n"); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要查詢(xún)的職工編號(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無(wú)此記錄,輸入有誤!n");printf("n按任意鍵返回主菜單n");getch(); menu(); if(k!=-1) printf("nn接下來(lái)干什么?nt1).查找另一個(gè) 2).返回菜單n"); scanf("%d",&w2); switch
17、(w2) case 1:search1();break; case 2:menu();break; while(w2=1); menu();search2() /按姓名查詢(xún)模塊 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn請(qǐng)輸入你要查詢(xún)的姓名:n"); scanf("%s",); printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話(huà)號(hào)碼n"); for(i=0;i<n;i+) if(strcmp(,work
18、)=0)/查找要查詢(xún)的職工姓名 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無(wú)此記錄,輸入有誤!n");printf("n按任意鍵返回主菜單n");getch(); menu(); if(k!=-1) printf(&q
19、uot;nn接下來(lái)干什么?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é)歷 地址 電話(huà)號(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表示用戶(hù)已確認(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).電話(huà) 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("電話(huà):");scanf("%s",workeri.tel);break; case 9:menu();break; printf("nt工號(hào) 姓名 性別 年齡 工資 學(xué)歷 地址 電話(huà)號(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é)歷 地址 電話(huà)號(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é)歷 地址 電話(huà)號(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文件打開(kāi)錯(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)容寫(xiě)入文件 printf("無(wú)法輸入!n"); printf("保存成功!n"); fclose(fp); browse(); case 2:/按姓名刪除職工信息 if(fp=fopen("worker.txt","wb")=NULL) printf("n文件打開(kāi)錯(cuò)誤!n"); exit(0); printf("請(qǐng)輸入要?jiǎng)h除的姓名:"); scanf("%s",name); for(i=0; i<n;i+)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年城市軌道交通起重裝卸機(jī)械操作工職業(yè)技能鑒定試卷
- 2025年國(guó)家安全生產(chǎn)監(jiān)督管理總局公務(wù)員錄用考試面試真題試卷(結(jié)構(gòu)化小組)
- 2025年高壓成套電器項(xiàng)目申請(qǐng)報(bào)告
- 2025年保育員(三級(jí))考試試卷深度分析與備考指南
- 與離婚協(xié)議書(shū)補(bǔ)充協(xié)議
- 2025年P(guān)ETS二級(jí)英語(yǔ)聽(tīng)力理解能力提升試卷(含2025年真題解析)
- 和珅的做人之道
- 2025年保育員實(shí)操技能試卷:幼兒教育心理輔導(dǎo)實(shí)踐創(chuàng)新案例分析
- 2025年電子商務(wù)師(高級(jí))職業(yè)技能鑒定試卷:熱點(diǎn)問(wèn)題解答與案例分析
- 2025年服裝設(shè)計(jì)師(服裝設(shè)計(jì)實(shí)踐應(yīng)用)考試試題
- GB/T 14294-1993組合式空調(diào)機(jī)組
- GA 1517-2018金銀珠寶營(yíng)業(yè)場(chǎng)所安全防范要求
- 提高痰留取成功率PDCA課件
- 一級(jí)建造師繼續(xù)教育考試題(重點(diǎn))
- 組合導(dǎo)航與融合導(dǎo)航解析課件
- 伊金霍洛旗事業(yè)編招聘考試《行測(cè)》歷年真題匯總及答案解析精選V
- 深基坑支護(hù)工程驗(yàn)收表
- 工期的保證體系及保證措施
- 顱腦CT影像課件
- 同濟(jì)大學(xué)論文答辯通用PPT模板
- 課程設(shè)計(jì)-整體式肋梁樓蓋設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論