您的当前位置:首页正文

实验11 学生成绩管理系统(用函数实现)

来源:个人技术集锦


实验十一 学生成绩管理系统(用函数实现)

实验类型:验证性 要求:必做 学时:2

实验目的:

1.掌握函数的定义方法

2.掌握函数的调用及函数声明

3.掌握函数实参与形参的对应关系及“值传递”的方式

4.掌握函数的嵌套调用和递归调用方法

5.掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法

6.掌握在实际项目中模块化设计与编码

实验内容:

1.编写一个小型学生成绩管理系统,系统操作通过菜单(文本或图形菜单均可)的形式完成。包括:数据输入,数据输出,数据添加,数据删除,数据查找,数据排序等, 各功能模块要求用独立的函数来表示,通过主函数直接或间接调用。

源程序:

#include \"stdio.h\"

#include

#include

typedef struct

{

int number;

char name[30];

int chinese;

int math;

int english;

int avg_grade;

}STU;

STU student[100];

int length;

bool search_exist(int number);

void menu()

{

printf(\"\\n请输入选项1——6\\n\");

printf(\"1——数据输入\\n\");

printf(\"2——数据输出\\n\");

printf(\"3——数据添加\\n\");

printf(\"4——数据删除\\n\");

printf(\"5——数据查找\\n\");

printf(\"6——数据排序\\n\");

}

void input()

{

int n;

printf(\"请输入学生的人数:\");

scanf(\"%d\

length=n;

printf(\"请输入N个学生的学号,姓名,以及3门成绩:\");

for(int i=0;i{

scanf(\"%d%s%d%d%d\hinese,&student[i].math,&student[i].english);

student[i].avg_grade=(student[i].chinese+student[i].math+student[i].english)/3;

}

}

void output()

{

printf(\"学号 姓名 语文 数学 英语 平均成绩 \\n\");

for(int i=0;iprintf(\"%3d%10s%8d%8d%8d%8d\\nudent[i].chinese,student[i].math,student[i].english,student[i].avg_grade);

}

void add()

{

printf(\"请输入待添加的学生的学号,姓名,以及3门成绩:\\n\");

scanf(\"%d%s%d%d%d\student[length].chinese,&student[length].math,&student[length].english);

student[length].avg_grade=(student[length].chinese+student[length].math+student[length].english)/3;

while(1)

{

if(search_exist(student[length].number))

{

printf(\"温馨提示:-------------该学号已经存在,请换一个学号!-------------\\n\");

printf(\"请输入待添加的学生的学号,姓名,以及3门成绩:\\n\");

scanf(\"%d%s%d%d%d\student[length].chinese,&student[length].math,&student[length].english);

student[length].avg_grade=(student[length].chinese+student[length].math+student[length].english)/3;

}

else

break;

}

length=length+1;

}

void del()

{

int del_num;

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

scanf(\"%d\

for(int i=0;i{

if(student[i].number==del_num)

break;

}

if(i==length)

{

printf(\"没有用该学生的记录!\");

}

else

{

for(int k=i;kstudent[k]=student[k+1];

length=length-1;

}

}

void search()

{

int search_num;

printf(\"请输入待查找学生的学号:\");

scanf(\"%d\

for(int i=0;i{

if(student[i].number==search_num)

break;

}

if(i==length)

{

printf(\"没有该学生的记录!\");

}

else

{

printf(\"该学生的记录如下:\\n\");

printf(\"学号 姓名 语文 数学 英语 平均成绩 \\n\");

printf(\"%3d%10s%8d%8d%8d%8d\\nudent[i].chinese,student[i].math,student[i].english,student[i].avg_grade);

}

}

bool search_exist(int number)

{

for(int i=0;i{

if(student[i].number==number)

break;

}

if(i==length)

return false;

else

return true;

}

void sort()

{

int k2,k1,index;

STU temp;

for(k1=0;k1{

index=k1;

for(k2=k1+1;k2{

if(student[k2].avg_gradeindex=k2;

}

temp=student[index];

student[index]=student[k1];

student[k1]=temp;

}

printf(\"按照平均成绩排序后的记录如下:\\n\");

output();

}

void main()

{

system(\"color 3a\");

for(int m=0;m<30;m++)

{

printf(\"■\");

Sleep(150);

}

system(\"cls\");

int choice;

char yesorno;

do

{

menu();

scanf(\"%d\

switch(choice)

{

case 1:input(); break;

case 2:output(); break;

case 3:add(); break;

case 4:del(); break;

case 5:search(); break;

case 6:sort(); break;

default:printf(\"%d为非法选项\\n\

}

printf(\"\\n要继续选择吗?(Y/N)\\n\");

getchar();

yesorno=getchar();

if(yesorno=='n'||yesorno=='N')

break;

}while(yesorno=='y'||yesorno=='Y');

}

运行结果

因篇幅问题不能全部显示,请点此查看更多更全内容