C语言程序设计
课程设计
实习报告
班 级: 储运0702
学 生:
指导教师: 康老师 陈老师
完成日期: 20##年12月27日
一系统题目:教学管理系统
二 摘要
第一部分:分析设计与说明
第一步:分别建立两个数据文件
1. 文件1用于存放学生成绩
2. 文件2用于存放课程学分
第二步:程序设计思想
1、 定义两个结构体数组用于存放文件1和文件2的内容;
2 、 编写第一个函数,包含三个函数分别用于求每个学生加权平均分、名次、全班的课程平均差和标准差;
3、 编写第二个函数,用于统计各分数段的人数并输出;
4 、 编写第三个函数,用于打印和输出成绩名次 ;
5、 编写第四个函数,用于打印和输出课程平均差、标准差及各级人数;
6、 编写第五个函数,用于打印和输出成绩条;
7、 编第六个写函数,用于输出不及格学生信息;
8、 编写第七个函数,用于输出优秀学生信息;
9、 编写菜单,共有7个菜单项,其中6个为题目要求,第7个为退出函数。
第三步:程序实现功能
1 各成绩、平均分和名次的表格;
2 全班平均分、标准差及各分数段学生人数;
3 打印学生成绩条;
4 显示不及格学生的名单
5 显示优秀生的名单;
6 成绩分布图;
7 退出。
三 系统设计
1 系统功能模块图
2 菜单结构图
3 数据结构说明
1).写入了两个数据文件,一个是学生各门课的成绩,另一个是每门课的学分;写入时不要在学号等中间有空格.
2).用C语言创建了3个数据文件。
4 重要的输入界面说明
第一个界面:主要显示主菜单
第二个界面:将平均分和名次显示在屏幕上
第三个界面:显示各分数段人数统计
第四个界面:显示学生成绩条,输入学号即可求得
第五个截面:显示不及格学生的名单
第六个界面:显示优等生学生的名单
第七个界面:成绩分布图
第八个界面:按任意键退出
四 系统实现
1本程序在Microsoft Visual C++ 6.0环境下实现
l 加权平均分Jqave() 每个学生各科分数乘以相应的学分并相加 除以学分总和
l 名次jqave()使用加权平均分低的名次自动加1的方法
l 写名次、平均分文件jqave()求出来的结果写在文件Mingci42.txt中
l 求分数段、标准差使用条件语句求出分数段,根据条件求出标准差
l 用kchcount()在屏幕上显示各分段人数信息
l 用writestu()按要求输出该生的情况的输出
l 用bujige()求不及格学生名单选出分数低于60分的学生,并将其显示在屏幕上
l 用youxiu()求优秀学生的名单选出平均分大于92或者名次在前五名或者平均分大于88、至少有一科大于等于99的学生的名单
2编程中出现的问题
a、细节错误,如前后字符类型不相符,掉分号;
b、程序调试中无错误,但运行没有结果;
c、循环发生错误,大括号没有将要循环的内容包含进去
d、程序运行成绩条时屏幕上无法显示但保存到了新的文档中。
e、程序运行出后每执行一个功能时要重新运行才能执行其他的命令。
f、界面菜单都排在一行,不便于查询。在各个菜单后加了一个换行的符号。
五使用说明
使用前首先进入Microsoft Visual C++ 6.0环境;
启动并运行“班级程序管理系统”;
按数字键1,输出并打印出所有学生的成绩、名次和平均分;
按数字键2,输出并打印全班的每门课程的平均成绩、标准差及个等级人数;
按数字键3 ,输出并打印成绩条;
按数字键4,显示不及格的学生名单;
按数字键5,显示优等生的学生名单;
按数字键6,成绩分布图;
按数字键7,退出程序。
六测试数据
除以上写入文件外,还有上面执行结果中的:
1 不及格学生名单:
2 优秀学生名单
七程序
#include
#include
#include
#define N 20
#define M 5
struct student
{
int num,score[M],mingci;
char name[N];
float jqaver;
}stu[N];
struct kecheng
{
int num,youxiu,lianghao,zhongdeng,jige,bujige;
char name[10];
float xuefen,aver,bzcha;
}kch[M];
void readstudent()
{
FILE *fp;
char str[80];
int i,j;
fp=fopen("CY070242.txt","r");
if(fp==NULL) {printf("cannot open CY070242.txt");return;}
else{
fgets(str,80,fp);
for(i=0;i
fscanf(fp,"%d %s",&stu[i].num,stu[i].name);
for(j=0;j
fscanf(fp,"%d",&stu[i].score[j]);}
}
fclose(fp);
/*printf("学号 姓名 英语 C语言 数学 物理 化学\n");
for(i=0;i
printf(" %d %s ",stu[i].num,stu[i].name);
for(j=0;j
printf(" %d ",stu[i].score[j]);
printf("\n");
}*/
}
void readkecheng()
{
int i;
char str[80];
FILE *fp;
fp=fopen("CY0702.txt","r");
if(fp==NULL) {printf("cannot open CY0702.txt");return;}
else{
fgets(str,80,fp);
for(i=0;i
fscanf(fp,"%d %s %f",&kch[i].num,kch[i].name,&kch[i].xuefen);
}
fclose(fp);
/*printf("课程号 课程名 课程学分\n");
for(i=0;i
printf(" %d %s %f ",kch[i].num,kch[i].name,kch[i].xuefen);
printf("\n");
}*/
}
void jqaver()
{
int i,j;
float scoresum=0,xuefensum=0;
for(i=0;i
for(i=0;i
scoresum=0;
for(j=0;j
scoresum+=stu[i].score[j]*kch[j].xuefen;
stu[i].jqaver=scoresum/xuefensum;
}
/*printf("学号 姓名 英语 C语言 数学 物理 化学 加权平均分\n");
for(i=0;i
printf(" %d %s ",stu[i].num,stu[i].name);
for(j=0;j
printf(" %d ",stu[i].score[j]);
printf(" %f ",stu[i].jqaver);
printf("\n");
}*/
}
void mingci()
{
int i,j;
for(i=0;i
stu[i].mingci=1;
for(j=0;j
if(stu[i].jqaver
stu[i].mingci++;
}
/*printf("名次 学号 姓名 英语 C语言 数学 物理 化学 加权平均分\n");
for(i=0;i
printf(" %d %d %s ",stu[i].mingci,stu[i].num,stu[i].name);
for(j=0;j
printf(" %d ",stu[i].score[j]);
printf(" %f ",stu[i].jqaver);
printf("\n");
}*/
}
void kchaver()
{
float sum;
int i,j;
for(j=0;j
sum=0;
for(i=0;i
sum+=stu[i].score[j];
kch[j].aver=sum/N;
}
/*printf("课程号 课程名 课程学分 平均分\n");
for(i=0;i
printf(" %d %s %.2f %.2f ",kch[i].num,kch[i].name,kch[i].xuefen,kch[i].aver );
printf("\n");
}*/
}
void kchbzcha()
{
int i,j;
float sum=0;
for(j=0;j
sum=0;
for(i=0;i
sum+=(stu[i].score[j]-kch[j].aver)*(stu[i].score[j]-kch[j].aver);
kch[j].bzcha=(float)sqrt(sum/N);
}
/*printf("课程号 课程名 课程学分 平均分 标准差\n");
for(i=0;i
printf(" %d %s %.2f %.2f %.2f \n",kch[i].num,kch[i].name,kch[i].xuefen,kch[i].aver,kch[i].bzcha);*/
}
void kchcount()
{
int i,j;
for(j=0;j
for(i=0;i
if(stu[i].score[j]>=90) kch[j].youxiu++;
else if(stu[i].score[j]>=80) kch[j].lianghao++;
else if(stu[i].score[j]>=70) kch[j].zhongdeng++;
else if(stu[i].score[j]>=60) kch[j].jige++;
else kch[j].bujige++;
/*printf("课程号 课程名 课程学分 平均分 标准差 优秀 良好 中等 及格 不及格\n");
for(i=0;i
printf(" %d %s %.2f %.2f %.2f %d %d %d %d %d \n",kch[i].num,kch[i].name,kch[i].xuefen,kch[i].aver,kch[i].bzcha,kch[i].youxiu,kch[i].lianghao,kch[i].zhongdeng,kch[i].jige,kch[i].bujige);*/
}
void showstu()
{
int i,j;
printf("名次 学号 姓名 英语 C语言 数学 物理 化学 加权平均分\n");
for(i=0;i
printf("%-7d %-2d %-8s",stu[i].mingci,stu[i].num,stu[i].name);
for(j=0;j
printf("%d ",stu[i].score[j]);
printf(" %.2f ",stu[i].jqaver);
printf("\n");
}
}
void writestu()
{
char str[80]="名次 学号 姓名 英语 C语言 数学 物理 化学 加权平均分\n";
FILE *fp;
int i,j;
fp=fopen("mingci42.txt","w");
fputs(str,fp);
for(i=0;i
fprintf(fp,"%-7d%-2d %-5s",stu[i].mingci,stu[i].num,stu[i].name);
for(j=0;j
fprintf(fp,"%6d",stu[i].score[j]);
fprintf(fp," %.2f ",stu[i].jqaver);
fprintf(fp,"\n");
}
fclose(fp);
}
void showkch()
{
int i;
printf("课程号 课程名 课程学分 平均分 标准差 优秀 良好 中等 及格 不及格、\n");
for(i=0;i
printf("%-7d%7s%9.2f%9.2f%8.2f%5d%6d%6d%6d%6d\n",kch[i].num,kch[i].name,kch[i].xuefen,kch[i].aver,kch[i].bzcha,kch[i].youxiu,kch[i].lianghao,kch[i].zhongdeng,kch[i].jige,kch[i].bujige);
}
void writekch()
{
FILE *fp;
int i;
char str[100]="课程号 课程名 课程学分 平均分 标准差 优秀 良好 中等 及格 不及格\n";
fp=fopen("kecheng42.txt","w");
fputs(str,fp);
for(i=0;i
fprintf(fp,"%-7d%7s%9.2f%9.2f%8.2f%5d%6d%6d%6d%6d\n",kch[i].num,kch[i].name,kch[i].xuefen,kch[i].aver,kch[i].bzcha,kch[i].youxiu,kch[i].lianghao,kch[i].zhongdeng,kch[i].jige,kch[i].bujige);
fclose(fp);
}
void dayinchengji()
{
char str[80]="名次 学号 姓名 英语 C语言 数学 物理 化学 加权平均分、\n";
FILE *fp;
int i,n;
printf("请输入要查询的学生学号:\n");
scanf("%d",&n);
fp=fopen("cjCY0702.txt","w");
fputs(str,fp);
fprintf(fp,"%-7d%-2d%-8s",stu[n-1].mingci,stu[n-1].num,stu[n-1].name);
for(i=0;i
fprintf(fp,"%5d",stu[n-1].score[i]);
fprintf(fp,"%5.2f",stu[n-1].jqaver);
fprintf(fp,"\n-------------------------------------------------------------------------");
fclose(fp);
puts(str);
printf("%-7d%-2d%6s",stu[n-1].mingci,stu[n-1].num,stu[n-1].name);
for(i=0;i
printf("%6d",stu[n-1].score[i]);
printf("%8.2f",stu[n-1].jqaver);
}
void showbujigestu()
{
int i,j;
printf("学号 姓名 不及格课程 学分 成绩\n");
for(i=0;i
for(j=0;j
if(stu[i].score[j]<60)
printf("%-6d%2s%9s%9.2f%5d\n",stu[i].num,stu[i].name,kch[j].name,kch[j].xuefen,stu[i].score[j]);
}
void showyoudengstu()
{
int i,j,k,n=0;
printf("名次 学号 姓名 英语 C语言 数学 物理 化学 加权平均分\n");
for(i=0;i
for(j=0;j
if(stu[i].jqaver>=90||stu[i].mingci<=4){
printf("%-7d%2d%7s",stu[i].mingci,stu[i].num,stu[i].name);
for(k=0;k
printf("%6d",stu[i].score[k]);
printf("%9.2f\n",stu[i].jqaver);
}
continue;
if(stu[i].score[j]>=99) {n++;printf("%d",n);}
if(stu[i].jqaver>=85 && n>=1){
printf("%-7d%2d%7d",stu[i].mingci,stu[i].num,stu[i].name);
for(k=0;k
printf("%6d",stu[i].score[k]);
printf("%9.2f\n",stu[i].jqaver);
}
}
}
void chengjifbt()
{
int i,j,k;
char s[N][M]={'\0'};
for(k=0;k
for(j=19;j>N-kch[k].youxiu;j--) s[j][0]='*';
for(j=19;j>N-kch[k].lianghao;j--) s[j][1]='*';
for(j=19;j>N-kch[k].zhongdeng;j--) s[j][2]='*';
for(j=19;j>N-kch[k].jige;j--) s[j][3]='*';
for(j=19;j>N-kch[k].bujige;j--) s[j][4]='*';
for(int x=0;x
printf("%2d|",N-x);
for(int y=0;y
printf("%8c%c",s[x][y],s[x][y]);
printf("\n");
}
printf("----------------------------------------------------------------------------");
printf("%s: 优秀 良好 中等 及格 不及格\n\n\n",kch[k].name);
}
}
void menu()
{
int c;
for(;;){
printf("学籍管理系统选项: \n");
printf("1 创建并显示学生名次、平均分信息文件\n");
printf(" (结果放入mingci42.txt文件) ;\n");
printf("2 创建并显示课程平均分、标准差及分数分段信息文件\n");
printf(" (结果放入kch42.txt文件) ;\n");
printf("3 打印成绩条\n");
printf(" (如果放入cjCY42.txt文件) ;\n");
printf("4 显示有不及格课程的学生;\n");
printf("5 显示优等生;\n");
printf(" 优等生条件 (只要满足三个条件中的任意一个条件即可): \n");
printf(" a)平均分>=91分\n");
printf(" b)名次在本班位于前四名\n");
printf(" c)平均分>=85分,并且至少有一门课的成绩>=99\n");
printf("6 成绩分布图\n");
printf("7 退出\n");
printf("请输入要选择的选项: \n");
scanf("%d",&c);
switch(c)
{
case 1:showstu();writestu();break;
case 2:showkch();writekch();break;
case 3:dayinchengji();break;
case 4:showbujigestu();break;
case 5:showyoudengstu();break;
case 6:chengjifbt();break;
case 7:exit(0);
}
}
}
main()
{
readstudent();
readkecheng();
jqaver();
mingci();
kchaver();
kchbzcha();
kchcount();
menu();
}
东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:…
C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体…
河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名…
C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的…
C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录…
《C语言程序设计》调研报告本着以人才市场需求变化为导向,适时调整专业结构和培养方案的原则,本课程对山东职业院校技能大赛、全国大学生…
高级语言程序设计实验报告班级学号姓名成绩实验日期年月日实验题目实验五数组程序设计实验目的实验内容包括算法说明用文字或流程图说明程序…
3130111103福建工程学院C语言课程设计报告班级机械1301学号姓名指导教师日期20xx123020xx1331301111…
20xx级C课程设计大作业设计报告设计题目餐厅信息管理程序小组参与人员姓名学号专业班级分工姓名学号专业班级分工姓名学号专业班级分工…
课程设计报告课程名称C语言程序设计课题名称运动会分数统计系统专业机械设计及其自动化班级1185班学号***姓名**指导教师**20…
C程序设计实验报告实验名称控制结构综合程序设计学时安排2课时实验类别上机操作型实验要求1人1组一实验目的1熟练掌握分支结构循环结构…