|
|
|
|
/*<2A>ɼ<EFBFBD><C9BC><EFBFBD>ӡ*/
|
|
|
|
|
void PrintScore(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Lnode *p = h->next;
|
|
|
|
|
printf("%-14s%-8s%-8s%-8s%-8s%-8s\n","<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "ѧ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>ѧ", "Ӣ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD>ݽṹ", "ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
while (p != NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("%-14s%-8s%-8d%-8d%-8d%.2f\n", p->ID, p->Name, p->Score[0], p->Score[1], p->Score[2], p->Ave_Sco);
|
|
|
|
|
p = p->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*<2A>ɼ<EFBFBD><C9BC><EFBFBD>*/
|
|
|
|
|
void ModifyScore(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
Lnode *p = h->next;
|
|
|
|
|
char name[10], id[15];
|
|
|
|
|
int Math, English, Datastruct;
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%s", name);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD>ѧ<EFBFBD>ţ<EFBFBD>");
|
|
|
|
|
scanf("%s", id);
|
|
|
|
|
|
|
|
|
|
while (p)
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(p->Name, name)==0 && strcmp(p->ID, id)==0)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ǰѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ:\n");
|
|
|
|
|
printf("%-14s%-8s%-8s%-8s%-8s\n", "ѧ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>ѧ", "Ӣ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD>ݽṹ");
|
|
|
|
|
printf("%-14s%-8s%-8d%-8d%-8d\n", p->ID, p->Name, p->Score[0], p->Score[1], p->Score[2]);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%d", &Math);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%d", &English);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%d", &Datastruct);
|
|
|
|
|
p->Score[0] = Math;
|
|
|
|
|
p->Score[1] = English;
|
|
|
|
|
p->Score[2] = Datastruct;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
p = p->next;
|
|
|
|
|
}
|
|
|
|
|
}//whileѭ<65><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*<2A><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>*/
|
|
|
|
|
void FindInf(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
Lnode *p = h->next;
|
|
|
|
|
char name[10], id[15];
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%s", name);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD>ѧ<EFBFBD>ţ<EFBFBD>");
|
|
|
|
|
scanf("%s", id);
|
|
|
|
|
|
|
|
|
|
while (p)
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(p->Name, name) == 0 && strcmp(p->ID, id) == 0)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ǰѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ:\n");
|
|
|
|
|
printf("%-14s%-8s%-8s%-8s%-8s\n", "ѧ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD>ѧ", "Ӣ<EFBFBD><EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD>ݽṹ");
|
|
|
|
|
printf("%-14s%-8s%-8d%-8d%-8d\n", p->ID, p->Name, p->Score[0], p->Score[1], p->Score[2]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
p = p->next;
|
|
|
|
|
}
|
|
|
|
|
}//whileѭ<65><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*ɾ<><C9BE>*/
|
|
|
|
|
void Delete(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
Lnode *p = h, *q;
|
|
|
|
|
q = p->next;
|
|
|
|
|
char name[10], id[15];
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
scanf("%s", name);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD>ѧ<EFBFBD>ţ<EFBFBD>");
|
|
|
|
|
scanf("%s", id);
|
|
|
|
|
|
|
|
|
|
while (q)
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(q->Name, name) == 0 && strcmp(q->ID, id) == 0)
|
|
|
|
|
{
|
|
|
|
|
p->next = q->next;
|
|
|
|
|
free(q); //ɾ<><C9BE>p<EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
printf("ɾ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
p = p->next;
|
|
|
|
|
q = q->next;
|
|
|
|
|
}
|
|
|
|
|
}//whileѭ<65><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*<2A>˳<EFBFBD>ϵͳ*/
|
|
|
|
|
void Quit(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
SaveInf(h); //<2F>˳<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>*/
|
|
|
|
|
void LoadInf(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
Lnode *p = h;
|
|
|
|
|
Lnode *q; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
FILE* file = fopen("./Information.dat", "rb");
|
|
|
|
|
if (!file)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>");
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
ʹ<EFBFBD><EFBFBD>feof<EFBFBD>ж<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>feof<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־<EFBFBD><EFBFBD>Ϊ-1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>Ҫ<EFBFBD>ٶ<EFBFBD>ȡһ<EFBFBD>κŻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȶ<EFBFBD>һ<EFBFBD>Ρ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
q = (Lnode *)malloc(sizeof(Lnode));
|
|
|
|
|
fread(q, sizeof(Lnode), 1, file);
|
|
|
|
|
while (!feof(file)) //һֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ĩβ
|
|
|
|
|
{
|
|
|
|
|
p->next = q;
|
|
|
|
|
p = q;
|
|
|
|
|
q = (Lnode *)malloc(sizeof(Lnode));
|
|
|
|
|
fread(q, sizeof(Lnode), 1, file);
|
|
|
|
|
} //whileѭ<65><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
p->next = NULL;
|
|
|
|
|
fclose(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>*/
|
|
|
|
|
void SaveInf(Lnode *h)
|
|
|
|
|
{
|
|
|
|
|
Lnode *p = h->next;
|
|
|
|
|
int flag;
|
|
|
|
|
FILE* file = fopen("./Information.dat", "wb");
|
|
|
|
|
if (!file)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
while (p != NULL)
|
|
|
|
|
{
|
|
|
|
|
flag = fwrite(p, sizeof(Lnode), 1, file); //<2F><>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|
|
|
|
if (flag != 1)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
p = p->next;
|
|
|
|
|
}
|
|
|
|
|
fclose(file);
|
|
|
|
|
}
|