C语言学生成绩管理系统实训报告Word格式.docx
- 文档编号:17276893
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:27
- 大小:48.11KB
C语言学生成绩管理系统实训报告Word格式.docx
《C语言学生成绩管理系统实训报告Word格式.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统实训报告Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
而且只能通过界面菜单命令实现各种功能(包括系统退出功能)。
2)录入学生成绩(信息有:
班级、姓名、学号、五门课程成绩);
3)计算学生五门功课的平均成绩并存档。
下面的功能必须是第3)项功能完成以后才能进行。
4)输出学生的信息和对应的原始成绩以及平均成绩;
5)按平均成绩进行排序,输出排序后的学生信息以及对应的课程成绩和平均成绩。
6)对成绩修改,分别有两种模式,一种是按学号查找后进行修改;
另一种是按姓名查找后进行修改;
修改后重新排序学生的顺序,并输出学生信息和对应课程成绩和平均成绩。
7)增补遗漏的学生以及对应的信息和对应的课程成绩,并计算出平均成绩,增补以后重新排序学生顺序,并输出学生信息和对应课程成绩和平均成绩。
8)附加功能:
把学生信息和对应的课程成绩和平均成绩存入到文件中。
9)附加功能:
输出文件中的内容。
10)附加功能:
试着从文件中导入数据到成绩管理系统中,然后进行管理。
四、设计要求、技术参数及设计规格
1、设计的系统能够运行,基本功能实现;
2、撰写实训报告,实训报告中的内容包括:
1)软件需求分析;
2)软件规格说明和设计要求;
3)对数据的管理方案;
4)“学生成绩管理系统”设计的思路和整体框架;
5)各功能或者模块实现的思路(或者用带注释的程序代替)并交待模块之间的接口关系;
6)“学生成绩管理系统”设计的结果(可以用一些屏幕拷贝的图来补充说明)。
3、程序设计环境为TurboC++3.0或VisualC++6.0。
4、实训结束前提交纸质实训报告及其word文档、系统的源程序文件和可执行文件,将这三个文件压缩后以“学号后两位姓名”的形式命名,上传到FTP上自己所在班级对应的文件夹里。
FTP地址:
实训报告要求按以下顺序装订:
●封面
●简单目录
●任务书
●实训进度日历
●实训报告正文
●实训感想
●[附件]
6、所有的设计工作需要同学自己真实地、独立地完成。
五、工作量
天/日期
任务描述
通过标准
2010年12月27日
上午熟悉系统功能,
完成三项任务(用文档记录):
3)对数据的管理方案。
下午构思“学生成绩管理系统”的思路和整体框架。
设计数据结构(命名),设计函数框架(命名,考虑参数的类型和个数,即考虑数据之间的传递关系)
文档通过
方案通过
数据结构通过
设计的函数框架通过
2010年12月28日
设计被系统调用的main函数;
设计界面函数;
设计各功能子函数的框架;
要求数据传递接口正常,main函数能运行。
2010年12月29日
实现成绩录入功能;
实现计算平均成绩功能;
实现输出功能;
实现排序功能;
各子函数调试通过,能被main函数成功调用,其子功能能实现。
2010年12月30日
实现修改功能;
实现增补功能;
2010年12月31日
上午完善“成绩管理系统的各项功能”。
撰写实训报告。
实践能力强的同学实现附加功能:
输出系统中的成绩到文件中保存;
打印输出文件中的内容;
从文件中导入数据到成绩管理系统中;
下午:
继续写实训报告并且验收设计的项目。
系统能正确运行,界面友好);
各功能能够实现,性能良好操作方便。
备注:
做得慢的同学可以少实现一部分功能。
六、考核形式、考核时间、考核指标及成绩评定
实训成绩由下面构成:
实训纪律、实训态度和平时表现占20%;
实训结果占30%;
实训报告占30%;
实践操作能力占20%。
考核形式:
1)老师每日对学生的考察、评估和考核;
2)最后对实训项目完成的质量进行考核和验收。
完成期限:
年12月31日
指导教师签章:
专业负责人签章:
教学院长签章
年12月10日
实训进度日历
题目
学生成绩管理系统
指导教师
学生班级
软件学院级所有专业班级
学年学期
学年
第1学期
天
上午/下午
实训任务详细描述
教师实训任务的指导(解决方案、实现步骤、技术路线、难点提示)
年12月27日
上午
完成:
对软件功能进行分类。
用户界面操作简单、功能完备,系统启动后先录入数据,再求平均成绩;
平均成绩求出后,其他的功能才能实现。
数据结构可以采用数组也可以采用链表。
文档通过验收
下午
构思“学生成绩管理系统”的思路和整体框架。
如果采用数组管理数据结构,则数组必须按地址传递,这样数据才能在各个函数间共享。
难点1:
系统的退出,exit()函数需要包含stdlib.h
难点2:
清屏函数clrscr();
难点3:
数据的传递
设计的函数框架通过调试,
年12月28日
设计数据录入函数,从键盘读数据到数组中,或者创建链表
数据输入完后,怎样控制结束?
用一个什么标志。
难点2:
结构体数组中的子域又是一个数组时,数据不能直接从键盘读入,需用一个临时变量中转一下。
难点3:
从键盘录入数据时,要给完全的提示信息,便于操作指导。
各子函数调试通过,能被main函数成功调用
计算平均成绩的函数实现
难点4:
想一想:
在录入数据时数据保存到一数组,那么在算平均值时,怎样能接触到此数组中的数据。
各子函数调试通过,能被main函数成功调用。
年12月29日
输出原始成绩;
输出按照一定的格式,好看。
排序功能实现并输出排序后的成绩。
按平均成绩排序。
排序的算法可以是泡泡法或者选择法等
思考1:
你还可以分别在每个班中按平均成绩排序吗?
思考2:
能输出有不及格课程的同学信息和成绩吗?
年12月30日
能对某一学生信息和成绩进行修改;
可做附加功能1。
按姓名查找以后,再修改;
按学号查找以后,再修改;
如果要用对半查找法,需要数据是有序的。
难点:
怎样从键盘中把成绩存入文件。
能增加学生的信息;
可做附加功能2。
增加后重新排序,重新输出。
怎样从文件中读出数据
完成实训报告
清晰、明确、简单、评价合理、有自己的见解、创新。
实训报告要求装订整齐。
验收程序
讨论
实训报告
1.软件需求分析
(1)、成绩录入功能(信息有:
班级、姓名、学号、五门课程成绩)
(2)、求解学生个人平均成绩并存档
(3)、输出学生的信息和对应的原始成绩以及平均成绩
(4)、按平均成绩对学生信息进行排序,排序后重新输出
(5)、对成绩修改,分别有两种模式,一种是按学号查找和修改;
另一种是按姓名查找和修改;
修改后重新排序,并输出学生信息和成绩。
(6)、增补信息(个人信息和课程成绩)功能,并重新排序和输出。
(7)、附加功能,用文件对信息进行管理。
(8)、每次输入口令,系统接收时都要接收到“enter”,为保证程序正常运行每次输入后都要对键盘进行清空。
2.软件规格说明
(1)、系统用户界面尽量居中、美观,所有的命令简单有效。
(2)、具有人机交互功能;
(3)、通过菜单选择功能;
(4)、只能由菜单退出系统;
(5)、操作信息提示(界面友好);
(6)、拦截一些误操作错误;
(7)、按原始成绩格式输出。
3、系统框架和思路
(1)、功能分类,把一个问题分解为多个子问题。
(2)、考虑数据结构:
结构体数组;
结构体链表;
文件;
数据库文件。
(3)、功能逐步细化,自顶向下设计,最小的模块用函数实现。
(4)、先搭框架,用空函数实现。
(5)、计算平均成绩及最大最小,用到排序法,冒泡排序法适用于数组排序法。
(6)、运用switch语句,这样可以为用户提供具有选择性的多功能循环操作。
(7)、使用if()else语句实现一些选择操作
(8)、使用结构体表变量:
将不同类型的数据结合成一个有机整体
4、流程图
实训感想
总结:
通过这次实际操作,从开始的迷茫无知到现在的清晰思路,真正明白了它的用途,虽然还有很多不足之处,但是却感受到了不一样的思想方式,增加了我学习软件技术的兴趣,认识到了自己必须“路漫漫其修远兮,吾将上下而求索”。
这次实训是老师给了范例程序,经过自己的改写,基本实现了要求,感谢老师您对我们的指导及对您的无比的负责任表示深深的敬佩,谢谢您,老师!
在实际操作过程中对犯的一些错误还会有意外的收获,也渐渐的明白了C语言的真正用途。
在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,特别是对数组和循环有了深刻的理解,有一种收获良多的喜悦,而这一切都是老师您对我们的谆谆教诲,再次感谢您,老师!
附录
#include<
stdio.h>
stdlib.h>
string.h>
structstudent
{
charname[100];
charnum[3];
floatchinese;
floatc_program;
floatenglish;
floatmath;
floatsum;
floataverage;
};
structstudents[300];
intNumber=0;
intdq(structstudents[])
FILE*fp=NULL;
inti=0;
fp=fopen("
C:
student.dat"
"
rb"
);
while(fread(&
s[i],sizeof(structstudent),1,fp))
i++;
fclose(fp);
returni;
}
voidmenu()
printf("
\t*****************************************************************\n"
\t*\t\t\t\t\t\t\t\t*\n"
\t*\t\t\t欢迎使用学生成绩管理系统\t\t\t*\n"
\t*********************************\n"
\t*[1]增加学生信息\t\t[2]查看学生信息\t\t*\n"
\t*[3]查找学生成绩\t\t[4]删除学生信息\t\t*\n"
\t*[5]修改学生成绩\t\t[6]成绩排序\t\t*\n"
\t*[7]输出挂科人数及成绩\t[0]退出系统\t\t*\n"
\t*\t\t\t*\n"
voidbc(structstudent*s)
ab+"
fwrite(s,sizeof(structstudent),1,fp);
voidadd()
{
intn=0;
inti=0,j=0,k=0;
structstudentS;
\t请输入要增加学生成绩个数:
"
scanf("
%d"
&
n);
for(i=0;
i<
n;
i++)
{
k=0;
printf("
\t输入第%d个同学信息\n"
i+1);
\t请输入学生的姓名:
scanf("
%s"
S.name);
\t学号:
S.num);
for(j=0;
j<
Number;
j++)
{
if(strcmp(S.num,s[i].num)==0)
{
k=1;
}
}
if(k!
=0)
printf("
\t添加失败,学号重复!
\n"
else
\t[语文]成绩:
%f"
S.chinese);
\t[数学]成绩:
S.math);
\t[英语]成绩:
S.english);
\t[C语言设计]成绩:
S.c_program);
S.sum=S.chinese+S.math+S.english+S.c_program;
S.average=S.sum/4;
}
if(k==0)
s[Number++]=S;
bc(&
S);
\t\t\t\t==>
添加成功<
==\n\n"
}
voidselect()
inti=0,j=0;
j++;
\t以下是全部%d名学生的成绩:
j);
姓名\t学号\t语文\t数学\t英语\tC语言设计\t总成绩\t平均分\n"
%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\t\n"
s[i].name,s[i].num,s[i].chinese,s[i].math,s[i].english,s[i].c_program,s[i].sum,s[i].average);
}
voidxhxg()
charid[3];
intXH=-1;
\t请输入要修改的学生学号:
id);
i++)
{
if(strcmp(id,s[i].num)==0)
XH=i;
if(XH==-1)
\t不存在该学生信息!
else
\t姓名\t学号\t语文\t数学\t英语\tC语言设计\t总成绩\t平均分\n"
\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\n"
s[XH].name,s[XH].num,s[XH].chinese,s[XH].math,s[XH].english,s[XH].c_program,s[XH].sum,s[XH].average);
\t请重新输入该学生信息:
\t姓名:
s[XH].name);
s[XH].num);
if(strcmp(s[XH].num,s[j].num)==0&
&
XH!
=j)
\t修改失败,学号重复!
scanf("
s[XH].chinese);
s[XH].math);
s[XH].english);
s[XH].c_program);
s[XH].sum=s[XH].chinese+s[XH].math+s[XH].english+s[XH].c_program;
s[XH].average=s[XH].sum/4;
for(i=0;
{
fwrite(&
s[i],sizeof(structstudent),1,fp);
}
fclose(fp);
\t\t\t\t==>
修改成功<
==\n"
voidxmxg()
charname[60];
intXM=-1;
\t请输入要修改的学生姓名:
name);
for(i=0;
if(strcmp(name,s[i].name)==0)
XM=i;
if(XM==-1)
\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\n\n"
s[XM].name,s[XM].num,s[XM].chinese,s[XM].math,s[XM].english,s[XM].c_program,s[XM].sum,s[XM].average);
s[XM].name);
s[XM].num);
if(strcmp(s[XM].num,s[j].num)==0&
XM!
s[XM].chinese);
s[XM].math);
s[XM].english);
s[XM].c_program);
fp=fopen("
wb"
s[XM].sum=s[XM].chinese+s[XM].math+s[XM].english+s[XM].c_program;
s[XM].average=s[XM].sum/4;
=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统 报告