C语言实训报告学生成绩管理系统文件实现Word下载.docx

上传人:b****6 文档编号:17521809 上传时间:2022-12-07 格式:DOCX 页数:27 大小:274.66KB
下载 相关 举报
C语言实训报告学生成绩管理系统文件实现Word下载.docx_第1页
第1页 / 共27页
C语言实训报告学生成绩管理系统文件实现Word下载.docx_第2页
第2页 / 共27页
C语言实训报告学生成绩管理系统文件实现Word下载.docx_第3页
第3页 / 共27页
C语言实训报告学生成绩管理系统文件实现Word下载.docx_第4页
第4页 / 共27页
C语言实训报告学生成绩管理系统文件实现Word下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言实训报告学生成绩管理系统文件实现Word下载.docx

《C语言实训报告学生成绩管理系统文件实现Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实训报告学生成绩管理系统文件实现Word下载.docx(27页珍藏版)》请在冰豆网上搜索。

C语言实训报告学生成绩管理系统文件实现Word下载.docx

假设系统中每个学生记录只包括学号、姓名、平时成绩、

期末成绩、总评成绩、总分、平均分、名次等信息。

程序的运行效果如上图图所示,选择任意菜单后,实现相应功能。

具体结构体设定请见以后。

程序初始主界面截图如下:

****:

4:

^>

|0^#****:

**:

(:

**#*:

4:

**4c****□(■:

*d|c.d|cd|zd|cj|c4c:

d|c3|cd|c.d{c^zd|c

:

垮毂曙诊熬秫吾曹;

成绩蹇分总询询及平羣查杳生生需II记学号列文你单入蔓亍姓WW出出入

在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。

2、系统设计

2.1总体设计

本管理系统的程序主要由C语言编写,考虑到各方面的维护和需求实现考

虑,程序代码总体上采用模块化编程方式设计以及编写。

即将一个大的功能需求分作几个小模块来配合实现,为了降低添加和维护功能和需求的成本和时间。

尽量不依赖于C语言全局变量而是通过函数调用之间的参数来传递数据。

2.2函数预览

1)主函数

introainCX

调用其他不同功能

2)主菜单函数

lntltenu(uoid){

输出显示界面

3)新建信息函数1(手写输入)

lUjiriRpjiflfinZFfili1ni~n.in十inb

手动输入学生的成绩信息,包括学号、姓名、平时成绩、总评成绩

4)新建信息函数2(文件输入)

uoidReadjdatal(STUstu[]rintn^inta,intb)

通过文件导入学生成绩信息

5)计算成绩函数

uoidTotal^mark^STUstn[],intn,inta.lntb)

计算学生试卷分数的总评成绩

6)查询成绩函数1(按学号)

uoidSortbpnum(STUstu[],intn)

按学号查询学生试卷的总评成绩

7)查询成绩函数2(按姓名)

uoidSortbj/ndnie(STUstu[]sintn)

8)计算成绩函数1(计算总成绩的及格率和优秀率)

voidCount_pa55<

STU5tu[].intn)

计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数

9)计算成绩函数2(计算总成绩的平均分和标准差)

voidCount_auerage(STUstu[]rintn){

■■■

计算学生总评成绩的平均分和标准差

10)输出成绩函数

voidShowdata($TUstu[].intn)

输出全班学生的所有成绩,包括学号、姓名、总评成绩

11)导出成绩函数

voidVrited日tstu[intri)

将学生所有成绩的列表导出到文本score.txt中

3、系统实现

3.1功能模快(附代码)

1)主函数

intmain(){

STUstu[SIZE];

intn,a,b;

charch;

intoh;

printf("

\t\t********************************************\n"

);

printf("

\t\t\t*欢迎使用*\n"

\t\t\t*学生试卷分数统计系统可*编辑p"

);

while

(1)

r

精品

ch=Menu();

switch(ch)

{case1:

printf(”请输入学生人数n(n<

=%d):

"

SIZE);

scanf("

%d"

&

n);

printf(”请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表

示,满分100分):

\n"

scanf("

%d%d"

&

a,&

b);

printf("

以下有两种输入试卷分数的方式:

\n***1.手动输入试卷分数\t2.从

student.txt文件中导入试卷分数***\n"

oh);

1)输入限定switch(°

h)

{

case1:

Read_data(stu,n,a,b);

break;

case2:

Read_data1(stu,n,a,b);

break;

default:

输入菜单序号错误!

}break;

Total_mark(stu,n,a,b);

case3:

Sortbynum(stu,n);

case4:

Sortbyname(stu,n);

case5:

Count_pass(stu,n);

case6:

Count_average(stu,n);

case7:

Show_data(stu,n);

case8:

Write_data(stu,n);

case0:

\t\t********************************************\n"

\t\t\t*感谢使用*\n"

\t\t\t*学生试卷分数统计系统*\n"

exit(0);

输入菜单序号错误!

}

return0;

2)主菜单函数

率差

成绩鑒吞

总询询羣查查生生春-

—记rlr^s-于列文-

/*函数功能:

显示菜单并获得用户键盘输入的选项*/

intMenu(void){

intitemSelected;

\n【菜单】\n"

1.输入记录\n"

2•计算学生总评成绩\n”);

3.按学号查询成绩\n”);

4.按姓名查询成绩\n”);

5•计算学生及格率和优秀率\n"

6•计算学生平均分和标准差\n"

7.成绩列表\n"

8.导出文件\n"

0.退出\n”);

printf("

请输入你的选择:

scanf("

itemSelected);

/*读入用户输入*/returnitemSelected;

3)限定功能模块

躍蕭册騙占总林昨吐隔满分咧;

限定(或者说确定)学生的人数和总评成绩的计算方式

printf(”请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表示,满分100分):

可编辑

a,&

b);

可编辑

4)新建成绩函数1(手动输入)

审给人羣生平时成绩宵期末成绩所占总评成绩的的比例(用删夷示.满分10盼):

B0

脸鸦眈鶴響的Jfewdent.txt文件中导人试卷分数*卅

1

青输入学土的学号、姓缶平时成绩和期末成绩(逗号隔开):

1651500101,位,23,56

1651500102,,氨33,67

手动输入分数*/

voidRead_data(STUstu[],intn,inta,intb)

inti=0;

printf(”请输入学生的学号、姓名、平时成绩和期末成绩(逗号隔开):

\n"

for(i=0;

i<

n;

i++)

scanf("

%ld,%s,%d,%d"

stu[i].num,&

stu[i].name,&

stu[i].score[0],&

stu[i].score[1]);

stu[i].score[2]=stu[i].score[0]*a/100+stu[i].score[1]*b/100;

5)新建成绩函数2(文件输入)

『入薩嚮時蹶诙所占总评祗的卅(用酬林耐瑚):

出忑鹑敝廳鬻的魏;

如血丄仃七文件中导入试卷分數十

1.蹴“记录

II凸-订i_Lg°

輪熒祢的选#匹

^E:

1651500101

S:

1651500102±

1651500103F±

:

16E1500104:

$11651500105f:

16E15D0106^z:

1651500107£

16E150010B^=:

16515D0109E:

16B15DO11D1651500111^E:

1651500112

从文本student.txt中导入试卷分数*/

voidRead_data1(STUstu[],intn,inta,intb)

inti;

FILE*fp;

if((fp=fopen("

student.txt"

"

r"

))==NULL)

打开文件student.txt失败!

!

feof(fp);

fscanf(fp,"

%ld"

stu[i].num);

%s"

stu[i].name);

stu[i].score[0]);

fclose(fp);

6)计算成绩及输出函数

计算学生试卷分数的总评成绩*/

voidTotal_mark(STUstu[],intn,inta,intb)

i<

n;

stu[i].score[2]=stu[i].score[0]*a/100+stu[i].score[1]*b/100;

printf(”学生:

%ld\t姓名:

%s\t总评成

绩:

%d\n"

stu[i].num,stu[i].name,stu[i].score[2]);

7)查询成绩函数1(按学号)

按学号查询学生试卷的总评成绩*/

voidSortbynum(STUstu[],intn)

number);

for(i==0^<

ni]++m==number)

学号:

%ld\t姓名:

%s\t平时成绩:

%d\t期末成绩:

%d\t总评成绩:

stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

return;

抱歉,没有找到!

\n”);

8)查询成绩函数2(按姓名)

期末甌辭:

34忌评咸绩:

5

55

s

忌询询a』f生牛乘—记学号亶A于列交MAHWlsiAA!

1|1.|2,|3,去5,|6.7.[8.

名:

B

■iJr--TRr;

■■■宁2ii找on的杏15你更笛

按姓名查询学生试卷的总评成绩*/

voidSortbyname(STUstu[],intn)

charnamed[10];

printf(”请输入要查找的学生姓名:

named);

9)计算成绩函数1(计算总成绩的及格率和优秀率)

计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数*/

voidCount_pass(STUstu[],intn)

inti,pass_num,t[4];

floatpassrate;

memset(t,0,sizeof(t));

if(stu[i].score[2]<

60)t[0]++;

elseif(stu[i].score[2]<

=75)t[1]++;

=85)t[2]++;

=100)t[3]++;

pass_num=t[1]+t[2]+t[3];

passrate=(float)(t[1]+t[2]+t[3])/n;

及格人数:

%d\n"

pass_num);

优:

%d\t良:

%d\t中:

%d\t差:

t[3],t[2],t[1],t[0]);

总评成绩及格率:

%.2f\n"

passrate);

总评成绩优秀率:

(float)t[3]/n);

2(计算总成绩的平均分和标准差)

总评成绩标准差I

45

6

■■I

选均

的平

氤询询

i查查主生需]记学号嘉于列文单人皐姓算WW3岀菜星输评

计算学生总评成绩的平均分和标准差*/

voidCount_average(STUstu[],intn){

doublesum=O,aver,temp=O,standard;

sum=stu[i].score[2]+sum;

aver=(float)sum/n;

{temp=(stu[i].score[2]-aver)*(stu[i].score[2]-aver)+temp;

}

11)输出成绩函数

评成结

^s.

■1-

6.

7.

8.

0,LiuLi

1o

754026612518842_b59_yl2

firH绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绮成專成專專成慘?

^成的成成nr-nr-nr^^1^^1%_l、nk、T、nkIT、「、「、T37%T航“呂」国E営屮匚片言匕啟邑匕占呂匕he.p=p.l1£

l4、一一岀氐鼠一CTWII-—•—■—•—■—•——•——•Jl-JI'

i-ii-JJ

54

34

25

42

76

39

31

58

38

75

W:

18

S3

63

成馈

•-怛挥

「•二•二•二•二•二一.-.--7^-••--■.二二-.二ly一/-2-!

■■•一••二!

■■■耳貝貝貝耳冃貝封効耳貝耳乍貝貝貝吕•貝到

_u53COE30ILIDDpCMCM吐1CMCpOQ4424654015510^^978324-49912成戍感戍戍应威廉戍成戍戍戍戍应应磁戍

ALCDEFCHI.-ELMHOroESTU«

卸"

务各并-S:

§

R衾召力:

□:

主瑜L祢的选择存

165150010】

16E1500102:

1651500103:

16B1E00104

1651500105:

165150010E

1651500107

1651500108:

lCBlEOOlOQ

1651500110

16B15001U

1651500112I:

16B1E00113]:

1651500114

1651E0011E:

1651500116'

1651500117:

165150011S'

1651500115

16E1E00120'

输出全班学生的所有成绩*/

voidShow_data(STUstu[],intn)

printf(”学号:

%ld\t姓名:

%s\t平时成绩:

%d\t期末成绩:

%d\t总评成

1绩导出成绩函数hum,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

=J-hrTfi---?

Sr.31

将学生所有成绩的列表导出到文本score.txt中*/

voidWrite_data(STUstu[],intn)可编辑

3.1全部实现代码

#include<

stdio.h>

string.h>

stdlib.h>

conio.h>

math.h>

#defineSIZE100

typedefstructstudent{

longnum;

charname[10];

intscore[3];

}STU;

intMenu(void);

voidRead_data(STUstu[],intn,inta,intb);

voidRead_data1(STUstu[],intn,inta,intb);

voidTotal_mark(STUstu[],intn,inta,intb);

voidSortbynum(STUstu[],intn);

voidSortbyname(STUstu[],intn);

voidCount_pass(STUstu[],intn);

voidCount_average(STUstu[],intn);

voidShow_data(STUstu[],intn);

voidWrite_data(STUstu[],intn);

intmain(){

while

(1)

switch(ch)case1:

请输入学生人数n(n<

请输入学生平时成绩与期末成绩所占总评成绩

的的比例(用整数表示,满分100分):

以下有两种输入试卷分数的方式:

\n***1.手动

输入试卷分数\t2.从student.txt文件中导入试卷分数***\n"

switch(oh)

Read_data(stu,n,a,b);

Read_data1(stu,n,a,b);

输入菜单序号错误!

}

Total_mark(stu,n,a,b);

Sortbynum(stu,n);

Sortbyname(stu,n);

Count_pass(stu,n);

Count_average(stu,n);

Show_data

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

当前位置:首页 > 高中教育 > 英语

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

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