




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計報告 課程名稱: 高級語言程序設(shè)計課程設(shè)計 姓 名: 班級學號: 指導教師: 完成日期: 1 課程設(shè)計目的與要求高級語言程序設(shè)計是本科工科類各專業(yè)的重要基礎(chǔ)課,課程以影響深遠的、傳統(tǒng)的、面向過程的優(yōu)秀編程語言C語言為基礎(chǔ),學習程序設(shè)計的基本概念和方法,通過本門課程學習,應(yīng)使同學掌握高級語言的基本原理,熟練掌握程序設(shè)計的基礎(chǔ)知識、基本概念;掌握程序設(shè)計的思想和編程技巧。課程設(shè)計是在學生已經(jīng)具備了使用C語言編寫簡單的應(yīng)用程序的能力,為使學生對C語言有更全面的理解,進一步提高運用C語言編程解決實際問題的能力,通過提出算法、指定輸入輸出來設(shè)計一個解決方案。經(jīng)過該實踐環(huán)節(jié),培養(yǎng)學生的探索精神和創(chuàng)
2、新能力。通過答辯訓練學生的綜合表達能力。參加本課程設(shè)計的學生,應(yīng)當認真完成本課程設(shè)計的全部過程。并以最終課程設(shè)計成果來證明其獨立完成各種實際任務(wù)的能力。從而反映出理解和運用本課程知識的水平和能力。具體如下:(1)數(shù)據(jù)組織方面盡量使用到:數(shù)組、鏈表、結(jié)構(gòu)體、文件;(2)程序結(jié)構(gòu)方面做到函數(shù)調(diào)用,盡量采用指針運算;(3)代碼編寫規(guī)范,形成良好的編程習慣;(4)程序須有一定的健壯性和必要的提示信息,考慮問題的多種可能和邊界數(shù)據(jù)。(5)課設(shè)完成須進行答辯,提交課設(shè)報告電子稿、裝訂的打印稿。課設(shè)報告內(nèi)容包括以下幾個方面:l 程序的總體設(shè)計和算法分析。l 程序流程圖、函數(shù)說明l 源程序代碼清單l 測試數(shù)據(jù)
3、和測試過程記錄l 遇到的問題及解決方法分析l 課程設(shè)計小結(jié)2 問題描述設(shè)計一個職工信息管理系統(tǒng),其中:職工信息包括職工號、姓名、性別、年齡、學歷、工資、住址、電話等(職工號不重復)。功能包括:(1)錄入員工資料(2)瀏覽員工資料(3)員工信息查詢(4)修改員工資料(5)員工信息排序(6)員工信息刪除3總體設(shè)計3.1 功能分析系統(tǒng)提供主界面,各種功能操作以獨立的函數(shù)為基礎(chǔ),通過把職工信息存入到一個結(jié)構(gòu)體中來對職工信息進行管理,同時對操作結(jié)果在計算機中做永久保存。3.2 系統(tǒng)使用的主要函數(shù)menu(); /*主菜單*/void enter(); /*輸入*/browse(); /*瀏覽*/sear
4、ch(); /*查詢*/search1(); /*按職工工號查詢*/search2(); /*按職工姓名查詢*/modify(); /*修改職工信息*/modify_data(); /*修改職工信息*/void sort(); /*對職工信息進行排序*/void import(); /*對于追加的信息進行保存*/void save(); /*信息的保存*/int load(); /*加載函數(shù)*/ void del(); /*職工信息的刪除*/3.3 系統(tǒng)使用的主要數(shù)據(jù)結(jié)構(gòu)struct worker /*定義結(jié)構(gòu)體函數(shù)*/ char id50; /*定義工號*/ char name20; /*定
5、義名字*/ char sex10; /*定義性別*/ char age10; /*定義年齡*/ char edu20; /*定義學歷*/ char salary10; /*定義工資*/ char address20; /*定義地址*/ char tel20; /*定義電話號碼/workerN;4 詳細設(shè)計4.1 程序總體結(jié)構(gòu)圖圖4.1主控模塊4.2 程序流程圖圖4.2.1 主菜單系統(tǒng) 圖4.2.2員工信息錄入模塊 圖4.2.3員工信息查詢模塊 圖4.2.4員工信息修改模塊 圖刪除員工信息模塊 參考文獻1吉順如.C程序設(shè)計教程與實驗. 北京: 清華大學出版社 , 2011年6月2吉順如.c程序設(shè)
6、計習題集與課程設(shè)計指導.北京: 電子工業(yè)出版社,2012年9月3譚浩強. c程序設(shè)計.第四版.北京: 清華大學出版社, 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;/定義一個結(jié)構(gòu)體變量worker來存放職工信息menu();/主菜單函數(shù)void enter();/錄入職工信息函數(shù)browse();/瀏覽職工信息函數(shù)search();/查詢職工信息函數(shù)search1();/按工號查詢職工信息函數(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("請選擇對應(yī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("輸入多少個職工信息(0-%d):",N-1); scanf("%d",&n); printf("n 請輸入職工信息nn"); for(i=0;i<n;i+) printf("工號:");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("學歷:");scanf("%s",&); printf("住址:");scanf("%s",workeri.address); printf("電話:
12、");scanf("%s",workeri.tel); printf("n"); if(i!=0) import(n);/以追加方式保存信息 printf("nnt信息已保存!.nn"); printf("請選擇操作:nnt1).瀏覽全部t2).返回:n"); scanf("%d",&w); if(w=1)browse();/瀏覽信息 else menu();/返回主菜單browse() /瀏覽模塊 int i,n; n=load();/數(shù)據(jù)的個數(shù) printf("n
13、t工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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).工號 2).姓名 "); printf("請選擇:n"); scanf("%d",&c); if(c>2|c<1) printf("n沒有此選項,請重新輸入!n"); getchar(); while(c>2|c<1); switch(c) case 1:search1();break; /按工號查詢模塊 case 2:search2();break;/按姓名查詢模塊 search1()
15、/按工號查詢模塊 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn輸入要查詢的工號! id:"); scanf("%s",s.id); printf("nt工號 姓名 性別 年齡 工資 學歷 地址 電話號碼n"); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要查詢的職工編號 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).查找另一個 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請輸入你要查詢的姓名:n"); scanf("%s",); printf("nt工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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).查找另一個 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工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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輸入要修改的職工工號! 工號:"); 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備份,以便恢復 if(k=-1) printf("nn未找到請重新輸入:n");while(k=-1); w1=modify_data(k,n); /修改記錄并返回保存控制值w1,w1=1表示用戶已確認修改 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修改選項=&
22、gt;nn 1).工號 2).姓名 3).性別 4).年齡 5).工資 6).學歷 7).地址 8).電話 9).取消"); printf("n請選擇:n"); scanf("%d",&c); if(c>9|c<1) printf("n選擇錯誤!請重新輸入!"); getchar(); while(c>9|c<1); do switch(c) case 1:printf("工號");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、"學歷:");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工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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("工號排序:1 工資排序:2n"); scanf("%d",&k); switch(k) case 1: for(i=0;i<m-1;i+)/冒泡排序法排序職工工號 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工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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工號 姓名 性別 年齡 工資 學歷 地址 電話號碼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("按工號刪除: 1 n"); printf("按姓名刪除: 2 n"); scanf("%d",&c); switch(c) case 1:/按工號刪除 if(fp=fopen("worker.txt",&q
30、uot;wb")=NULL) printf("n文件打開錯誤!n"); exit(0); printf("請輸入要刪除的員工號:"); scanf("%s",id); for(i=0; i<n;i+) if(strcmp(id,workeri.id)=0) strcpy(workeri.id,"del");/把要刪除的工號標記為“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文件打開錯誤!n"); exit(0); printf("請輸入要刪除的姓名:"); scanf("%s",name); for(i=0; i<n;i+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福州市七上期末數(shù)學試卷
- 高招提前招生數(shù)學試卷
- 高中定積分數(shù)學試卷
- 高新區(qū)二診數(shù)學試卷
- 福田六年級數(shù)學試卷
- 設(shè)備安全培訓課件
- 2025至2030代駕行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030船用消防設(shè)備行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030廣告設(shè)計制作產(chǎn)業(yè)市場深度調(diào)研及發(fā)展趨勢與發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030不銹鋼欄桿行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 一級建造師繼續(xù)教育考試題(重點)
- 組合導航與融合導航解析課件
- 數(shù)與代數(shù)課件
- 工會審計實務(wù)課件
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播相關(guān)報表、上報流程和要求
- 工期的保證體系及保證措施
- 五山文學全集第一卷
- 中國鐵路總公司《鐵路技術(shù)管理規(guī)程》(高速鐵路部分)2014年7月
- TRD深基坑止水帷幕施工方案(22頁)
- 企業(yè)組織架構(gòu)圖模板
- 藏醫(yī)院制劑中心建設(shè)項目建議書寫作模板-定制
評論
0/150
提交評論