c程序设计案例汇编课件10.ppt

上传人:b****2 文档编号:2676647 上传时间:2022-11-06 格式:PPT 页数:40 大小:182KB
下载 相关 举报
c程序设计案例汇编课件10.ppt_第1页
第1页 / 共40页
c程序设计案例汇编课件10.ppt_第2页
第2页 / 共40页
c程序设计案例汇编课件10.ppt_第3页
第3页 / 共40页
c程序设计案例汇编课件10.ppt_第4页
第4页 / 共40页
c程序设计案例汇编课件10.ppt_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

c程序设计案例汇编课件10.ppt

《c程序设计案例汇编课件10.ppt》由会员分享,可在线阅读,更多相关《c程序设计案例汇编课件10.ppt(40页珍藏版)》请在冰豆网上搜索。

c程序设计案例汇编课件10.ppt

C程序设计案例汇编程序设计案例汇编2011.4第十章第十章综合程序设计综合程序设计n内容内容学生成绩管理学生成绩管理通讯录建立通讯录建立案例案例10-1学生成绩管理学生成绩管理编写一个菜单驱动的学生成绩管理程序。

要求如下:

编写一个菜单驱动的学生成绩管理程序。

要求如下:

(1)能输入并显示能输入并显示n个学生的个学生的m门考试科目的成绩、总分和平均分。

门考试科目的成绩、总分和平均分。

(2)按总分由高到低进行排序。

按总分由高到低进行排序。

(3)任意输入一个学号,能显示该学生的姓名、各门功课的成绩。

任意输入一个学号,能显示该学生的姓名、各门功课的成绩。

运行结果运行结果:

案例案例10-1运行主菜单运行主菜单案例10-1运行学生成绩录入示例案例10-1运行显示成绩运行示例案例10-1运行查找运行示例案例10-1运行排序运行示例1案例案例10-1的源程序的源程序#include#include#include#include#include#defineSTU_NUM40/*学生人数学生人数*/#defineCOURSE_NUM10/*考试科目考试科目*/typedefstructintnum;/*学号学号*/charname20;/*姓名姓名*/intscoreCOURSE_NUM;/*M门课成绩门课成绩*/longsum;/*总分总分*/floataverage;/*平均成绩平均成绩*/STU;/*函数声明函数声明*/voidAppendScore(STU*head,intn,intm);voidPrintScore(STU*head,intn,intm);voidTotalScore(STU*head,intn,intm);voidSortScore(STU*head,intn);intSearchNum(STU*head,intnum,intn);voidSearchScore(STU*head,intn,intm);charMenu_Select(void);voidmain()charch;intm,n;STUstuSTU_NUM;printf(请输入学生总数和课程门数请输入学生总数和课程门数(n40,m10):

);scanf(%d,%d,&n,&m);while

(1)ch=Menu_Select();/*显示菜单,并读取用户输入显示菜单,并读取用户输入*/switch(ch)case1:

AppendScore(stu,n,m);/*调用添加模块调用添加模块*/TotalScore(stu,n,m);break;case2:

PrintScore(stu,n,m);/*调用显示模块调用显示模块*/break;case3:

SearchScore(stu,n,m);/*调用查找模块调用查找模块*/break;case4:

SortScore(stu,n);/*调用排序模块调用排序模块*/printf(nSortedresultn);PrintScore(stu,n,m);/*显示排序结果显示排序结果*/break;case5:

exit(0);/*退出程序退出程序*/printf(Endofprogram!

);break;default:

printf(Inputerror!

);break;getchar();/*函数功能:

函数功能:

显示菜单并获得用户键盘输入的选项显示菜单并获得用户键盘输入的选项*/charMenu_Select(void)charch;time_td;time(&d);printf(*n);printf(tt学生成绩管理系统学生成绩管理系统n);printf(ttt1.添加成绩添加成绩n);printf(ttt2.显示成绩显示成绩n);printf(ttt3.查找查找n);printf(ttt4.排序排序n);printf(ttt5.退出退出n);printf(*n);printf(%s,ctime(&d);/*显示系统时间显示系统时间*/printf(请输入你的选择请输入你的选择(15):

);scanf(%c,&ch);returnch;/*函数功能:

向结构体数组添加从键盘输入学生的学号、姓名和成绩等函数功能:

向结构体数组添加从键盘输入学生的学号、姓名和成绩等信息信息*/voidAppendScore(STU*head,intn,intm)intj;STU*p;for(p=head;pnum);printf(请输入姓名请输入姓名:

);scanf(%s,p-name);for(j=0;jscore+j);/*函数功能:

函数功能:

打印打印n个学生的学号、姓名和成绩等信息个学生的学号、姓名和成绩等信息*/voidPrintScore(STU*head,intn,intm)STU*p;inti;charstr100=0,temp3;strcat(str,学号学号姓名姓名);for(i=1;i=m;i+)strcat(str,成绩成绩);itoa(i,temp,10);strcat(str,temp);strcat(str,);strcat(str,总分总分平均成绩平均成绩);printf(%s,str);/*打印表头打印表头*/for(p=head;pnum,p-name);for(i=0;iscorei);printf(%11d%9.2fn,p-sum,p-average);/*函数功能:

计算每个学生的函数功能:

计算每个学生的m门功课的总成绩和平均成绩门功课的总成绩和平均成绩*/voidTotalScore(STU*head,intn,intm)STU*p;inti;for(p=head;psum=0;for(i=0;isum=p-sum+p-scorei;p-average=p-sum/m;/*函数功能:

用选择法按总成绩由高到低排序函数功能:

用选择法按总成绩由高到低排序*/voidSortScore(STU*head,intn)inti,j,k;STUtemp;for(i=0;in-1;i+)k=i;for(j=i;jsum(head+k)-sum)k=j;if(k!

=i)temp=*(head+k);*(head+k)=*(head+i);*(head+i)=temp;/*函数功能:

函数功能:

查找学生的学号查找学生的学号*/intSearchNum(STU*head,intnumber,intn)inti;for(i=0;inum=number)returni;return-1;/*函数功能:

函数功能:

按学号查找学生成绩并显示查找结果按学号查找学生成绩并显示查找结果*/voidSearchScore(STU*head,intn,intm)intnumber,findNo;printf(PleaseInputthenumberyouwanttosearch:

);scanf(%d,&number);findNo=SearchNum(head,number,n);if(findNo=-1)printf(nNotfound!

n);elsePrintScore(head+findNo,1,m);归纳分析归纳分析n内容内容学生成绩管理学生成绩管理n归纳分析归纳分析本例要求编写一个菜单驱动的学生成绩管理程本例要求编写一个菜单驱动的学生成绩管理程序序,我们采用了我们采用了switch-case语句来实现该功能,语句来实现该功能,学生资料包括学号、姓名、功课成绩、总分、学生资料包括学号、姓名、功课成绩、总分、平均成绩用一个结构体定义:

平均成绩用一个结构体定义:

typedefstructintnum;/*学号学号*/charname20;/*姓名姓名*/intscoreCOURSE_NUM;/*M门课成绩门课成绩*/longsum;/*总分总分*/floataverage;/*平均成绩平均成绩*/STU;另外,添加成绩、显示成绩、查找、排序另外,添加成绩、显示成绩、查找、排序分别用函数分别用函数AppendScore()、()、PrintScore()()、SearchScore()和()和SortScore()实现。

其()实现。

其中函数中函数voidAppendScore(STU*head,intn,intm)定义了定义了head指针,指向存储学生信息的结指针,指向存储学生信息的结构体数组的首地址,整数构体数组的首地址,整数n,m分别表示学生人数分别表示学生人数和考试科目,函数采用一个和考试科目,函数采用一个for循环嵌套实现向循环嵌套实现向结构体数组添加从键盘输入学生的学号、姓名和结构体数组添加从键盘输入学生的学号、姓名和成绩等信息。

成绩等信息。

案例案例10-2通讯录建立通讯录建立n内容内容编程建立一通讯簿,存放有姓名、住址,网址,编程建立一通讯簿,存放有姓名、住址,网址,E-mail,电话等,然后对通信簿进行查找、添加、电话等,然后对通信簿进行查找、添加、显示及删除操作。

运行结果:

运行主菜单如下显示及删除操作。

运行结果:

运行主菜单如下案例10-2运行添加通讯记录运行示例案例10-2运行显示通讯记录运行示例案例10-2运行删除通讯记录运行示例1案例案例10-2的源程序的源程序#include#include#include#includestaticstructadressbookcharname10;charadress50;charwebpage50;charemail50;charphone20;charmphone20;/*函数原型函数原型*/voidAppend(void);voidDisplay(void);voidRemove(void);intLength(void);voidStatistics(void);voidPerson(void);intmenu_select();#defineStructLengthsizeof(structadressbook);/*全局变量全局变量*/staticstructadressbooks270;/*主函数主函数*/voidmain()FILE*fin;if(fin=fopen(Adress.dat,rb)!

=NULL)fclose(fin);for(;)switch(menu_select()/*调用主菜单函数,返回值整数作开关语句的条件调用主菜单函数,返回值整数作开关语句的条件*/case1:

Append();break;/*添加记录添加记录*/case2:

Display();break;/*显示记录显示记录*/case3:

Remove();break;/*删除记录删除记录*/case4:

Statistics();break;/*统计文件大小统计文件大小*/case5:

exit(0);/*退出程序退出程序*/elseclrscr();printf(CannotopenfileAdress.dat!

n);printf(n1.IfthefileAdress.datismissingthenyoushouldcreateitanditssizemustbeequalto0.);printf(n2.IfthefileAdress.datexistandprogramcannotopenitthenyoushoulddeleteitandcreateitagainanditssizemustbeequalto0.);printf(nnPresskeyRETURNtoexittosystem.);getch();fclose(fin);voidAppend()intNPerson,i,j,numb

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1