C语言课程设计实习报告学生成绩管理系统.docx

上传人:b****3 文档编号:2145661 上传时间:2022-10-27 格式:DOCX 页数:35 大小:327.15KB
下载 相关 举报
C语言课程设计实习报告学生成绩管理系统.docx_第1页
第1页 / 共35页
C语言课程设计实习报告学生成绩管理系统.docx_第2页
第2页 / 共35页
C语言课程设计实习报告学生成绩管理系统.docx_第3页
第3页 / 共35页
C语言课程设计实习报告学生成绩管理系统.docx_第4页
第4页 / 共35页
C语言课程设计实习报告学生成绩管理系统.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C语言课程设计实习报告学生成绩管理系统.docx

《C语言课程设计实习报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实习报告学生成绩管理系统.docx(35页珍藏版)》请在冰豆网上搜索。

C语言课程设计实习报告学生成绩管理系统.docx

C语言课程设计实习报告学生成绩管理系统

 

C语言课程设计上机实习报告

学生成绩管理系统

 

课程设计的题目与要求

设计学生成绩管理系统:

1.学生成绩信息包括:

学号,姓名,性别,出生年月,四门课程的成绩(英语,数学,C语言,物理)等。

2.系统能完成以下功能:

1).读取原始数据内容,保存在对应结构体数组中,然后显示菜单,利用菜单调用个函数。

2).实现查询,排序,添加,修改,删除等功能。

功能要求:

1).实现查询显示功能:

按姓名查询按性别查询显示全部信息。

将满足条件的学生信息显示屏幕上。

2).计算每个同学的总成绩,并重写入另一个文本文件中。

3).实现排序功能:

按姓名排序按总成绩排序,将排序后的所有学生的信息显示在屏幕上。

4).实现添加功能:

录入新的学生信息。

在录入新的学生信息前,首先判断是否在,如果不存在,则可进行数据录入并依次输入学生的相关信息;否则提示不能进行添加操作。

5).实现删除功能:

先输入学生学号,若系统中有此学生的信息,则删除该学生的所有信息;否则提示系统中无此学生的信息。

6).实现修改功能:

先输入要修改的学生的学号,如果该学生存在,则根据需要修改学生信息;否则提示系统中无此学生的信息。

7).计算每个学生的加权平均分并根据其是否大于60分别写入两个文本。

课程设计题目功能

1.系统功能模块框图设计

本程序将用到结构体数组和对文件的操作。

程序运行后先要录入学生的信息(班级、学号、姓名、四门课的成绩),用结构体数组保存分类信息。

另外在程序中要实现查询显示等功能则需要菜单选择来调用实现各个功能的子函数。

由此可以将本系统分为如下几个部分:

读取学生信息,按姓名查询,按性别查询,计算总成绩,按姓名排序,按总成绩排序,录入新的学生信息,删除学生信息,修改学生信息,计算加权平均分等。

其中个函数通过菜单函数实现。

退出

计算每个学生的加权平均分

修改学生信息

删除学生信息

录入新的学生信息

按姓名排序

计算每位同学的总成绩

显示菜单

(menu)

主函数

(main)

按总成绩排序

按性别查询学生信息

按姓名查询学生信息

读取学生信息

以下为系统功能模块框图:

2.数据结构说明及详细设计

1.定义一个结构体来保存原始数据。

structstudent//------------------------学生信息结构体

{

longnum;//-----------------------------学号

charname[7];//-------------------------姓名

charsex[3];//--------------------------性别

chardate[13];//------------------------出生日期

intscore[N];//-------------------------各科成绩

intsum;//------------------------------总成绩

doubleave;//---------------------------加权平均分

}st[M];

2.菜单函数Menu输出菜单。

printf("**************************\n");

printf("|学生成绩管理系统|\n");

printf("**************************\n");

printf("|1.读取学生信息|\n");

printf("|2.按姓名查询|\n");

printf("|3.按性别查询|\n");

printf("|4.计算每位同学的总成绩|\n");

printf("|5.按姓名排序|\n");

printf("|6.按总成绩排序|\n");

printf("|7.录入新的学生信息|\n");

printf("|8.按学号删除|\n");

printf("|9.修改学生信息|\n");

printf("|10.计算每个学生的加权平均分|\n");

printf("|0.退出|\n");

printf("***************************\n");

通过printf函数输出菜单

3.ReadDat函数读取学生信息。

if((fp=fopen("tx0126.txt","r"))==NULL)

{

printf("文件打开错误!

\n");

return;

}

通过指针打开tx0126文本文件

fgets(str1,100,fp);

printf("%s",str1);

fgets函数读取tx0126文件的表头并输出

for(i=0;i

{

fscanf(fp,"%d%s%s%s",&st[i].num,st[i].name,

st[i].sex,st[i].date);

printf("%d%7s%5s%13s",st[i].num,st[i].name,

st[i].sex,st[i].date);

for(j=0;j

{

fscanf(fp,"%d",&st[i].score[j]);

printf("%7d",st[i].score[j]);

用for循环通过fscanf函数读出tx0126的具体内容,然后通过printf函数将具体内容显示在屏幕上

流程图如下:

输出全部信息

错误!

提示:

打开失败!

正确!

测定每个文件数量是否到最后

指针链接文件,判断是否正确打开

 

读取学生信息

关闭文件

 

4.CheckName按姓名查询。

if(!

strcmp(name,st[i].name))

判断是否有与所输入的姓名相同的学生。

然后通过for循环用printf函数输出查询内容。

输入查询内容

流程图如下:

输入要查询的内容

(姓名,性别)

 

将输入的内容与源文件进行比较

 

未找到相同的。

提示:

未找到指定项。

找到相同的。

输出该文件的全部信息

 

退出

5.CheckSex按性别查询。

if(!

strcmp(sex,st[i].sex))

判断是否有与所查性别相同的学生。

然后通过for循环用printf函数输出查询内容。

流程图同模块4

6.TotalScore函数计算总成绩。

if((fp=fopen("ts0126.txt","w"))==NULL)

{

printf("文件打开错误!

\n");

return;

}

通过指针打开ts0126文本文件

fprintf(fp,"学号姓名性别出生年月英语数学C语言物理总成绩\n");

for(i=0;i

{fprintf(fp,"%d%7s%5s%13s",st[i].num,st[i].name,

st[i].sex,st[i].date);

for(j=0;j

{

fprintf(fp,"%9d",st[i].score[j]);

sum=sum+st[i].score[j];

}

fprintf(fp,"%7d\n",sum);

sum=0;//计算完后sum必须归0;否则,后面学生总成绩的结果将是前面学生总成绩的和

}

fclose(fp);

通过for循环计算出每位学生的总成绩,用fprintf函数将计算出的结果及学生原始信息写入ts0126文件,最后fclose函数关闭。

流程图如下:

计算总成绩

指针链接文件,判断是否正确打开

 

错误:

提示:

打开失败!

正确!

将表头写入文件

 

 

For循环计算总成绩

 

将结果重新写入文件

 

关闭

 

7.SortByname按姓名排序

structstudentstu[M];

structstudentt;

inti,j;

for(i=0;i

stu[i]=st[i];

建立一个student副本

for(i=0;i

{

for(j=i+1;j

{

if(strcmp(stu[i].name,stu[j].name)>0)

{

t=stu[i];

stu[i]=stu[j];

stu[j]=t;

}

用if函数比较每位同学姓名的ASIC码,再通过两个for循环将所有学生行重新排序,最后用printf函数将排好序的学生信息输出在屏幕上。

流程图:

排序

输入排序标准

(姓名、总成绩)

For循环与if结构对各项进行比较并交换顺序

 

输出

8.SortBySore按总成绩排序。

structstudentstu[M];

structstudentt;

inti,j,sum1=0,sum2=0,n;

for(i=0;i

stu[i]=st[i];

重新建立一个student副本

for(i=0;i

{

for(j=i+1;j

{

for(n=0;n

sum1=sum1+stu[i].score[n];

for(n=0;n

sum2=sum2+stu[j].score[n];

if(sum1

{

t=stu[i];

stu[i]=stu[j];

stu[j]=t;}

通过两个for循环计算出每位同学的总成绩并通过if函数比较每位学生的总成绩进行排序,最后用print函数将排好序的学生信息输出在屏幕上

流程图同模块7!

9.AddStudent函数录入新的学生信息。

if(number==stu[j].num)

{

printf("\n\n该学生已存在,请重新输入!

!

!

");

gotoloop;

}

判断要添加的学生是否存在;若存在,通过goto函数loop处重新输入;若不存在,

执行后面的添加项;

if((fp=fopen("tx0126.txt","w"))==NULL)

{

printf("打开失败\n");

return;

}

用指针打开tx0126文件

for(j=0;j

{printf("%d%73ss%5s%1%9d%9d%9d%9d\n",st[j].num,

st[j].name,st[j].sex,st[j].date,st[j].score[0],st[j].score[1],st[j].score[2],st[j].score[3]);

fprintf(fp,"%d%7s%5s%13s%9d%9d%9d%9d\n",st[j].num,

st[j].name,st[j].sex,st[j].date,st[j].score[0],

st[j].score[1],st[j].sco

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

当前位置:首页 > 农林牧渔 > 林学

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

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