}
else
printf(\没有该学生记录,请核对!\ }
query_by_name() //按姓名查询学生信息 {
char name[20];
struct student *p1;
printf(\请输入学生的姓名:\
scanf(\
if(head==NULL) {
printf(\无学生记录!\\n\
return; }
p1=head;
while(strcmp(name, p1->name) && p1->next!=NULL)
p1=p1->next;
if(!strcmp(name, p1->name)) {
printf(\
display(p1); }
else
printf(\没有该学生记录,请核对!\ }
writeData() //写入文件 {
FILE* fp;
struct student *p;
fp = fopen(FILE_DATA_PATH, \
if (!fp) {
return; }
fprintf(fp,\
for(p = head; p!= NULL; p= p->next) {
fprintf(fp,\学号%ld\\t姓名%s\\t年龄%d\\t性别%s\\t出生年月%s\\t地址%s\\t成绩%ld\\tE-mail%s\\n\
p->num, p->name, p->age, p->sex, p->birthday, p->address, p->score, p->E_mail); }
fclose(fp); }
freeAll() {
struct student *p1, *p2;
p1=p2=head;
while(p1) {
p2=p1->next;
free(p1);
p1=p2;
} }
readData() //读取文件 {
FILE* fp;
struct student *p1, *p2;
fp = fopen(FILE_DATA_PATH, \
if (!fp) {
return; }
fscanf(fp,\
head = p1 = p2 = (struct student *)malloc(LEN);
fscanf(fp,\
&p1->num, p1->name, &p1->age, p1->sex, p1->birthday, p1->address, &p1->score, p1->E_mail);
while(!feof(fp)) {
p1 = (struct student *)malloc(LEN);
fscanf(fp,\
&p1->num, p1->name, &p1->age, p1->sex, p1->birthday, p1->address, &p1->score, p1->E_mail);
p2->next = p1;
p2 = p1; }
p2->next = NULL;
fclose(fp); }
del() //删除学生信息 {
struct student *p1, *p2;
long int num;
if(head == NULL) {
printf(\无学生记录!\\n\
return; }
printf(\请输入您要删除的学生的学号:\
scanf(\
p1 = head;
while(num != p1->num && p1->next != NULL) {
p2 = p1;
p1 = p1->next; }
if(num == p1->num) {
if(p1 == head)
head = p1->next;
else p2->next = p1->next;
free(p1);
TOTAL_NUM--; }
else
printf(\没有该学生记录,请核对!\\n\
system(\}
change() //修改学生信息 {
struct student *p1, *p2;
long int num;
system(\
if(head == NULL) {
printf(\无学生记录!\\n\
return; }
printf(\请输入您要修改的学生的学号:\
scanf(\
p1 = head;
while(num != p1->num && p1->next != NULL) {
p2 = p1;
p1 = p1->next; }
if(num == p1->num)
devise(p1);
else
printf(\没有该学生记录,请核对!\\n\ }
devise(struct student *p) {