C语言程序设计学生成绩记录簿.docx
- 文档编号:6578531
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:23
- 大小:361.04KB
C语言程序设计学生成绩记录簿.docx
《C语言程序设计学生成绩记录簿.docx》由会员分享,可在线阅读,更多相关《C语言程序设计学生成绩记录簿.docx(23页珍藏版)》请在冰豆网上搜索。
C语言程序设计学生成绩记录簿
课程实验报告
课程名称
C语言程序设计
班级
13新能源2班
实验日期
2013年8月1号
姓名
许鑫
学号
130370236
实验成绩
实验名称
学生成绩记录簿系统
实
验
题
目
描
述
本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
1.建立一个主界面
2.用switch语句进行分类讨论
3.分别进入录入,查询,删除,等子函数。
4.将子函数与主函数相连即可。
该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;
这个程序有录入和删除的功能;
还可以求出平均成绩,并排序
成绩记录簿中记录以下数据:
学号、姓名、课程编号、课程名称、成绩、学分
添加成绩:
需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;
查询(班级或个人)成绩:
查询个人成绩:
以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:
以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
拓展功能:
a)程序启动时先从文件读入数据,如果文件中没有数据则给出提示;
b)每次修改的数据写入文件
实
验
环
境
以自己的电脑为主要的实验平台,运用VisualC++6.0这个软件进行反复的编写实验。
实
验
界
面
截
图
1、开始时
2、添加
3、查询
4、查询成绩
5、写文本
6、读取
算
法
描
述
及
实
验
步
骤
主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp函数来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组的后一项赋值给前一项。
前一项自动被删掉。
这样完成删除。
查询函数与之类似,将删除改为输出即可;
求平均值函数与查询类似只是输出时只输出平均值而已。
按平均值排序只要加一个排序函数即可。
退出函数什么都不写,即可。
程序流程图
调
试
过
程
及
实
验
结
果
总
结
经过一个多星期的编译原理课程设计,在我的努力下,顺利完成该课程设计。
通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。
老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。
现在终于深刻的了解了这句话。
经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。
知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。
通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。
能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。
除了课堂外,课程设计是最能学到东西的,最考验人的。
在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。
经过这次课程设计,让我对C++这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。
只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。
附
录
#include
#include
#include
#defineMAX1000
structLesson
{
charLessonName[100];
charLessonNumber[100];
intLessonMark;
floatLessonCredit;
};
structStudent
{
charName[100];
charNumber[100];
intLessonCount;
structLessonL[100];
};
structStudentS[MAX];
intStudentCount=0;
voidPrintInterface();
intStudent_Insert();
intStudent_Delete();
voidStudent_Select();
voidClass_Select();
voidWriteFile();
voidReadFile();
intmain()
{
intn;
{
PrintInterface();
scanf("%d",&n);
}
}
voidPrintInterface()
{
intn;
while
(1)
{
printf("\n---欢迎使用学生成绩记录簿系统---");
printf("\n|1、添加|\n");
printf("\n|2、删除|\n");
printf("\n|3、查学生成绩|\n");
printf("\n|4、查班成绩表|\n");
printf("\n|5、写入文本文件|\n");
printf("\n|6、读取文本文件|\n");
printf("\n|0、退出|\n");
printf("\n--------------------------");
printf("\n选择操作:
");
scanf("%d",&n);
switch(n){
case1:
if(Student_Insert())
printf("\n添加成功...回车继续\n");
else
printf("\n添加失败...回车继续\n");
break;
case2:
Student_Delete();
break;
case3:
Student_Select();
break;
case4:
Class_Select();
break;
case5:
WriteFile();
break;
case6:
ReadFile();
break;
case0:
exit
(1);
break;
default:
printf("无此功能,请重新选择,按回车确定\n");
}
}
return0;
}
intStudent_Insert()
{
inti,j,n;
printf("\n请输入所添加的学生人数:
");
scanf("%d",&n);
if(StudentCount+n>=MAX)
return0;
for(i=StudentCount;i { printf("\n\t第%d个学生: \n",i-StudentCount+1); printf("\n\t学生学号: "); scanf("%s",&S[i].Number); if(strlen(S[i].Number)! =8) { printf("输入错误,请重新输入"); return0; } printf("\n\t学生姓名: "); scanf("%s",S[i].Name); printf("\n\t该学生所修课程数: "); scanf("%d",&S[i].LessonCount); for(j=0;j { printf("\n\t第%d门课: \n",j+1); printf("\n\t\t课程编号: "); scanf("%s",S[i].L[j].LessonNumber); if(strlen(S[i].L[j].LessonNumber)! =5) { printf("输入错误,请重新输入! "); return0; } printf("\n\t\t课程名称: "); scanf("%s",S[i].L[j].LessonName); printf("\n\t\t课程成绩: "); scanf("%d",&S[i].L[j].LessonMark); if(S[i].L[j].LessonMark<0||S[i].L[j].LessonMark>100) { printf("输入错误,请重新输入! "); return0; } printf("\n\t\t课程学分: "); scanf("%f",&S[i].L[j].LessonCredit); if(S[i].L[j].LessonCredit<1||S[i].L[j].LessonCredit>5) { printf("输入错误,请重新输入! "); return0; } if(S[i].L[j].LessonMark<60) S[i].L[j].LessonCredit=0; } } StudentCount+=n; return1; } intStudent_Delete() { chara[100]; charb[100]; inti,j; printf("\n删除学生: \n"); printf("\n学生姓名: "); scanf("%s",a); printf("\n学生学号: "); scanf("%s",b); if(strlen(b)! =8) { printf("输入错误请重新输入"); return0; } for(i=0;i { if(0==strcmp(S[i].Name,a)&&0==strcmp(S[i].Number,b)) { printf("\n找到,删除\n"); for(j=i+1;j { S[j-1]=S[j]; } break; } } if(i==StudentCount||i>StudentCount) { printf("\n未找到该学生\n\n"); return0; } else { StudentCount--; return1; } } voidStudent_Select() { intx; chary[100]; chara[100]; inti,j; printf("\n输入所查学生信息(1.姓名2.学号)选择: "); scanf("%d",&x); if(x==1||x==2) { if(x==1) { printf("\n姓名: "); fflush(stdin); gets(a); for(i=0;i { if(0==strcmp(S[i].Name,a)) { printf("\n学号: %s\t姓名: %s\n",S[i].Number,S[i].Name); printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n"); printf("-----------------------------------------------------\n"); for(j=0;j { printf("%s\t\t%s\t\t%d\t\t%f\n",S[i].L[j].LessonNumber, S[i].L[j].LessonName,S[i].L[j].LessonMark, S[i].L[j].LessonCredit); printf("-----------------------------------------------------\n"); } printf("\n\n"); } } } else { printf("\n学号: "); fflush(stdin); gets(y); for(i=0;i { if(strcmp(S[i].Number,y)==0) { printf("\n学号: %s\t姓名: %s\n",S[i].Number,S[i].Name); printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n"); printf("-----------------------------------------------------\n"); for(j=0;j { printf("%s\t\t%s\t\t%d\t\t%f\n", S[i].L[j].LessonNumber,S[i].L[j].LessonName, S[i].L[j].LessonMark,S[i].L[j].LessonCredit); printf("-----------------------------------------------------\n"); } printf("\n\n"); break; } } } printf("查找完毕...回车继续\n"); getchar(); } else { printf("选择错误...回车继续\n"); getchar(); return; } } voidClass_Select() { chara[100]; doublex=0,y=0,z=0; inti,j; printf("\n请输入课程编号: "); fflush(stdin); scanf("%s",a); printf("学号\t姓名\t课程名称\t课程成绩\t课程学分\n"); printf("----------------------------------------------------\n"); for(i=0;i { for(j=0;j { if(strcmp(S[i].L[j].LessonNumber,a)==0) { printf("%s\t%s\t%s\t\t%d\t\t%f\n", S[i].Number,S[i].Name,S[i].L[j].LessonName, S[i].L[j].LessonMark,S[i].L[j].LessonCredit); printf("----------------------------------------------------\n"); z+=S[i].L[j].LessonMark; x++; if(S[i].L[j].LessonMark>=60) y++; break; } } } printf("\n平均分: %f\t及格率: %f%%\n\n",z/x,y/x*100); printf("\n查找完毕...回车继续\n"); getchar(); } voidWriteFile() { FILE*fp; inti,j; chara[100]; printf("\n请输入写入的文件地址: \n\n地址输入格式: 例如d: \\\\Student.txt: "); scanf("%s",&a); printf("\n写入中......\n"); if(fp=fopen(a,"w")) { fprintf(fp,"%d\n",StudentCount); for(i=0;i { fprintf(fp,"%s\t%s\t%d\n",S[i].Number,S[i].Name,S[i].LessonCount); for(j=0;j { fprintf(fp,"%s\t%s\t%d\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName, S[i].L[j].LessonMark,S[i].L[j].LessonCredit); } } printf("\n写入完成...回车继续\n"); fclose(fp); } else { printf("\n写入失败...回车继续\n"); } getchar(); } voidReadFile() { FILE*fp; inti,j; chara[100]; printf("\n请输入读取的文件地址: \n\n地址输入格式: 例如d: \\\\student.txt: "); scanf("%s",&a); printf("\n读取中......\n"); if(fp=fopen(a,"r")) { fscanf(fp,"%d",&StudentCount); for(i=0;i { fscanf(fp,"%s%s%d",&S[i].Number,&S[i].Name,&S[i].LessonCount); for(j=0;j { fscanf(fp,"%s%s%d%f",&S[i].L[j].LessonNumber, &S[i].L[j].LessonName,&S[i].L[j].LessonMark, &S[i].L[j].LessonCredit); } } printf("\n读取成功...回车继续\n"); fclose(fp); } else { printf("\n读取失败...回车继续\n"); } getchar(); } Welcome! ! ! 欢迎您的下载, 资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 成绩 记录簿