资源简介

学生成绩管理问题 问题描述:建立两个学生成绩信息表1、2,以文件的形式分别进行存储命名为1.txt和2.txt,然后实现将两个文件合并成一个新的文件3.txt。 新文件中有补考的学生查找到,存储到另一个文件4.txt中。 基本要求: 1、学生成绩信息表至少包含姓名、学号、语文成绩、数学成绩、英语成绩、总分。 2、合并后的文件3.txt中的数据要按照总分进行降序排序。(排序方法为直接插入排序) 3、根据学生姓名和学号应该能查到学生的各科成绩。(查找方法为折半查找) 4、存储结构为顺序表。

资源截图

代码片段和文件信息

/*需求:
学生成绩管理问题
    问题描述:建立两个学生成绩信息表1、2以文件的形式分别进行存储命名为1.txt和2.txt然后实现将两个文件合并成一个新的文件3.txt。
新文件中有补考的学生查找到,存储到另一个文件4.txt中。
    基本要求:
      1、学生成绩信息表至少包含姓名、学号、语文成绩、数学成绩、英语成绩、总分。
      2、合并后的文件3.txt中的数据要按照总分进行降序排序。(排序方法为直接插入排序)
      3、根据学生姓名和学号应该能查到学生的各科成绩。(查找方法为折半查找)
  4、存储结构为顺序表。
***************************************************************************************************************************** 
knocker:1.void read(char str[40]);读取文本
2. Status InitList(SqList *L); 构造空的顺序表 L 
3 Status fuzhi_sq(SqList *LSqList *L3); 将txt12中的数据传到顺序表中
4.void InsertSort(SqList &L);直接插入排序
5.void Create(SqList &Lchar str[40]); 生成txt34
6. void find_bukao(SqList &LSqList &L2); 找出补考学生 
7.int Search_id(SqList &Lchar k[]);根据学号查找 (折半查找)
8.int Search_name(SqList &Lchar k[]);按姓名查找 
9.void tianjia_stu(ElemType echar str[40]); 添加学生信息
10.void Delete_stu(SqList &Lint idint n); 删除学生信息 
11.void Xiugai_stu(SqList &Lint id);修改学生信息
12.void Output(SqList &L);显示学生信息 
*****************************************************************************************************************************
*/ 
#include
#include
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
float sum;
char str1[20]={“D:\\1.txt“};
char str2[20]={“D:\\2.txt“};
char str3[40]={“D:\\3.txt“};
char str4[40]={“D:\\4.txt“};
typedef int Status; // 定义函数返回值类型

 struct student
{
char num[10]; // 学号
char name[20]; // 姓名
int chinese; //语文成绩 
int math;//数学成绩
int English;//英语成绩
int sum;//总分 
}*p*qus[3]r[MAXSIZE]c[MAXSIZE];
 
typedef student ElemType;
//顺序表 
typedef struct
{
ElemType *elem; // 存储空间的基地址 
int length; // 当前长度 
}SqList;
Status fuzhi_sq(SqList *L);
//读取文档12 
void read(char str[40])
{
FILE *fp;
int i;
p=c;
if((fp=fopen(str“rt“))==NULL)
{
printf(“cannot open this file\n“);

exit(0);
}
printf(“姓名\t学号\t语文\t数学\t英语\t总分\n“);
for(i=0;!feof(fp);i++p++)
fscanf(fp“%s\t%s\t%d\t%d\t%d\t%d\n“&p->name&p->num&p->chinese&p->math&p->English&p->sum);
fclose(fp);
for(int j=0;j printf(“%s\t%s\t%d\t%d\t%d\t%d\n“c[j].namec[j].numc[j].chinesec[j].mathc[j].Englishc[j].sum);


 } 
Status InitList(SqList *L) // 构造空的顺序表 L 
{
L->elem=(ElemType *)malloc(sizeof(ElemType)*MAXSIZE);
if(!L->elem)  exit(OVERFLOW);
L->length=0;
return OK;
}
//将txt12中的数据传到顺序表中 
Status fuzhi_sq(SqList *LSqList *L3) 
{

FILE *fp;
//把txt1内容输到数组s[3] 
int ik;
p=s;
if((fp=fopen(str1“rt“))==NULL)
{
printf(“cannot open this file\n“);

exit(0);
}
for(i=0;!feof(fp);i++p++)
fscanf(fp“%s\t%s\t%d\t%d\t%d\t%d\n“&p->name&p->num&p->chinese&p->math&p->English&p->sum);
fclose(fp);

//把txt2内容输到数组r[3] 
int jnm;
q=r;
if((fp=fopen(str2“rt“))==NULL)
{
printf(“cannot open this file\n“);

exit(0);
}
for(n=0;!feof(fp);n++q++)
fscanf(fp“%s\t%s\t%d\t%d\t%d\t%d\n“&q-

评论

共有 条评论