《C语言程序设计实验10教案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验10教案.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10次课题:实验十、综合应用一一4学时课程名称程序设计基础课程性质综合型实验课授课班级计09-1班计09-2班实验地点3130331302实验室 实验室授课时间2009年12月12 H 星期六 第3小节第6 42009年12月13日星期日第5小节第8 4、节一1班卜节一2班主要教学内容:编写一个小型处理若干个班学生成绩的应用程序。教学目标:1.掌握综合运用顺序、选择、循环、数组、函数、预处理命令、指 针、结构体、文件等知识进行结构化、模块化程序设计的方法。 学习有关库函数的调用方法;.掌握使用C语言的集成开发环境开发一个微型项目的方法;2 .熟悉编辑、编译、连接、调试运行项目的方法。重 点:
2、使用C语言的集成开发环境开发一个微型项目的方法。难 点:开发一个微型项目的方法。教学过程(组织与方法):首先,进行考勤并检查学生对实验的准备情况,做好 记录,之后指导学生完成实验指导书中规定的实验内容,最后,逐 个验收,并记录验收结果。作 业:实验报告一一3张报告纸。 if( i%20 = 1 & i != 1 );n);n) printf (/zprintf (printf (Press any key to continue. . . /z ) getch();if ( i % 20 = 1 ) clrscr ();printf(%sn,q);printf (,z%-6s%-20s%-8s
3、%-8s%-8s%-8s%-8s%-8sn/z, No. , Name,sex , score! , score/ , scored , total , average );printf ();printf (n);.num, pi. name,printf (,z%-6d%-20s%-8c%-8dz,, pipipi sex, pi. score0);printf (,%-8d%-8d%-8. 2f%8. 2fn,pi. score1,pi. scorepi. score_2, pi. total, pi. aver););n); );n); printf( printf(假设运行本题程序输
4、入了北华大学计09-1班43名学生的数据,并分别存储在a 数组和名为ji09-l的文件中。之后调用print函数分屏显示43名学生数据,如图9、 图10和图11所示。ji09-lNo.Namesex scorel score2 score3 total average01234567890 1 2 3 4 5 6 7 00 9 1 i 111111112VuHuan VuJinBao VuKai MaYanchao UangZijian WangVetai UangShu WangX iaoxing WangXiaoqing DengTingting QiaoVifeng RemVe LiuM
5、ing LiuXibao SunQingnan Sun Wei ZhuXiaotianX ingVuant ing VanTieyan WuBof n n m n m F f F F n n n n m F m F n ii539809635465183565598787668787768768878772780953997927357673787878787776777788887552173012825834871286998789987768888899249.00220.00261.00258.00211.00235.00244.00246.00255.00235.00231.0020
6、6.00218.00243.00219.00244.00261.00248.00263.00254.0003003330030770030777030033300306600306663376081258782131727487887788877678788888(Press any key to continue.图9第一屏显示1号到20号学生数据ji09TNo. Namesex scorel score2 score3 total average1234567890123456789022222222233333333334ZhangChuang Zhangyang ZhangZhiong
7、 ZhangBo ZhangFurun VangVuying VangShousong VangHuan ZouTianya ZhouHuan GuoWentao Guo An ZhengRui ZhongXiaoliang XiaBin XuChenfeng TongXiaobo PanZhe VuJinglong VuChengbof m n n n f m F n F f F n n n m n83318675152853553503878777687688786776688474867988837372787583767371757676606571837893847593718881
8、8181797177637792717582255.00225.00262.00234.00241.00252.00211.00245.00230.00221.00246.00243.00219.00231.00203.00228.00241.00196.00200.00236.0000303037770000703377003030366600006033665578040163213776056887878878778877678667Press any key to continue.图10第二屏显示21号到40号学生数据c: Turbo C+ IDEJi09T No. Namesexs
9、corel score2 score3 total averagewangDan WangJidong ZhangJinping778187717178245.00 81.67220.00 73.33264.00 88.00DPress Enter key continue .图11第三屏显示41号到43号学生数据实验十、综合应用一一综合设计型题目:编写一个小型处理若干个班学生成绩的应用程序。要求建立一个项目文件 student, prj,内含 3 个源程序文件 filel. c、file2. c file3. co filel. c 中包括应所调 用的外部函数的声明、学生记录结构体类型的定义
10、和主函数main ()等。file2. c中包括 录入学生记录函数void input ( struct stu *p , char *q , int n)和读取学生记录函数 void read (struct stu p, char *q, int *n), f ile3. c 中包含一个输出学生纪录的函数 void print ( struct stu *p, char *q , int n)和按总成绩排序的函数 void sort ( struct stu *p, int n)。要求:1. filel. c中的主函数起主控模块的作用,要设计一个简单的选择菜单,以便有选择 地调用其他文件中
11、的功能模块。2. input函数的功能是将从键盘输入的学生数据存放在结构体数组a50中,同时也 存放在以班级为文件名的数据文件中。比如“rjO8T”,“门08-2”等。每个数组元素包括 学号num、姓名name、性别sex 3门成绩int b3;、总成绩total 平均成绩aver。3. printf函数的功能是在屏幕上输出存放在a数组中的学生数据,要求一行显示一 个学生的数据,要有表头,要求美观。4. read函数的功能是根据输入的文件名将该班的学生人数读入到变量n,接着将该 班的n个学生数据读入到a数组中。5. sort函数的功能是用选择法将a数组中存放的n个学生的数据按照总分由大到小 的
12、顺序排序。参考程序:参考主函数源程序:FILE1.C#include #include ttinclude ttdefine M 50struct stu int num;char name20;char sex;int score3;float total, aver;void main() void input ( struct stu *p , char *q , int n);void print ( struct stu *p,char *q , int n);void read (struct stu p ,char *q, int *n);void sort ( struct s
13、tu *p, int n);struct stu a50;int t, n, flag=0;char clsname20;clrscr ();while (1) clrscr ();printf (/zl. Input. n2. read. n3. Print. n4. Sort. n5. Qurt. n/z);printf (/zPlease select (1-5):);scanf (级d, &t) ; getchar ();switch (t) case 1: printf (Please input class name:/z);gets (clsname);printf (Z/Ple
14、ase input student numbers:z/);scanf (%d, &n); getchar();input (a, clsname, n);flag=l;break;case 2: printf(z,please input class name:);gets (clsname);read (a, clsname, &n);flag=l;break;if (f lag=0) printf (/zNo message to print! n); else print(a, clsname, n);break;if (flag=0) printf (please first inp
15、ut message! ! !n,z); else sort ( a , n ) ; print (a, clsname, n) ; ) break;case 3: exit (0);printf (/zPress Enter key continue. . /z); while(getchar( )!=,n,); )参考源程序:FILE2. Cttinclude ttinclude extern struct stu int num;char name20;char sex;int score3;float total, aver;);void input (struct stu *p, c
16、har *q, int n) int i;FILE *fp;if(fp=fopen(q, wb)=NULL)printf(Not create this file!n); else fwrite (&n, 2, 1, fp); for (i=l;i=n;i+) clrscr ();printf (please input No. %d student message: n/z, i);pi. num=i;printf (/zp%d. name=,i) ; gets (pi. name);printf (/zp%d. sex=,i) ; pi. sex=getchar();printf (p%d
17、 scorel=/, i) ; scanf (%d, &pi. score0);printf (p%d score2=,i) ; scanf (%d, &pi. scorel);printf (p %d. score3=zz, i) ; scanf (%d, &p i. score 2); getchar ();pi. total=pi. score0+pi. scorel+pi. score2; pi. aver=pi. total/3. 0;fwrite(&pi, sizeof (struct stu), 1, fp);fflush ( fp )fclose (fp);)void read
18、 (struct stu p, char *q,int *n) FILE *fp;int i;if(fp=fopen(q, rb)二二NULL)printf (/zNot open this file!nz/);else fread (n, 2, 1, fp);for(i=l;i=*n;i+)fread(&pi, sizeof (struct stu), 1, fp); fclose (fp); 参考源程序:FILE3. C#include ttinclude struct stu int num;char name20;char sex;int score3;float total, ave
19、r;):void print (struct stu *p , char *q , int n) int i;clrscr ();printf(sn,q);printf (/%-6s%-20s%-8s%-8s%-8s%-8s%-8s%-8sn/, No.,z, Name,i r)r)i sex , score! , score/ , scored , total , average ););printf (printf (n);for (i=l; i=n; i+) printf (/z%-6d%-20s%-8c%-8dz/, pi. num, pi. name,pi. sex, pi. sco
20、re0);printf C%-8d%-8d%-8. 2f%-8. 2fnz,, pi. score El,pi. score2, pi. total, pi. aver) ;printf ();printf (n); void sort ( struct stu *p , int n ) int i, j, k;struct stu t;for (i=l;in;i+) k=i;for(j=i+l;j file3.c共 3个源程序文件。二、建立项目文件建立一个名为student. p门的项目文件,并将filel.c、file2. c file3.c3个源程序 文件依次添加到项目文件中。三、运行项
21、目文件选择集成开发环境菜单的“Run” 一 “Run”,连接并运行student. prj,该程序的运行 结果如下:1.执行后显示如图1所示的简单菜单,输入1后按“Enter”键后提示输入班级名称。 输入“rjO8T”即软件08-1班后提示输入学生人数,输入34并按“Enter”键即调 input函数以便输入一个班学生的数据。(学生数应为实际人数34人)。1. Input.2. read.3. Print.4. Sort.5. Qurt.Please select:1Please input class name:ji05-2Please input student numbers:10图1在
22、主菜单中选择“Input”录入功能2 .录入学生数据input函数负责录入一个班n个学生的学号、姓名、性别、3门课的成绩。其中学号 是自动产生的。图2所示是录入最后一个学生的数据后的画面。录入的数据存入a数组, 并以“rjO8T”为文件名存入磁盘中。要求至少录入2个班的数据,每个班的学生人数均 为实际人数34人。分别存放在“rjO8T”和“门08-2”文件中。please input No.10 student message:p10.name=LiuLiguop10.sex=Mp10.scorel=97p10.score2=72p10.score3=87Press Enter key con
23、tinue.le 12345P图2 input”录入最后一个学生数据t r3 .输出学生数据图 2 中的“ Press Enter keycontinue.是返回到主函数后的提示,图3调用“print”函数按“Enter”键将调出如图3所示的主菜单。键入数字键3并按“Enter”键,将调用“Print” 函数,在屏幕上将存放在a数组中的计05-2班的10个学生的数据按照学号的顺序输出, 如图4所示。输出后返回到主函数,并提示“Press Enter key comtiniu. 等待按“Enter” 键,以便观察在屏幕上输出的数据。看完后按“Enter”键将调出主菜单。Ji05-2No. Nam
24、esex scorel score2 score3 total auerage0 12345678910 1234567891ShanShan KongFanrong UangGang WangGuowei WangHongyang FuLiting LanTingting BuQiv/ei BaiMingyue LiuLiguoFFMFFFFMFM782877367786977685699475909088788081657265837165938279888487246.00226.00253.00233.00258.00227.00242.00225.00216.00256.000337
25、077003033606600325476505258787878778Press Enter key continue.图4 print”函数输出的学生数据4 .对a数组中数据排序如图5所示,在主菜单中输入数字4并按“Enter”键,将调用sort函数对存放在a 数组中的数据按照总分进行排序。1. Input.2. read.3. Print.4. Sort.5. Quvt.Please select:4图5调用“sort”函数sort函数对a数组中的数据排好序后返回到主函数后直接调用print函数将排好序的 数据在屏幕上输出,如图6所示。Ji05-2No. Nanesex scorel s
26、core2 score3 total auerage0513174628905131746289WangHongi/ang LiuLiguo UangGang ShanShan LanTingting WangGuowei FuLiting KongFanrong BuQiwei BaiMingyueFMMFFFFFMF772738786779988766568204008515879989778693877165796582838884258.00256.00253.00246.00242.00233.00227.00226.00225.00216.000330777300033066630
27、065420755528888877777Press Enter key continue.图6直接输出排好序的学生数据5 .读取计05T班数据如图7所示,在主菜单中输入2并按“Enter”键,将提示输入要读取的文件名,输入“e:tc3binjiO5T”并按“Enter”键,将调用read函数将原来录入的计05T班的 学生数据读入到a数组中。1. Input.2. read.3. Print.4. Sort.5. Qurt. Please select:2 please input class name:e:tc3binji05-l图7调用read函数读取ji05-l文件6. 输出读来的数据在
28、主菜单中键入数字3并按“Enter”键,即可输出从文件读来的计05-1班的数据, 如图8所示。e:tc3binj i05-lNo. Namesex scorel score2 scoi*e3 total auerage0 12345678910 1234567891VuCnunne VuMiao VouXiaofeng NiuChunsheng UangLiugang WangCou WangHuinin WangPai WangQinyong WangJiav/ei877656697267767893619373888165698977776775899380837196718699255.
29、00238.00237.00230.00220.00207.00261.00226.00256.00227.000307300337030630033659963975558777768787Press Enter key continue.图8输出计05-1班数据分屏显示问题程序中的print函数未考虑分屏显示问题,一般一屏只能显示25行,当一个班的人 数超过25行时,一屏就显示不下,致使前面若干学生数据看不见。为此,要求学生 修改print函数,使其显示前20个学生数据后暂停,并提示“press any key to continue.,当看完屏幕上的20个学生数据后,按任意键将显示表头和剩余学生 的数据。带分屏的print函数的参考程序如下:void print(struct stu *p, char *q,int n) int i;for(i=l;i=n:i+)