资源简介
学生选题信息
题目序号为: 029
题目为:
学生成绩管理系统
题目内容为:
学生成绩管理系统(限1 人完成)
现有学生成绩信息文件1(1.txt),内容如下
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
…. .. .. .. …
学生成绩信息文件2(2.txt),内容如下:
姓名 学号 语文 数学 英语
陈果 31 57 68 82
李华明 32 88 90 68
张明东 33 48 42 56
李明国 34 50 45 87
陈道亮 35 47 58 77
…. .. .. .. …
试编写一管理系统,要求如下:
1) 实现对两个文件数据进行合并,生成新文件3.txt
2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)
4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)
5) 要求使用结构体,链或数组等实现上述要求.
6) 采用多种方法且算法正确者,可适当加分.
代码片段和文件信息
#include
using namespace std;
#define SIZE 100
//存放学生数据的结构体
typedef struct
{
char name[8];
char id[2];
int chinese;
int math;
int english;
int sum;
}Student;
Student stud[SIZE];
int i;
int sign=0sign1=0sign2=0sign3=0;
void Unitedfile()//合并1.txt和2.txt为3.txt
{
FILE *fp*p;
Student studd;
fp=fopen(“1.txt““r“);//以读的方式打开1.txt
p=fopen(“3.txt““w“);//以写的方式打开3.txt
while(fscanf(fp“%s%s%d%d%d“studd.namestudd.id&studd.chinese&studd.math&studd.english )!=EOF)
{
fprintf(p“%-6s %-6s %-6d %-6d %-6d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english );
}//读取1.txt的数据进入结构体中,写入3.txt,继续读取直结束
fclose(fp);//关闭文件1.txt
fp=fopen(“2.txt““r“);//以写的方式打开2.txt
while(fscanf(fp“%s%s%d%d%d“studd.namestudd.id&studd.chinese&studd.math&studd.english )!=EOF)
{
fprintf(p“%-6s %-6s %-6d %-6d %-6d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english );
}
fclose(fp);
fclose(p);
}
void findout()//抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
{
FILE *fp*p;
Student studd;
fp=fopen(“3.txt““r“);
p=fopen(“4.txt““w“);
while(fscanf(fp“%s%s%d%d%d“studd.namestudd.id&studd.chinese&studd.math&studd.english )!=EOF)
{
if(studd.chinese<60||studd.english<60||studd.math<60)
{
fprintf(p“%-6s %-6s %-6d %-6d %-6d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english );
}
}//从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中
fclose(fp);
fclose(p);
}
void xuanze() //对合并后的文件3.txt中的数据按总分降序排序
{
int jkmax1sum1sum2q;
i=0;
Student temp;
FILE *fp;
fp=fopen(“3.txt““r“);
i=0;
while(fscanf(fp“%s%s%d%d%d“stud[i].namestud[i].id&stud[i].chinese&stud[i].math&stud[i].english )!=EOF)
{
i++;
}//从3.txt中读入数据进结构体数组stud中
fclose(fp);
for(j=0;j {
max1=j;
sum1=stud[j].math+stud[j].english+stud[j].chinese;
for(k=j+1;k {
sum2=stud[k].math+stud[k].english+stud[k].chinese;
if(sum1 {
max1=k;
sum1=sum2;
}
}
if(max1!=j)
{
temp=stud[max1];
stud[max1]=stud[j];
stud[j]=temp;
}
stud[j].sum=sum1;
}
fp=fopen(“3.txt““w“);//将排序后的数据写入3.txt中
for(q=0;q {
fprintf(fp“%-8s %-8s %-8d %-8d %-8d %-8d\n“stud[q].namestud[q].idstud[q].chinesestud[q].mathstud[q].englishstud[q].sum );
}
fclose(fp);
}
int Partition(int lowint high)
{
int pivotkey;
Student temp;
temp=stud[low];
pivotkey=stud[low].sum;
while(low {
while(low stud[low]=stud[high];
while(low=pivotkey)++low;
stud[high]=stud[low];
}
stud[low]=temp;
return low;
}
void QSort(int lowint high)//快速排序
{
int privotloc;
if(low {
privotloc=Partition(lowhigh);
QSort(lowprivotloc-1);
QSort(privotloc+1high);
}
}
void kuaisu()//读取文件,快速排序,将结果写入3.txt
{
int ilowhigh;
FILE *fp;
fp=fopen(“3.txt““r“);
i=0;
while(fscanf(fp“%s%s%d%d
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1113 2010-04-28 17:40 试题.in
文件 111616 2010-06-04 19:01 数据结构课程设计---周鹏华.doc
文件 7026 2010-06-04 18:55 2.cpp
----------- --------- ---------- ----- ----
119755 3
- 上一篇:c++课程设计宾馆客房管理系统
- 下一篇:数据结构课程设计扑克牌排序
相关资源
- c++版学生成绩管理系统实验报告及源
- C++学生成绩管理系统 2018
- C++学生成绩管理系统( 毕业设计)
- C++学生成绩管理系统97917
- 学生成绩管理系统 (C语言版)课程设
- 课程设计--C语言学生成绩管理系统内
- 学生成绩管理系统MFC版
- 基于MFC设计,学生成绩管理系统,课
- 学生成绩管理系统C++源码
- 学生成绩管理系统 c语言毕业设计论文
- MFC学生成绩管理系统
- MFC学生成绩管理系统论文及源代码
- 用mfc编写的学生成绩管理系统含代码
- 学生成绩管理系统基于文件的MFC mfc学
- 学生成绩管理系统~ado mfc vc6.0
- MFC+Access2003学生成绩管理系统
- 学生成绩管理系统C++附报告
- C++ 学生成绩管理系统125548
- c++课程设计学生成绩管理系统含源代
- C语言开发简单的学生成绩管理系统
- C++写的连接SQL的学生成绩管理系统
- C++与access开发的DOS版学生成绩管理系
- MFC(VC6.0和VS2008)采用ADO访问access数据
- 基于数据库的学生成绩管理系统
- C语言-CodeBlocks-学生成绩管理系统.zi
- 五邑大学面向对象C++之MFC实验 学生成
- MFC课程设计 --学生成绩管理系统
- 学生成绩管理系统C语言版
- 学生成绩管理系统VC6.0_MFC实现
- MFC学生成绩管理系统功能全面版
评论
共有 条评论