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