人人范文网 范文大全

c语言程序设计实习报告程序

发布时间:2020-03-03 04:27:03 来源:范文大全 收藏本文 下载本文 手机版

#include \"stdio.h\" /*定义学生结构体*/ struct Student {

char ID[20];

char Name[20];

float Mark1; /*计算机*/

float Mark2; /*英语*/

float Mark3; /*数学*/

float Zongfen; /*总分*/

float Average;}; /*平均分*/ /*声明学生数组及学生数量*/ struct Student students[2000]; int num=0; /*求总分*/ float Zong(struct Student stu) { return(stu.Mark1+stu.Mark2+stu.Mark3); } /*求平均值*/ float Avg(struct Student stu) {return (stu.Mark1+stu.Mark2+stu.Mark3)/3;} /*通过学号返回数组下标*/ int Student_SearchByIndex(char id[]) {

int i;

for (i=0;i

int i;

for (i=0;i

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

{return i;}}

return -1;}

/*通过学号返回数组下标*/ int Student_SearchID(char id[]){

int i;

for (i=0;i

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

{return i;}}

return -1;} /*显示单条学生记录*/ void Student_DisplaySingle(int index) {printf(\"%10s%10s%8s%8s%8s%8s%10s\\n\",\"学号\",\"姓名\",\"计算机\",\"英语\",\"数学\",\"总分\",\"平均成绩\"); printf(\"------------------------------\\n\"); printf(\"%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2f\\n\",students[index].ID,students[index].Name, students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Zongfen,students[index].Average); }void Student_DisplaySingle1(int index) {printf(\"------------------------------\\n\"); printf(\"%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2f\\n\",students[index].ID,students[index].Name, students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Zongfen,students[index].Average); } /*插入学生信息*/ void Student_Insert() {while(1) {printf(\"请输入学号:\");scanf(\"%s\",&students[num].ID);getchar(); printf(\"请输入姓名:\");scanf(\"%s\",&students[num].Name);getchar(); printf(\"请输入计算机成绩:\");scanf(\"%f\",&students[num].Mark1);getchar(); printf(\"请输入英语成绩:\");scanf(\"%f\",&students[num].Mark2);getchar(); printf(\"请输入数学成绩:\");scanf(\"%f\",&students[num].Mark3);getchar();

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

students[num].Zongfen=Zong(students[num]);

num++;

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

if (getchar()==\'n\'){break;} }} void exit() ; /*修改学生信息*/ void Student_Modify() {

float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf(\"请输入要修改的学生的学号:\");

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

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

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

}

else

{

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

Student_DisplaySingle(index);

printf(\"-- 请输入新值--\\n\");

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

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

getchar();

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

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

getchar();

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

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

getchar();

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

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

getchar();

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

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

getchar();

students[index].Zongfen=Zong(students[index]);

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

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

if (getchar()==\'n\')

{

break;

}

} } /*删除学生信息*/

void Student_Delete() {

int i;

while(1)

{

char id[20];

int index;

printf(\"请输入要删除的学生的学号:\");

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

}

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

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

}

else

{

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

Student_DisplaySingle(index);

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

if (getchar()==\'y\')

{

for (i=index;i

{

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

}

num--;

}

getchar();

}

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

if (getchar()==\'n\')

{

break;

}

} } /*按姓名或学号查询*/ void Student_Select() {

int sel;

printf(\"1--------------------按姓名查询\\n\");

printf(\"2--------------------按学号查询\\n\");

scanf(\"%d\",&sel);

if(sel==2){

while(1)

{

char id[20];

int index;

printf(\"请输入要查询的学生的学号:\");

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

getchar();

index=Student_SearchID(id);

if (index==-1)

{

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

}

else

{

printf(\"你要查询的学生信息为:\\n\");

Student_DisplaySingle(index);

}

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

if (getchar()==\'n\')

{

break;

}

}}else if (sel==1)

{while(1)

{

char name[20];

int index;

printf(\"请输入要查询的学生的姓名:\");

scanf(\"%s\",&name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{

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

}

else

{

printf(\"你要查询的学生信息为:\\n\");

Student_DisplaySingle(index);

}

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

if (getchar()==\'n\')

{

break;

}

}}

else printf(\"信息错误!\\n\"); } /*排序*/ void Student_SortByAverage() {

int a,sel;

printf(\"1--------------------按学号排序\\n\");

printf(\"2--------------------按姓名排序\\n\");

printf(\"3--------------------按计算机排序\\n\");

printf(\"4--------------------按英语排序\\n\");

printf(\"5--------------------按数学排序\\n\");

printf(\"6--------------------按总分排序\\n\");

printf(\"7--------------------按平均分排序\\n\");

scanf(\"%d\",&sel);

if(sel==1)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (strcmp(students[j-1].ID,students[j].ID)>0)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==2)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (strcmp(students[j-1].Name,students[j].Name)>0)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==3)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (students[j-1].Mark1>students[j].Mark1)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==4)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (students[j-1].Mark2>students[j].Mark2)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==5)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (students[j-1].Mark3>students[j].Mark3)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==6)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (students[j-1].Zongfen>students[j].Zongfen)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else if(sel==7)

{int i,j;

struct Student tmp;

for (i=0;i

{

for (j=1;j

{

if (students[j-1].Average>students[j].Average)

{

tmp=students[j-1];

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

students[j]=tmp;

}

}

}}

else printf(\"信息错误!\\n\"); } /*显示学生信息*/ void Student_Display() {

int i;

printf(\"%10s%10s%8s%8s%8s%8s%10s\\n\",\"学号\",\"姓名\",\"计算机\",\"英语\",\"数学\",\"总分\",\"平均成绩\");

printf(\"------------------------------\\n\");

for (i=0;i

{

printf(\"%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2f\\n\",students[i].ID,students[i].Name,

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

} } /*将学生信息从文件读出*/ void IO_ReadInfo() {

FILE *fp;

int i;

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

{

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

}

}

fclose(fp); } /*将学生信息写入文件*/ void IO_WriteInfo() {

FILE *fp;

int i;

if ((fp=fopen(\"Database.txt\",\"wb\"))==NULL)

{

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

return;

}

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

{

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

}

for (i=0;i

{

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

{

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

}

}

fclose(fp); } /*统计不同分数段的学生*/ void Student_TJ() {

while(1)

{

int a,sel;

float m,n;

printf(\"1--------------------按计算机统计不同分数段的学生\\n\");

printf(\"2--------------------按英语统计不同分数段的学生\\n\");

printf(\"3--------------------按数学统计不同分数段的学生\\n\");

printf(\"4--------------------按总分统计不同分数段的学生\\n\");

printf(\"5--------------------按平均分统计不同分数段的学生\\n\");

scanf(\"%d\",&sel);

printf(\"输入所需查询的分数段[m,n]\");

scanf(\"%f%f\",&m,&n);

printf(\"%10s%10s%8s%8s%8s%8s%10s\\n\",\"学号\",\"姓名\",\"计算机\",\"英语\",\"数学\",\"总分\",\"平均成绩\");

if(sel==1)

{int j;

for (j=0;j

{

if (students[j].Mark1>=m&&students[j].Mark1

Student_DisplaySingle1(j);

}}

else if(sel==2)

{int j;

for (j=0;j

{

if (students[j].Mark2>=m&&students[j].Mark2

Student_DisplaySingle1(j);

}}

else if(sel==3)

{int j;

for (j=0;j

{

if (students[j].Mark3>=m&&students[j].Mark3

Student_DisplaySingle1(j);

}}else if(sel==4)

{int j;

for (j=0;j

{

if (students[j].Zongfen>=m&&students[j].Zongfen

Student_DisplaySingle1(j);

}}else if(sel==5)

{int j;

for (j=0;j

{

if (students[j].Average>=m&&students[j].Average

Student_DisplaySingle1(j);

}}

else printf(\"信息错误!\\n\");

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

a=getchar();

if (getchar()==\'n\'){break;} } } /*主程序*/ main() { int choice;

IO_ReadInfo();

fflush(stdin); while(1)

{ /*主菜单*/ printf(\"

~~~~~~~~~~~~~~~~~~~~~&欢迎进入学生成绩管理系统&~~~~~~~~~~~~~~~~~~~~~ \\n\"); printf(\"

*

1.输入学生记录

*\\n\"); printf(\"

*

2.添加学生记录

*\\n\"); printf(\"

*

3.修改学生记录

*\\n\"); printf(\"

*

4.删除学生记录

*\\n\"); printf(\"

*

5.按姓名或学号查询学生记录

*\\n\"); printf(\"

*

6.排序

*\\n\"); printf(\"

*

7.统计不同分数段的学生

*\\n\"); printf(\"

*

8.输出学生记录

*\\n\"); printf(\"

*

9.退出

*\\n\"); printf(\"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \\n\"); printf(\"

请选择(1-9):\"); scanf(\"%d\",&choice); getchar(); switch(choice){ case 1:Student_Insert();break; case 2:Student_Insert();break; case 3:Student_Modify();break; case 4:Student_Delete();break; case 5:Student_Select();break; case 6:Student_SortByAverage();Student_Display();break; case 7:Student_TJ();break; case 8:Student_Display();break;} IO_WriteInfo();

} }

C语言程序设计实习报告

C语言程序设计报告

C语言程序设计

C 语言程序设计

C语言程序设计上级实习报告01

c语言实习程序

C语言图形程序设计报告

c语言程序设计基础

C语言程序设计心得体会

C语言程序设计心得

c语言程序设计实习报告程序
《c语言程序设计实习报告程序.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档