資源簡介
學生成績管理問題
問題描述:建立兩個學生成績信息表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-
評論
共有 條評論