C语言程序设计学生成绩记录簿簿Word格式.docx

上传人:b****3 文档编号:16569127 上传时间:2022-11-24 格式:DOCX 页数:16 大小:208.39KB
下载 相关 举报
C语言程序设计学生成绩记录簿簿Word格式.docx_第1页
第1页 / 共16页
C语言程序设计学生成绩记录簿簿Word格式.docx_第2页
第2页 / 共16页
C语言程序设计学生成绩记录簿簿Word格式.docx_第3页
第3页 / 共16页
C语言程序设计学生成绩记录簿簿Word格式.docx_第4页
第4页 / 共16页
C语言程序设计学生成绩记录簿簿Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言程序设计学生成绩记录簿簿Word格式.docx

《C语言程序设计学生成绩记录簿簿Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计学生成绩记录簿簿Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

C语言程序设计学生成绩记录簿簿Word格式.docx

以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。

查询班级成绩:

以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。

拓展功能:

a)程序启动时先从文件读入数据,如果文件中没有数据则给出提示;

b)每次修改的数据写入文件

验环境

以自己的电脑为主要的实验平台,运用VisualC++6.0这个软件进行反复的编写实验。

1、开始时

2、添加

 

3、查询

4、查询成绩

5、写文本

6、读取

主程序提供一个界面,允许用户选择。

使用switch语句,用时直接输入数字即可。

增加函数,功能是插入学生成绩。

使用一个无穷循环,直到录入”n”

时结束。

删除函数,功能是删除,分为两步,先找后删。

找,用strcmp函数来

描述及

做如果找到记录i值,反之记为-1;

删除可以从i项开始将数组的后一项赋值给前一项。

前一项自动被删掉。

这样完成删除。

查询函数与之类似,将删除改为输出即可;

求平均值函数与查询类似只是输出时只输出平均值而已。

按平均值排序只要加一个排序函数即可。

退出函数什么都不写,即可。

程及实验结果

经过一个多星期的编译原理课程设计,在我的努力下,顺利完成该课程设计。

通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。

老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。

现在终于深刻的了解了这句话。

经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。

知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。

通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。

能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

除了课堂外,课程设计是最能学到东西的,最考验人的。

在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。

经过这次课程设计,让我对C++这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。

只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。

#include<

stdio.h>

#include<

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|3

、查学生成绩

\n|4

、查班成绩表

\n|5、写入文本文件|\n"

\n|6、读取文本文件|\n"

\n|0、退出|\n"

\n"

\n选择操作:

"

scanf("

&

switch(n){case1:

if(Student_Insert())printf("

\n添加成功...回车继续\n"

else

\n添加失败...回车继续\n"

break;

case2:

Student_Delete();

case3:

Student_Select();

case4:

Class_Select();

case5:

WriteFile();

case6:

ReadFile();

case0:

exit

(1);

default:

printf("

无此功能,请重新选择,按回车确定\n"

}

}return0;

intStudent_Insert()

inti,j,n;

\n请输入所添加的学生人数:

if(StudentCount+n>

=MAX)

return0;

for(i=StudentCount;

i<

StudentCount+n;

++i)

\n\t第%d个学生:

\n"

i-StudentCount+1);

\n\t学生学号:

"

%s"

S[i].Number);

if(strlen(S[i].Number)!

=8)

输入错误,请重新输入"

\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课程编号:

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];

break;

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"

%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\n"

}else

{printf("

fflush(stdin);

gets(y);

i++){

if(strcmp(S[i].Number,y)==0)

j++){

S[i].L[j].LessonNumber,S[i].L[j].LessonName,S[i].L[j].LessonMark,S[i].L[j].LessonCredit);

查找完毕...回车继续\n"

getchar();

选择错误...回车继续\n"

getchar();

return;

voidClass_Select()

doublex=0,y=0,z=0;

\n请输入课程编号:

学号\t\t课程名称\t课程成绩\t课程学分\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()

inti,j;

chara[100];

\n请输入读取的文件地址:

\\\\student.txt:

\n读取中\n"

r"

fscanf(fp,"

StudentCount);

{fscanf(fp,"

%s%s%d"

S[i].Number,&

S[i].Name,&

for(j=0;

%s%s%d%f"

S[i].L[j].LessonNumber,&

S[i].L[j].LessonName,&

S[i].L[j].LessonMark,&

\n读取成功...回车继续\n"

\n读取失败...回车继续\n"

}getchar();

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

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1