学生信息包括学号文档格式.docx

上传人:b****5 文档编号:20473351 上传时间:2023-01-23 格式:DOCX 页数:30 大小:23.19KB
下载 相关 举报
学生信息包括学号文档格式.docx_第1页
第1页 / 共30页
学生信息包括学号文档格式.docx_第2页
第2页 / 共30页
学生信息包括学号文档格式.docx_第3页
第3页 / 共30页
学生信息包括学号文档格式.docx_第4页
第4页 / 共30页
学生信息包括学号文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

学生信息包括学号文档格式.docx

《学生信息包括学号文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息包括学号文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

学生信息包括学号文档格式.docx

intStudent_SearchByIndex(charid[])

inti;

for(i=0;

i<

num;

i++)

{

if(strcmp(students[i].ID,id)==0)

returni;

}

return-1;

/*通过姓名返回数组下标*/

intStudent_SearchByName(charname[])

if(strcmp(students[i].Name,name)==0)

/*显示单条学生记录*/

voidStudent_DisplaySingle(intindex)

printf("

%10s%10s%8s%8s%8s%10s\n"

"

学号"

姓名"

成绩"

平均成绩"

);

-------------------------------------------------------------\n"

%10s%10s%8.2f%8.2f%8.2f%10.2f\n"

students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

/*插入学生信息*/

voidStudent_Insert()

while

(1)

请输入学号:

"

scanf("

%s"

&

students[num].ID);

getchar();

请输入姓名:

students[num].Name);

请输入成绩:

%f"

students[num].Mark1);

getchar();

printf("

scanf("

students[num].Mark2);

students[num].Mark3);

students[num].Average=Avg(students[num]);

num++;

是否继续?

(y/n)"

if(getchar()=='

n'

break;

}

/*修改学生信息*/

voidStudent_Modify()

floatmark1,mark2,mark3;

charid[20];

intindex;

请输入要修改的学生的学号:

id);

index=Student_SearchByIndex(id);

if(index==-1)

学生不存在!

\n"

else

你要修改的学生信息为:

Student_DisplaySingle(index);

--请输入新值--\n"

students[index].ID);

students[index].Name);

students[index].Mark1);

students[index].Mark2);

students[index].Mark3);

students[index].Average=Avg(students[index]);

if(getchar()=='

/*删除学生信息*/

voidStudent_Delete()

inti;

while

(1)

charid[20];

intindex;

请输入要删除的学生的学号:

index=Student_SearchByIndex(id);

if(index==-1)

else

你要删除的学生信息为:

Student_DisplaySingle(index);

是否真的要删除?

y'

for(i=index;

num-1;

students[i]=students[i+1];

num--;

break;

/*按姓名查询*/

voidStudent_Select()

charname[20];

请输入要查询的学生的姓名:

name);

index=Student_SearchByName(name);

你要查询的学生信息为:

/*按平均值排序*/

voidStudent_SortByAverage()

inti,j;

structStudenttmp;

for(j=1;

j<

num-i;

j++)

if(students[j-1].Average<

students[j].Average)

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

/*显示学生信息*/

voidStudent_Display()

for(i=0;

students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

/*将学生信息从文件读出*/

voidIO_ReadInfo()

FILE*fp;

if((fp=fopen("

Database.txt"

rb"

))==NULL)

不能打开文件!

return;

if(fread(&

num,sizeof(int),1,fp)!

=1)

num=-1;

for(i=0;

fread(&

students[i],sizeof(structStudent),1,fp);

fclose(fp);

/*将学生信息写入文件*/

voidIO_WriteInfo()

FILE*fp;

if((fp=fopen("

wb"

return;

if(fwrite(&

写入文件错误!

students[i],sizeof(structStudent),1,fp)!

fclose(fp);

/*主程序*/

voidmain()

intchoice;

IO_ReadInfo();

/*主菜单*/

\n------学生成绩管理系统------\n"

1.增加学生记录\n"

2.修改学生记录\n"

3.删除学生记录\n"

4.按姓名查询学生记录\n"

5.按平均成绩排序\n"

6.退出\n"

请选择(1-6):

%d"

choice);

switch(choice)

case1:

Student_Insert();

case2:

Student_Modify();

case3:

Student_Delete();

case4:

Student_Select();

case5:

Student_SortByAverage();

Student_Display();

case6:

exit(0);

IO_WriteInfo();

 

malloc.h>

stdio.h>

#defineLENsizeof(structscorenode)

#defineDEBUG

string.h>

structscorenode

{intnumber;

/*学号*/

charname[10];

/*姓名*/

floatyuwen;

/*语文成绩*/

floatyingyu;

/*英语成绩*/

floatshuxue;

/*数学成绩*/

structscorenode*next;

typedefstructscorenodescore;

intn,k;

/*n,k为全局变量,本程序中的函数均可以使用它*/

/*==============================================================================================*/

score*creat2311(void)

/*函数creat2311,功能:

创建链表,此函数带回一个指向链表头的指针*/

score*head;

score*p1,*p2,*p3,*max;

inti,j;

floatfen;

chart[10];

n=0;

p1=p2=p3=(score*)malloc(LEN);

head=p3;

/*开辟一个新单元*/

请输入学生资料,输0退出!

repeat1:

请输入学生学号(学号应大于0):

/*输入学号,学号应大于0*/

p1->

number);

while(p1->

number<

0)

{getchar();

输入错误,请重新输入学生学号:

/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/

if(p1->

number==0)

gotoend;

/*当输入的学号为0时,转到末尾,结束创建链表*/

else

{

p3=head;

if(n>

{for(i=0;

n;

 

{if(p1->

number!

=p3->

number)

p3=p3->

next;

else

{printf("

学号重复,请重输!

gotorepeat1;

/*当输入的学号已经存在,程序报错,返回前面重新输入*/

请输入学生姓名:

/*输入学生姓名*/

请输入语文成绩(0~100):

/*输入语文成绩,成绩应在0-100*/

yuwen);

yuwen<

0||p1->

yuwen>

100)

{getchar();

输入错误,请重新输入语文成绩"

/*输入错误,重新输入语文成绩直到正确为止*/

请输入英语成绩(0~100):

/*输入英语成绩,成绩应在0-100*/

yingyu);

yingyu<

yingyu>

输入错误,请重新输入英语成绩"

/*输入错误,重新输入英语成绩直到正确为止*/

请输入数学成绩(0~100):

/*输入数学成绩,成绩应在0-100*/

shuxue);

shuxue<

shuxue>

输入错误,请重新输入数学成绩"

}/*输入错误,重新输入数学成绩直到正确为止*/

head=NULL;

while(p1->

=0)

n=n+1;

if(n==1) 

head=p1;

p2->

next=p1;

p2=p1;

p1=(score*)malloc(LEN);

repeat2:

输入错误,请重新输入学生学号:

if(p1->

gotoend;

gotorepeat2;

/*当输入的学号已经存在,程序报错,返回前面重新输入*/

}/*输入错误,重新输入语文成绩直到正确为止*/

}/*输入错误,重新输入英语成绩直到正确为止*/

end:

p1=head;

p3=p1;

for(i=1;

for(j=i+1;

=n;

max=p1;

p1=p1->

if(max->

number>

k=max->

number;

max->

number=p1->

p1->

number=k;

/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/

strcpy(t,max->

strcpy(max->

name,p1->

strcpy(p1->

name,t);

/*交换前后结点中的姓名,使之与学号相匹配*/

fen=max->

yuwen;

yuwen=p1->

yuwen=fen;

/*交换前后结点中的语文成绩,使之与学号相匹配*/

yingyu;

yingyu=p1->

yingyu=fen;

/*交换前后结点中的英语成绩,使之与学号相匹配*/

shuxue;

shuxue=p1->

shuxue=fen;

/*交换前后结点中的数学成绩,使之与学号相匹配*/

max=head;

p1=head;

/*重新使max,p指向链表头*/

}

p2->

next=NULL;

/*链表结尾*/

输入的学生数为:

%d个!

n);

return(head);

/*==============================

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1