学生成绩管理系统38Word文件下载.docx
- 文档编号:14527998
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:40
- 大小:404.65KB
学生成绩管理系统38Word文件下载.docx
《学生成绩管理系统38Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统38Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
03
68
82
56
露
04
56
45
77
东明
05
38
47
….
..
..
…
学生成绩信息文件2(2.txt),容如下:
学号
语文
数学
英语
果
31
57
华明
32
88
90
68
明东
33
48
42
56
明国
34
50
87
道亮
35
47
58
….
试编写一管理系统,要求如下:
1)实现对两个文件数据进行合并,生成新文件3.txt。
2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。
3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序法实现)。
4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找法实现)。
5)要求使用结构体,链或数组等实现上述要求。
6)采用多种法且算确者,可适当加分。
二、需求分析
本系统要现具体的五项功能,根据提供的这五项功能,运行时系统提供了相应的功能菜单,选择不同的选项来实现相应的功能。
1.采用了读文件和写文件的式,边读边写,合并两个文件成为一个文件。
2.采用结构体数组存入从文件中读入的数据,再通过对于数据中的相关成绩判断该学生是否需要补考,如果需要补考则将其信息写入另外一个文件。
3.采用快速排序、选择排序、冒泡排序的法按总分对学生数据进行排序。
4.采用了二种查找的法找到学生信息并输出。
5.通过调用函数exit(0)退出程序。
三、概要设计
1、实现对文件1.txt和文件2.txt数据进行合并,生成新文件3.txt。
调用函数Unitedfile()来实现,函数以读的式打开1.txt文件,以写的式打开3.txt文件,从1.txt读入一个数据并写入3.txt文件,直到遇到1.txt文件结束。
关闭1.txt文件,再以读的式打开2.txt文件,用上述式直到遇到2.txt文件结束。
关闭2.txt,3.txt文件。
实现对于文件的合并。
2、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。
调用函数findout()来实现。
函数以读的式打开3.txt文件,以写的式打开4.txt文件。
读入3.txt文件的一个数据到结构体stud中,判断学生信息中语文、数学和英语成绩中是否有不及格的,如果有,则将数据写入4.txt中,直至遇到3.txt文件结束。
3、对合并后的文件3.txt中的数据按总分降序排序。
调用函数sortfile()来实现。
函数提供了三种排序法,通过调用函数kuaisu()来实现快速排序,通过调用函数xuanze()来实现选择排序,通过调用函数maopao()来实现冒泡排序。
4、输入一个学生姓名后,能查找到此学生的信息并输出结果。
调用函数findoutstudent()来实现。
函数也提供了两种查找法:
(1)通过调用函数derectfindoutstudent()实现从文件从3.txt中逐个读入数据,再进行查找判断,如果找到所需要的数据,则查找结束,否则继续查找直至文件结束。
(2)autofindoutstudent()在进行第三步的过程中,已经把3.txt中的学生数据读入了结构体数组当中,调用函autofindoutstudent()直接从结构体中进行查找。
5、通过调用函数exit()退出。
main
findout()
sortfile()
findoutstudent()
exit()
Unitedfile()
Kuaisu()
Maopao()
Xuanzhe()
derectfindoutstudent()
autofindoutstudent()
四、详细设计
1.把1.txt和2.txt文件中的容放到3.txt文件中。
调用Unitedfile()文件,打开文件1和文件3,从1.txt中读入学生数据进结构体,把结构体中学生数据放到文件3中。
关闭文件1,从2.txt中读入学生数据进结构体,把结构体中学生数据放到文件3中。
关闭文件2和文件3。
voidUnitedfile(){
FILE*fp,*p;
Studentstud;
fp=fopen("
d:
\\1.txt"
"
r"
);
p=fopen("
\\3.txt"
w"
while(fscanf(fp,"
%s%s%d%d%d"
stud.name,stud.id,&
stud.chinese,&
stud.math,&
stud.english)!
=EOF)
{fprintf(p,"
%-6s%-6s%-6d%-6d%-6d\n"
stud.name,stud.id,stud.chinese,stud.math,stud.english);
}
fclose(fp);
\\2.txt"
fclose(p);
}
2.抽取出三科成绩中有分数低于60分的学生并保存在一个新文件4.txt
从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中
voidfindout(){
\\4.txt"
{if(stud.chinese<
60||stud.english<
60||stud.math<
60)
{fprintf(p,"
}
3.对文件3.txt中的数据按总分以降序进行排序(三种法:
选择排序、快速排序、冒泡排序)
voidsortfile()
{charc;
cout<
<
"
请选择排序法:
endl;
1.选择排序"
2.快速排序"
3.冒泡排序"
cin>
>
c;
switch(c)
{case'
1'
:
xuanze();
//选择排序
break;
case'
2'
kuaisu();
//快速排序
case'
3'
maopao();
//直接插入排序
}}
3.1选择排序
voidxuanze()
{intj,k,max1,sum1,sum2,q;
i=0;
Studenttemp;
FILE*fp;
stud[i].name,stud[i].id,&
stud[i].chinese,&
stud[i].math,&
stud[i].english)!
{i++;
}fclose(fp);
for(j=0;
j<
i;
j++)
stud[j].sum=stud[j].chinese+stud[j].math+stud[j].english;
i-1;
j++)//对结构体数组中的数据进行选择排序
{max1=j;
sum1=stud[j].sum;
for(k=j+1;
k<
k++)
{
sum2=stud[k].sum;
if(sum1<
sum2)
{max1=k;
sum1=sum2;
}
}
if(max1!
=j)
temp=stud[max1];
stud[max1]=stud[j];
stud[j]=temp;
stud[j].sum=sum1;
//将排序后的数据写入3.txt中
for(q=0;
q<
q++)
{fprintf(fp,"
%-8s%-8s%-8d%-8d%-8d%-8d\n"
stud[q].name,stud[q].id,stud[q].chinese,stud[q].math,stud[q].english,stud[q].sum);
3.2快速排序
voidkuaisu()
{inti,low,high;
{stud[i].sum=stud[i].chinese+stud[i].math+stud[i].english;
i++;
low=0;
high=i-1;
QSort(low,high);
for(intj=0;
stud[j].name,stud[j].id,stud[j].chinese,stud[j].math,stud[j].english,stud[j].sum);
3.3冒泡排序
voidmaopao()
{intj,k,q;
stud[i].name,st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 38
![提示](https://static.bdocx.com/images/bang_tan.gif)