学生管理数组文件(C语言)_第1页
学生管理数组文件(C语言)_第2页
学生管理数组文件(C语言)_第3页
学生管理数组文件(C语言)_第4页
学生管理数组文件(C语言)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>

#include<stdlib.h>//forsystem(,,cls,')

#include<string.h>

#include<conio.h>//forgetche()and

getch()

/*定义学生结构体*/

typedefstruct//Student

(

charID[20];

charName[20];

floatMath;

floatEnglish;

floatComputer;

floatAverage;

floatSum;

JStudent;

/*声明学生数组及学生数量*/

Studentstudents[1000];

intnum=0;

/*求平均值*/

floatAvg(Studentstu)

return

(stu.Math+stu.English+stu.Computer)/3;

)

/*求总成绩*/

floatSum(Studentstu)

(

return

(stu.Math+stu.English+stu.Computer);

/*通过学号返回数组下标*/

intStudent_SearchBylndex(charid[|)

(

inti;

for(i=0;i<num;i++)

(

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

(

returni;

)

)

return-1;

)

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

voidStudent_DisplaySingle(intindex)

(

printf(H%-8s%-8s%-10s%-10s%-15s%-1Os

%-1Os\n”,“学号”,“姓名%数学成绩“J英语成

绩7计算机成绩7平均成绩7总成绩”);

printf("-------------------------------------------------

-----------------------------\n");

printf(”%・8s%・8s%・10.2f%-10.2f%-15.2f%

-10.2f%-10.2f\n',,students[index].ID,studen

ts[index].Name,

students[index].Math,students[index].Engli

sh,students[index].Computer,students[ind

ex].Average,students[index].Sum);

)

/*查找学生信息*/

voidStudent_Search()

(

charid[20];

intindex;

printf("请输入要查找的学生的学号

scanf(''%s",&id);

getchar();

index=Student_SearchBylndex(id);

Student_DisplaySingle(index);

)

/*插入学生信息*/

voidStudent_A|Dpend()

(

while(1)

(

printf("请输入学号:”);

scanf(”%s”,&students[num]」D);

getchar();

printf(”请输入姓名:");

scanf("%sH,&students[num].Name);

getcharQ;

printf("请输入数学成绩:");

scanf("%f,,&students[num].Math);

getchar();

printf("请输入英语成绩:");

scanf("%f',&students[num].English);

getchar();

printfC请输入计算机成绩

scanfC^f\&studentstnuml.Computer);

getchar();

students[num].Average=Avg(students[nu

m]);

students[num].Sum=Sum(students[num]);

num++;

printf("是否继续?(y/n)”);

if(getchar()=='n'||getchar()=='N,)

break;

)

)

)

/*修改学生信息*/

voidStudent_Modify()

(

floatMath,English,Computer;

while(1)

charid[20];

intindex;

printf(“请输入要修改的学生的学号

scanf("%s",&id);

getchar();

index=Student_SearchBylndex(id);

if(index==-1)

(

printf(“学生不存在!\n“);

)

else

(

printf("你要修改的学生信息为:\n”);

Student_DisplaySingle(index);

printf("~请输入新值7n");

printf(”请输入学号:“);

scanf("%sn,&students[index].ID);

getchar();

printf(”请输入姓名

scanf(”%s”,&students[index].Name);

getchar();

printf(”请输入成绩:");

scanfC^f\&studentsOndexJ.Math);

getchar();

printf(”请输入成绩:");

scanf("%f,,&students[index].English);

getchar();

printf(”请输入成绩:");

scanf("%f',&students[index].Computer);

getcharQ;

students[index].Average=Avg(students[ind

ex]);

students[index].Sum=Sum(students[index]

);

)

printf("是否继续?(y/n)");

if(getchar()=='n'||getchar()=='N,)

(

break;

)

)

)

/*删除学生信息*/

voidStudent_Delete()

(

inti;

while(1)

(

charid[20];

intindex;

printf("请输入要删除的学生的学号

scanf(”%s”,&id);

getchar();

index=Student_SearchBylndex(id);

if(index==-1)

printf("学生不存在!\n。;

)

else

printf(“你要删除的学生信息为:\n”);

Student_DisplaySingle(index);

printf("是否真的要删除?(y/n)”);

if(getchar()=='y')

(

for(i=index;i<num-1;i++)

(

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

)

num-;

)

getchar();

)

printf("是否继续?(y/n)1');

if(getchar()==,n'||getchar()==,N,)

(

break;

)

)

)

/*按总成绩降排序*/

voiddescending_order_by_sum()

intij;

Studenttmp;

for(i=0;i<num;i++)

(

for(j=1;j<num-i;j++)

(

if(studentsO-1].Sum<studentsO].Sum)

(

tmp=students[j-1];

students0-1]=students[j];

students[j]=tmp;

)

)

}

)

/*按总成绩升排序*/

voidascending_order_by_sum()

(

intij;

Studenttmp;

for(i=0;i<num;i++)

(

for(j=1;j<num-i;j++)

if(studentsO-1].Sum<studentsO].Sum)

tmp=students[j-1];

studentsO-1]=students[j];

students[j]=tmp;

)

)

)

)

/*按学号降排序*/

voiddescending_order_by_num()

inti,j;

Studenttmp;

for(i=0;i<num;i++)

(

for(j=1;j<num-i;j++)

(

if

(strcmp(studentsO-1].ID,studentsO].ID)<0)

(

tmp=students[j-1];

students0-1]=students[j];

students[j]=tmp;

)

)

}

)

/*按学号升排序*/

voidascending_order_by_num()

(

inti,j;

Studenttmp;

for(i=0;i<num;i++)

for(j=1;j<num-i;j++)

if

(strcmp(studentsO-1].ID,studentsO].ID)<0)

(

tmp=students[j-1];

studentsO-1]=studentsO];

studentsO]=tmp;

)

)

)

/*显示学生信息*/

voidStudent_List()

inti;

printf(H%-8s%-8s%-10s%-10s%-15s%-1Os

%-10s\n7学号”,“姓名7数学成绩“J英语成

绩计算机成绩7平均成绩*”总成绩)

printf("-------------------------------------------------

-----------------------------\n");

for(i=0;i<num;i++)

(

printf(”%・8s%・8s%・10.2f%-10.2f%-15.2f%

-10.2f%-10.2f\n",students[i].ID,students[i].

Name,

students[i].Math,students[i].English,studen

ts[i].Computer,students[i].Average,student

s[i].Sum);

)

)

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

voidRead_File()

(

FILE*fp;

inti;

if((fp=fopen("Database.txt,,,,'rb,,))==NULL)

printf("不能打开文件!\n“);

return;

)

if(fread(&num,sizeof(int),1,fp)!=1)

(

num=-1;

)

else

(

for(i=0;i<num;i++)

(

fread(&students[i],sizeof(Student),1,fp);

)

)

fclose(fp);

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

voidWrite_File()

(

FILE*fp;

inti;

if

((fp=fopen(',Database.txt",Hwb"))==NULL)

printf("不能打开文件!\n”);

return;

)

if(fwrite(&num,sizeof(int),1,fp)!=1)

(

printf("写入文件错误!\n”);

)

for(i=0;i<num;i++)

(

if

(fwrite(&students[i],sizeof(Student),1,fp)!=

1)

(

printf(“写入文件错误!\n”);

}

)

fclose(fp);

)

〃初始化

voidinitialize(void)

(

inti=0;

Read_File();

for(i=0;i<1000;i++)

Read_File();

strcpy(students[i].ID,'1");

strcpy(students[i].Name,"");

students[i].Math=O.O;

students[i].English=O.O;

students[i].Computer=0.0;

students[i].Average=O.O;

students[i].Sum=O.O;

)

)

/*主程序*/

intmain(void)

charchoice=AO',yes_no='\O';

initialize();

while(1)

(

system("cls");

〃主菜单*/

printf("\nManagementfor

Students'scores\n");

printf(H\n

-----------------------------------------------\n»);

printf(n|1.Appendrecord

|\n”);

printf("|2.Listrecord

H);

printf(H|3.Deleterecord

W);

printfC1|4.Modifyrecord

W);

printf(H|5.Searchrecord

W);

printf(n|6.SortScoreindescending

orderbysum|\n");

printf("|7.SortScoreinascending

orderbysum|\nH);

printfC1I8.SortScoreindescending

orderbynum|\n");

printf(H|9.SortScoreinascending

orderbynum|\nn);

printf("|W.WritetoaFile

|\n”);

printf(H|R.Readfroma

File|\n");

printf(n|0.Exit

|\nH);

printf(H

-----------------------------------------------\n");

printf("PleaseInputyour

choiceAn");

choice=getche();

switch(choice)

(

case'T:

printf(,'\nH);

Student_Append();

break;

case'2':

printfOn");

Student_List();

break;

case'3':

Student_Delete();

break;

case'4':

printf(,,\nH);

Student_Modify();

break;

case5:

printf("\n");

Student_Search();

break;

ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论