[其它]c程序设计案例汇编课件10.ppt

上传人:sccc 文档编号:5616058 上传时间:2023-08-02 格式: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(40页珍藏版)》请在三一办公上搜索。

1、C程序设计案例汇编,2011.4,第十章 综合程序设计,内容学生成绩管理 通讯录建立,案例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#define STU

2、_NUM40/*学生人数*/#define COURSE_NUM10/*考试科目*/typedef struct intnum;/*学号*/char name20;/*姓名*/intscoreCOURSE_NUM;/*M门课成绩*/long sum;/*总分*/float average;/*平均成绩*/STU;,/*函数声明*/void AppendScore(STU*head,int n,int m);void PrintScore(STU*head,int n,int m);void TotalScore(STU*head,int n,int m);void SortScore(STU*

3、head,int n);int SearchNum(STU*head,int num,int n);void SearchScore(STU*head,int n,int m);char Menu_Select(void);,void main()charch;intm,n;STU stuSTU_NUM;printf(请输入学生总数和课程门数(n40,m10):);scanf(%d,%d,/*函数功能:显示菜单并获得用户键盘输入的选项*/char Menu_Select(void)char ch;time_t d;time(,/*函数功能:向结构体数组添加从键盘输入学生的学号、姓名和成绩等信息

4、*/void AppendScore(STU*head,int n,int m)intj;STU*p;for(p=head;pnum);printf(请输入姓名:);scanf(%s,p-name);for(j=0;jscore+j);,/*函数功能:打印n个学生的学号、姓名和成绩等信息*/void PrintScore(STU*head,int n,int m)STU*p;int i;char str100=0,temp3;strcat(str,学号 姓名);for(i=1;inum,p-name);for(i=0;iscorei);printf(%11d%9.2fn,p-sum,p-ave

5、rage);,/*函数功能:计算每个学生的m门功课的总成绩和平均成绩*/void TotalScore(STU*head,int n,int m)STU*p;int i;for(p=head;psum=0;for(i=0;isum=p-sum+p-scorei;p-average=p-sum/m;,/*函数功能:用选择法按总成绩由高到低排序*/void SortScore(STU*head,int n)int i,j,k;STU temp;for(i=0;isum(head+k)-sum)k=j;if(k!=i)temp=*(head+k);*(head+k)=*(head+i);*(head

6、+i)=temp;,/*函数功能:查找学生的学号*/int SearchNum(STU*head,int number,int n)int i;for(i=0;inum=number)return i;return-1;,/*函数功能:按学号查找学生成绩并显示查找结果*/void SearchScore(STU*head,int n,int m)int number,findNo;printf(Please Input the number you want to search:);scanf(%d,归纳分析,内容学生成绩管理 归纳分析 本例要求编写一个菜单驱动的学生成绩管理程序,我们采用了s

7、witch-case语句来实现该功能,学生资料包括学号、姓名、功课成绩、总分、平均成绩用一个结构体定义:,typedef struct intnum;/*学号*/char name20;/*姓名*/intscoreCOURSE_NUM;/*M门课成绩*/long sum;/*总分*/float average;/*平均成绩*/STU;,另外,添加成绩、显示成绩、查找、排序分别用函数AppendScore()、PrintScore()、SearchScore()和SortScore()实现。其中函数void AppendScore(STU*head,int n,int m)定义了head指针,指

8、向存储学生信息的结构体数组的首地址,整数n,m分别表示学生人数和考试科目,函数采用一个for循环嵌套实现向结构体数组添加从键盘输入学生的学号、姓名和成绩等信息。,案例10-2通讯录建立,内容 编程建立一通讯簿,存放有姓名、住址,网址,E-mail,电话等,然后对通信簿进行查找、添加、显示及删除操作。运行结果:运行主菜单如下,案例10-2运行添加通讯记录运行示例,案例10-2运行显示通讯记录运行示例,案例10-2运行删除通讯记录运行示例,1案例10-2的源程序,#include#include#include#include static struct adressbook char name1

9、0;char adress50;char webpage50;char email50;char phone20;char mphone20;/*函数原型*/void Append(void);void Display(void);void Remove(void);int Length(void);void Statistics(void);void Person(void);int menu_select();#define StructLength sizeof(struct adressbook);/*全局变量*/static struct adressbook s270;,/*主函数

10、*/void main()FILE*fin;if(fin=fopen(Adress.dat,rb)!=NULL)fclose(fin);for(;)switch(menu_select()/*调用主菜单函数,返回值整数作开关语句的条件*/case 1:Append();break;/*添加记录*/case 2:Display();break;/*显示记录*/case 3:Remove();break;/*删除记录*/case 4:Statistics();break;/*统计文件大小*/case 5:exit(0);/*退出程序*/else clrscr();printf(Can not op

11、en file Adress.dat!n);printf(n1.If the file Adress.dat is missing then you should create it and its size must be equal to 0.);printf(n2.If the file Adress.dat exist and program can not open it then you should delete it and create it again and its size must be equal to 0.);printf(nnPress key RETURN t

12、o exit to system.);getch();fclose(fin);,void Append()int NPerson,i,j,number,counter;FILE*fin;char tName10;do clrscr();counter=0;NPerson=0;NPerson=Length()/StructLength;printf(SUBSCRIBE PERSON INTO DATA BASE);Person();printf(nnHow many persons will you subscribe(0 to exit to menu)?);scanf(%d,/*end of

13、 checking*/,if(counter=1)printf(nOseba%s n,tName);if(counter!=1)sscanf(tName,%s,si.name);printf(Enter home adress:);gets(si.adress);printf(Enter home page adress:);gets(si.webpage);printf(Enter e-mail:);gets(si.email);printf(Enter home phone:);gets(si.phone);printf(Enter mobile phone:);gets(si.mphon

14、e);printf(-);fin=fopen(Adress.dat,ab);fwrite(,void Display()char fName10;int counter,NPerson,i;FILE*fin;gets(0);do clrscr();counter=0;NPerson=0;NPerson=Length()/StructLength;if(NPerson=0)do counter=1;clrscr();printf(Data base is empty.nnPress key RETURN to exit to menu.);while(getch()!=13);,if(count

15、er!=1)printf(PRINTING PERSON TO SCREEN);Person();printf(nnEnter name(0 to exit to menu):);gets(fName);if(strcmp(fName,0)=0)counter=2;if(counter!=2)fin=fopen(Adress.dat,rb);for(i=1;i=NPerson;i+)fread(,printf(nn-);printf(Name and surname:%s,si.name);printf(nHome adress:%s,si.adress);printf(nHome page

16、adress:%s,si.webpage);printf(nE-mail:%s,si.email);printf(nHome phone:%s,si.phone);printf(nMobile phone:%s,si.mphone);printf(n-n);if(counter!=3)printf(nPerson%s is not subscribed in data base.n,fName);fclose(fin);if(strcmp(fName,0)!=0)printf(nPress any key to continue.);getch();while(strcmp(fName,0)!

17、=0);,void Remove()char rName10;int counter,NPerson,i;FILE*fin;gets(0);do clrscr();counter=0;NPerson=0;NPerson=Length()/StructLength;if(NPerson=0)do counter=1;clrscr();printf(Data base is empty.nnPress key RETURN to exit to menu.);while(getch()!=13);break;if(counter!=1)printf(REMOVING PERSON FROM DAT

18、A BASE);Person();printf(nnEnter name(0 to exit to menu):);gets(rName);if(strcmp(rName,0)=0)counter=2;,if(counter!=2)fin=fopen(Adress.dat,w+b);for(i=1;i=NPerson;i+)fread(,int Length()int size=0;FILE*fin;fin=fopen(Adress.dat,rb);while(fscanf(fin,%c)!=EOF)size+;fclose(fin);return size;,void Statistics(

19、)int NPerson;do NPerson=0;NPerson=Length()/StructLength;clrscr();printf(STATISTICS OF DATA BASE);printf(nnNumber of persons in data base is%d.,NPerson);printf(nSize of data base is%d bytes.,Length();printf(nnPress key RETURN to exit to menu.);while(getch()!=13);,void Person()int i,NPerson;FILE*fin;N

20、Person=0;NPerson=Length()/StructLength;fin=fopen(Adress.dat,rb);printf(nnSubscribed persons are:n);if(NPerson=0)printf(nData base is empty.);for(i=1;i=NPerson;i+)fread(,int menu_select()char t80;int c;printf(press any key enter menu.n);/*提示按任意键继续*/getch();clrscr();/*清屏*/printf(*MENU*nn);printf(1.Add

21、 person to data basen);printf(2.Print person to screenn);printf(3.Remove person from data basen);printf(4.Statisticsn);printf(5.Exitn);printf(*n);do printf(n Enter you choice(15):);/*提示输入选项*/scanf(%s,t);c=atoi(t);/*将输入的字符串转化为整型数*/while(c5)return c;,归纳分析,本例要求编程建立一通讯簿,存放有姓名、住址,网址,E-mail,电话等,然后对通信簿进行查找、添加、显示及删除操作,我们采用了switch-case语句来实现菜单选择,通讯簿里需要存放有姓名、住址,网址,E-mail,电话等,我们用一个结构体定义如下:,static struct adressbook char name10;char adress50;char webpage50;char email50;char phone20;char mphone20;,另外,其他查找、添加、显示及删除操作分别采用Append()、Display()、Remove()函数模块实现。,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号