C语言课程设计报告.docx
- 文档编号:9073427
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:129.77KB
C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
目 录
一、需求分析错误!
未定义书签。
二、概要设计错误!
未定义书签。
三、详细设计错误!
未定义书签。
四、设计和调试分析错误!
未定义书签。
五、用户手册错误!
未定义书签。
六、测试结果错误!
未定义书签。
七、参考文献错误!
未定义书签。
第1章需求分析
菜单是应用程序非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。
(1)进入系统之前,用户输入1--5,以实现不同的功能,如果输入1--5以外的其他字符,则显示输入错误,请重新输入;
(2)用户选择1,则会计算并输出每个学生的总分和平均分,然后返回到主菜单;
(3)用户选择2,可实现排序功能,计算机会按总分由大到小排序并输出排序结果,然后返回到主菜单;
(4)用户选择3,可实现筛选功能,计算机会打印出所有成绩在班级平均分以上的学生名单和信息,然后返回到主菜单;
(5)用户选择4,则可实现成绩查询功能,按提示输入201—230的任意一个学号即可得到该生的成绩与名次,然后返回到主菜单;
(6)用户选择5,则可以退出。
第2章概要设计
需求流程图
被调函数流程图
N
Y
第3章详细设计
首先应用结构体变量,用intmenu_select()函数输出菜单界面同时选择功能,然后用switch调用intmenu_select()函数,再通过循环达到多次运行的目的.针对选择的数据不同实现不同的功能.
源程序:
#include
intmenu_select();//调用函数声明
main()
{inti,j,num,t,x;
floatsum=0,average;
structstudent//定义结构体变量
{
longintnum;
charname[20];
intcla;
intmath;
intchinese;
intenglish;
inttotal;
intave;
intplace;
}stu[30]={{201,"zhanfen",2,75,84,80,0,0,1},
{202,"chanfen",2,74,79,76,0,0,2},
{203,"zhaohao",2,85,89,90,0,0,3},
{204,"yinwei",2,78,88,88,0,0,4},
{205,"liufan",2,90,85,86,0,0,5},
{206,"chenan",2,78,75,76,0,0,6},
{207,"zhaoyu",2,80,89,86,0,0,7},
{208,"zhuyu",2,86,87,87,0,0,8},
{209,"zhuhao",2,86,88,71,0,0,9},
{210,"yueshu",2,96,84,90,0,0,10},
{211,"zhaohua",2,79,84,85,0,0,11},
{212,"liaohan",2,63,75,69,0,0,12},
{213,"tangbin",2,75,77,72,0,0,13},
{214,"songfen",2,76,68,63,0,0,14},
{215,"panjin",2,85,79,80,0,0,15},
{216,"qiuer",2,60,80,85,0,0,16},
{217,"chenjie",2,95,87,90,0,0,17},
{218,"huanjin",2,72,73,78,0,0,18},
{219,"chenjun",2,90,89,96,0,0,19},
{220,"wangjin",2,62,92,90,0,0,20},
{221,"wenjian",2,63,96,92,0,0,21},
{222,"sunfu",2,81,88,89,0,0,22},
{223,"qiansan",2,85,87,88,0,0,23},
{224,"zhouzen",2,71,90,88,0,0,24},
{225,"zhenguo",2,73,93,80,0,0,25},
{226,"liming",2,89,94,79,0,0,26},
{227,"hanmei",2,92,88,94,0,0,27},
{228,"wutian",2,93,87,92,0,0,28},
{229,"chenjun",2,77,86,79,0,0,29},
{230,"goujie",2,66,78,80,0,0,30}};
for(i=0;i<30;i++)
{stu[i].total=(stu[i].english+stu[i].chinese+stu[i].math);
stu[i].ave=(stu[i].total)/3;}
for(;;)//得到平均分和总分
/**********************************************/
/*
主函数/*
{
switch(menu_select())//调用函数
{
/*
模块一:
功能描述:
统计每个学生的总分和平均分;
/*
case1:
for(i=0;i<30;i++)
{stu[i].total=(stu[i].english+stu[i].chinese+stu[i].math);
stu[i].ave=(stu[i].total)/3;}
printf("姓名\t\t平均分\t\t总分\n");
for(i=0;i<30;i++)
printf("%s\t\t%d\t\t%d\n",stu[i].name,stu[i].ave,stu[i].total);
break;
/**********************************************************/
/*
模块二:
功能描述:
按总分由大到小排出名次;
/*
case2:
for(i=29;i>0;i--)
{for(j=0;j
if(stu[j].total<=stu[j+1].total)
{t=stu[j+1].total,
stu[j+1].total=stu[j].total,
stu[j].total=t;
}
}
printf("姓名\t\t总分\t位次\n");
for(i=0;i<30;i++)
printf("%s\t\t%d\t%d\n",stu[i].name,stu[i].total,
stu[i].place);
break;
/**********************************************************/
/*
模块三:
功能描述:
打印出成绩在全班平均分以上的学生名单和数据信息。
/*
case3:
printf("学号\t姓名\t班级\t\t数学\t语文\t英语\n");
for(i=0;i<30;i++)
sum=sum+stu[i].ave;
average=sum/30;
for(i=0;i<30;i++)
{if(stu[i].ave>=average)
printf("%d\t%s\t%d\t\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].cla,stu[i].math,stu[i].chinese,stu[i].english);}break;
/*****************************************************/
/*
模块四:
功能描述:
任意输入一个学号,能够查找出该学生在班级中的排名及其考试成绩。
/*
case4:
printf("学号\t姓名\t班级\t\t数学\t语文\t英语\n");
printf("请输入学号\n");
for(;;)
{scanf("%d",&num);
for(i=0;i<30;i++)
{if(num==stu[i].num)
printf("%d\t%s\t%d\t\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].cla,stu[i].math,stu[i].chinese,stu[i].english);
if(num==stu[i].num)
break;
}
if(i==30)
printf("输入错误,请重新输入\n");
if(num==stu[i].num)
break;}
/**********************************************************/
/*
模块五:
功能描述:
结束.
/*
case5:
printf("\t再见!
\n");
break;}
}
}
/**********************************************************/
/**********************************************************/
/*
(7)模块六:
被调函数
/*
intmenu_select()
{inti,cn;
printf("\t************************\n");
printf("\t*1.统计平均分和总分*\n");
printf("\t*2.排序*\n");
printf("\t*3.打印*\n");
printf("\t*4.查找*\n");
printf("\t*5.退出*\n");
printf("\t************************\n");
for(;;)
{
scanf("%d",&cn);
if(cn<1||cn>5)
printf("\n\t输入错误,重选1—5:
");
else
break;
}
returncn;
}
/************************************************/
第四章运行结果及分析
菜单界面:
进行选择实现不同的功能.
图:
4-1.运行界面图
实现了统计每个学生的总分和平均分,输出了所有学生的平均分和总分.
图:
4-2.运行界面图
实现了按总分由大到小排出名次,输出总分排名
图:
4-3.运行界面图
实现了打印出成绩在全班平均分以上的学生名单和数据信息,输出班级所有成绩在全班平均分以上的学生名单和数据信息.
图:
4-4.运行界面图
实现了任意输入一个学号,能够查找出该学生在班级中的排名及其考试成绩,输入在201-230的一个学号后就会输出该学生的班级排名及其考试成绩.菜单界面
图:
4-5.运行界面图
实现了任意输入一个学号,能够查找出该学生在班级中的排名及其考试成绩,输入在201-230的一个学号后就会输出该学生的班级排名及其考试成绩.数据界面.
图:
4-6.运行界面图
输入错误时的界面
图:
4-7.运行界面图
结束界面
图:
4-1.运行界面图
第5章 课程设计心得
我认为C语言的实质就是以一定的语法规范为准,通过对数据量的复杂结构运算,完成一定功能的程序,是一门计算机基础语言,我们通过这一学期的学习,对于其特点和算法有了一定程度的了解。
这近两周的课程设计让我们得以巩固以前的知识并在此基础上能够有所突破。
在大家的共同努力下,忙碌了近两个星期,我们终于完成了对此程序的编译及试运行。
在设计程序的过程中,我们意识到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。
面对这么一个比较有难度的程序,开始时难以着手,看懂他人的程序都是个难点,更别说让自己去设计。
后来在他人的点拨下,利用模块化思想才有大致的思路。
程序中用到的有关结构体、循环、函数的综合知识对我们刚接触C语言不到半年的初学者来说更是一项考验。
设计一个程序的过程就是解决一个实际问题的过程,从结果来看,我们的程序还不够完善。
比如不能多次查询成绩,不能自行结束程序。
通过这次课程设计,我更加深刻地体会到c语言程序编写过程的严谨与细心是如此重要,还有就是无论做任何事都要有耐心。
当然团队合作也是非常重要的一个环节。
第6章参考文献
[1]杨文君,杨柳.C语言程序设计教程[M].清华大学出版社.2010.3
[2]谭浩强.C语言程序设计教程[M].清华大学出版社.2007.6
[3]《C语言程序设计》精品课程
[4]人民邮电出版社教育服务与资源
[5]《C语言程序设计》精品课程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)