版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精品文檔實(shí)訓(xùn)目的能力目標(biāo)全面熟悉、掌握C語言基本知識,掌握C程序設(shè)計(jì)中數(shù)組、函數(shù)、指針的操作,把編程和實(shí)際結(jié)合起來,增強(qiáng)對不同的問題運(yùn)用和靈活選擇合適的數(shù)據(jù)結(jié)構(gòu)以及算法描述的本領(lǐng),熟悉編制和調(diào)試程序的技巧,掌握分析結(jié)果的若干有效方法,進(jìn)一步提高上機(jī)動手能力,培養(yǎng)使用計(jì)算機(jī)解決實(shí)際問題的能力,規(guī)范編程思想,為以后在專業(yè)課程中應(yīng)用計(jì)算機(jī)系統(tǒng)解決計(jì)算、分析、實(shí)驗(yàn)和設(shè)計(jì)等學(xué)習(xí)環(huán)節(jié)打下較扎實(shí)的基礎(chǔ)。實(shí)訓(xùn)要求:(1) 掌握 C語言中的基本數(shù)據(jù)輸入、輸出;(2) 熟練使用 C語言中的數(shù)組;(3) 熟練使用 C語言中的函數(shù);(4) 熟練使用 C語言中的指針;(5) 熟練使用 C語言中的結(jié)構(gòu)體。實(shí)訓(xùn)內(nèi)容(過程及
2、步驟)設(shè)計(jì)題目:學(xué)生成績查詢系統(tǒng)1、基本思路:以數(shù)組為基礎(chǔ),加以函數(shù)和結(jié)構(gòu)體。然后程序分由“輸入學(xué)生成績 ”,“ 輸出學(xué)生成績 ”,“查詢學(xué)生成績 ”,“ 修改學(xué)生成績 ”,“ 查看成績排序 ”,“ 查看成績統(tǒng)計(jì)保存數(shù)據(jù)”,“讀取數(shù)據(jù) ”等等 這幾大部分組成。這五部分各自用一個程序列出,然后在用其他函數(shù)將他們連接起來。2、程序:#include <stdafx.h>.精品文檔#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#define N 1
3、0/*定義結(jié)構(gòu)體 */typedefstructstudents/* 標(biāo)記為 students*/charnum10;/*學(xué)生學(xué)號 */charname10;/*學(xué)生姓名 */intage;/* 年齡 */charsex10;/*性別 */floatcyy;/*C 語言成績 */floatcomputer;/*計(jì)算機(jī)成績 */floatenglish;/*英語成績 */floatpj;/*平均成績 */STU;STU temp;void sort(STU students,intn);/ 排序void save(STU students,intn);/ 導(dǎo)出intLocate(STU stud
4、ents,intn);/ 查詢/*-顯示菜單 -*/char displaymenu()chark;system("cls");printf("學(xué)生成績管理n" );printf("-應(yīng)用菜單-n");printf("1輸入學(xué)生成績 nn" );printf("2輸出學(xué)生成績 nn" );printf("3查詢學(xué)生成績 nn" );printf("4修改學(xué)生成績 nn" );printf("5查看成績排序 nn" );printf(&q
5、uot;6查看成績統(tǒng)計(jì) nn" );printf("7保存數(shù)據(jù) nn" );printf("8讀取數(shù)據(jù) nn" );printf("9退出系統(tǒng) nn" );printf("請選擇你想進(jìn)行的操作:" );k=getchar();.精品文檔returnk;/*定義輸出函數(shù) */void printheader()/* 格式化輸出表頭*/printf("nn*學(xué)生成績管理系統(tǒng)*nnn");printf("|學(xué)號 |姓名 |年齡 |性別 | C 語言成績 | 計(jì)算機(jī)成績 |英語成績
6、|平均成績 | n");void printdata(STU pp)/* 格式化輸出表中數(shù)據(jù)*/STU* p;p=&pp;printf("| %-5s| %-5s| %-4d| %-4s|%-6.0f|%-6.0f|%-5.0f|%-6.0f|n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);/*添加學(xué)生信息 */intadd(STU students ,int*n)inti=0;system("cls"
7、;);printf(" n");printf("請輸入學(xué)生信息n");printf(" 退出請?jiān)趯W(xué)生號處輸入:0 n");printf(" 請輸入學(xué)生學(xué)號:n ");scanf("%s" ,studentsi.num);while (strcmp(studentsi.num,"0" ) ) / 當(dāng)輸入的學(xué)號為時結(jié)束輸入printf(" 請輸入學(xué)生姓名:n ");scanf("%s" ,);printf(&qu
8、ot;*nnn");printf(" 請輸入學(xué)生年齡:n ");scanf("%d",&studentsi.age);printf("*nnn");printf(" 請輸入學(xué)生性別:n");scanf("%s" ,studentsi.sex);printf("*nnn");printf(" 請輸入 C語言成績 :n ");scanf("%f" ,&studentsi.cyy);printf("*nnn
9、");printf(" 請輸入計(jì)算機(jī)成績:n ");scanf("%f" ,&puter);.精品文檔printf("*nnn");printf(" 請輸入英語成績 :n " );scanf("%f" ,&studentsi.english);printf("*nnn");studentsi.pj=(studentsi.cyy+puter+studentsi.english)/3;printf(&q
10、uot; 學(xué)生平均成績 : %-8.0fn",studentsi.pj);i+;printf("*nnn");printf(" 請輸入學(xué)生學(xué)號:n ");scanf("%s" ,studentsi.num);*n=i;save(students ,i);returni;/*查詢學(xué)生信息函數(shù)*/intLocate(STU students,intn)intk,m=-1;char num10,name20;inti=0;system( "cls");printf(" 退出請輸入 :0 n"
11、);printf(" 請選擇以什么方式查詢:1). 按學(xué)生學(xué)號查詢2).按學(xué)生姓名查詢n");scanf("%d",&k);if (k=1)printf(" 請輸入你要查詢的學(xué)生學(xué)號:n");scanf("%s" ,num);while (i<n)if (strcmp(studentsi.num,num)=0)/* 若找到學(xué)號 */printf(">>學(xué)生學(xué)號 :%sn* 學(xué)生姓名 :%sn* 學(xué)生年齡 :%dn* 學(xué)生性別 :%sn>C語言成績 :%-8.0fn>計(jì)
12、算機(jī)成績 :%-8.0fn>>英語成績 :%-8.0fn>>平均成績:%-8.0fn" ,studentsi.num,,studentsi.age,studentsi.sex,studentsi.cy y,puter,studentsi.english,studentsi.pj);m=i;getchar(); break ;i+;if (i>=n).精品文檔printf(" 沒有所找學(xué)生信息n" );getchar();elseif (k=2)printf(" 請輸入你要
13、查詢的學(xué)生姓名:n");scanf("%s" ,name);while (i<n)if (strcmp(,name)=0)/* 若找到姓名 */ printf(" 學(xué)生學(xué)號 :%sn 學(xué)生姓名 :%sn 學(xué)生年齡 :%dn 學(xué)生性別 :%sn 學(xué)生 C語言成績 :%-8.0fn計(jì)算機(jī)成績 :%-8.0fn英語成績 :%-8.0fn平均成績:%-8.0fn" ,studentsi.num,,studentsi.age,studentsi.sex,studentsi.cy y,stude
14、puter,studentsi.english,studentsi.pj);m=i;getchar(); break ;i+;if (i>=n)printf(" 沒有所找學(xué)生信息n" );returnm; /* 返回一個根 m便于修改學(xué)生信息*/getchar();/*顯示函數(shù) */void input(STU students,intn)inti;system( "cls");/ 清屏if (n=0)/* 表示沒有學(xué)生信息記錄*/printf("n 沒有學(xué)生記錄 !n");printf("nn&quo
15、t;);printheader();/* 輸出表格頭部 */i=0;while (i<n)/* 逐條輸出數(shù)組中存儲的學(xué)生信息*/printdata(studentsi);i+;getchar();.精品文檔/*修改子程序 */voidModify(STU students,int n)inti;if (n<=0)system("cls");printf(" n 退出請輸入 :0 n");printf("n-not found!-n");getchar();return ;system("cls");pr
16、intf(" 修改學(xué)生信息 " );input(students,n);i=Locate(students,n);/* 查詢到該數(shù)組元素 , 并返回下標(biāo)值 */if (i!=-1)/*若 i!= , 表明已經(jīng)找到該數(shù)組元素*/printf(" 請輸入新的學(xué)生信息 : n");printf("學(xué)號:");scanf("%s" ,studentsi.num);printf("姓名:");scanf("%s" ,);printf("年齡:&qu
17、ot;);scanf("%d",&studentsi.age);printf("性別:");scanf("%s" ,studentsi.sex);printf(" C 語言:");scanf("%f" ,&studentsi.cyy);printf("英語:");scanf("%f" ,&studentsi.english);printf("計(jì)算機(jī):");scanf( "%f" ,&s
18、puter); studentsi.pj=(studentsi.cyy+studentsi.english+puter)/3;printf(" 平均成績 : %-9.0fn",studentsi.pj);save(students ,n);printf("n-修改成功 !-n");elseprintf("not found!n");.精品文檔getchar();/*學(xué)生成績排序子程序*/void sort(STU students,intn)inti,j,a,b,c,d,e,f,k;f
19、loatp;printf(" n退出請輸入 :0 n");printf(" 成績排序方式選擇: 1.按 C語言2.按英語3.按平均n ");scanf("%d",&k);if (k=1)/* 用選擇法對 C語言排序 */for (i=0; i<n; i+)for (j=0;j<n-1;j+)if (studentsi.english<studentsj+1.english)temp=studentsi;studentsi=studentsj+1;studentsj+1=temp;elseif (k=2) /*
20、 英語用冒泡法 */for (a=0; a<n-1; a+)c=a;for (b=a+1; b<n; b+)if (studentsb.cyy>studentsc.cyy)c=b;if(c!=a)temp=studentsa;studentsa=studentsc;studentsc=temp;.精品文檔if (k=3)/* 平均成績用插入法*/for (d=1;d<n;d+)p=studentsd.pj;for (e=0;e<d;e+)if (studentse.pj<p)break ;if (e=d)continue ;for (f=d;f>e;f
21、-)studentsf=studentsf-1;studentse=temp;input(students,n);/* 顯示排序后的所有記錄*/save(students ,n);printf("n排序完成 !n");/*統(tǒng)計(jì)學(xué)生分?jǐn)?shù)在各等級的人數(shù)子程序*/voidTongji(STU students,int n)intcount6085=0,count85=0,count60=0;inti=0;system( "cls");printf(" n退出請輸入 :0 n" );input(students,n);i=0;while (i
22、<n)if(studentsi.pj>85)count85+;i=i+1;continue ;/* 平均成績 =>85*/if(studentsi.pj>=60&&studentsi.pj<=85) count6085+;i=i+1;continue ;/*60< 平均成績<85*/if(studentsi.pj<60)count60+;i=i+1;continue ;/* 平均成績<60*/printf("n*統(tǒng)計(jì)結(jié)果 *nn");printf(" 平均成績高于分的人數(shù):%d n",
23、count85);printf("n");printf(" 平均成績在分和分之間的人數(shù) :%d n" ,count6085);printf("n");printf(" 平均成績低于分的人數(shù):%d n",count60);printf("n");.精品文檔printf("nn*統(tǒng)計(jì)結(jié)束 *");getchar();/*導(dǎo)出或保存數(shù)據(jù)*/void save(STU students,intn)FILE* fp;inti=0;fp=fopen("students"
24、;, "wb+" ); /* 以讀寫方式打開創(chuàng)建一個二進(jìn)制文件*/if (fp=NULL)/* 打開文件失敗 */printf("n*打開文件錯誤 !*n");return;for (i=0;i<n;i+)if (fwrite(&studentsi,sizeof(STU),1,fp)=1)/* 每次寫一條記錄或一個結(jié)構(gòu)數(shù)組元素至文件*/continue ;elsebreak ;if (i>0)getchar();printf("nn*共導(dǎo)出 %d個學(xué)生信息 *n" ,i);getchar();elsesystem(
25、"cls");printf("* 沒有信息導(dǎo)出 *n" );getchar();fclose(fp);/* 關(guān)閉此文件 */*導(dǎo)入數(shù)據(jù) */void Read(STU students,int* n)FILE* fp;inti=0;.精品文檔fp=fopen("students", "rb" ); /* 以只讀方式打開一個已有的二進(jìn)制文件*/if (fp=NULL)/* 打開文件失敗 */printf("n*打開文件錯誤 !*n");exit(0);for (i=0;i<N;i+)if (
26、fread(&studentsi, sizeof (STU),1,fp)=1) /* 每次讀一條記錄或一個結(jié)構(gòu)數(shù)組元素至文件 */ continue ;elsebreak ;*n=i;if (i>0)printf( "nn* 共導(dǎo)入 :%d 個學(xué)生信息 *n" ,i); getchar();else system("cls");printf("*沒有信息導(dǎo)入!*n");getchar();getchar();fclose(fp);/* 關(guān)閉此文件 */*主函數(shù) */voidmain()STUstudentsN;intn;
27、chars13,s23="1" ;inti,k;printf("nn" );printf("*n");printf("<歡迎使用本軟件 >nn");printf("<版本 :修改版 >nnn");printf(" < 姓名 >: 邢曾智<班級 >: 09511002 <學(xué)號 >:0951100201n");.精品文檔printf("n");printf("*n");printf
28、("nn");for (i=0;i<3;i+)printf("n 請輸入密碼 :" );gets(s1);if (strcmp(s1,s2)=0)break ;elseprintf("n> 密碼錯誤 , 請重新輸入 ");if (i>2)printf("n 您已連續(xù)次輸錯,系統(tǒng)將退出!n");exit(0);elsewhile (1)k=displaymenu();switch (k)case'1': add(students,&n);break ;case'2
29、39;: Read(students,&n);input(students,n) ;break ;case'3': Read(students,&n);Locate(students,n);break ;case'4': Read(students,&n);Modify(students,n);break ;case'5': Read(students,&n);sort(students,n);break ;case'6': Read(students,&n);Tongji(students,n);break ;case'7': save(students,n) ;break ;case'8': Read(students,&n);break ;case'9': system("
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年外教服務(wù)合同
- 柜臺租賃合同的稅務(wù)處理
- 工程拆遷房屋合同模板
- 公司股權(quán)承包合同-合同范本
- 項(xiàng)目合作協(xié)議書格式模板
- 專業(yè)內(nèi)部施工承包合同模板
- 2024年二人股權(quán)購買協(xié)議
- 2024合伙開公司合同范本
- 廣告公司經(jīng)營權(quán)買賣合同
- 2024年超市用工協(xié)議樣本
- 林木種質(zhì)資源調(diào)查表(新表)
- 蔬菜出口基地備案管理課件
- 子宮異常出血的護(hù)理
- 高考英語單詞3500記憶短文40篇
- 《耳穴療法治療失眠》課件
- 詢盤分析及回復(fù)
- 氯化工藝安全培訓(xùn)課件
- 指導(dǎo)巡察工作精細(xì)科學(xué)
- 企業(yè)法律知識培訓(xùn)消費(fèi)者權(quán)益保護(hù)實(shí)務(wù)
- 快樂讀書吧-讀后分享課:《十萬個為什么》教學(xué)案列
- 2024年 貴州茅臺酒股份有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論