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

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

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

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

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

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();

}

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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