• 大小: 52KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-03
  • 语言: C/C++
  • 标签:

资源简介

学生选题信息 题目序号为: 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


评论

共有 条评论