c语言怎样存放学生信息,用标准C语言编写学生信息管理系统

匿名用户

1级

2010-07-01 回答

把我之前做的给你吧,差不多的

#include

#include

#include

#include"conio.h"

#define N 50 //定义符号常量,代表学生人数最大值

int count=0; //全局变量,用于记录数组的当前位置

struct student //定义结构体类型,代表学生信息*/

{

char name[9];

char number[10];

float math;

float english;

float physics;

float computer;

};

void input(struct student *arr); //函数声明,输入学生信息*/

void sort(struct student *arr); //函数声明,按总分排序*/

void find(struct student *arr); //函数声明,查找某位学生信息*/

void main()

{

char selmenu; //定义局部变量,用于记录用户选择的功能编号*/

struct student stud[N]; //定义结构体数组,用于记录学生信息*/

do //利用循环显示界面*/

{

system("cls"); //清屏函数*/

printf("\n\n");

printf("欢迎使用学生管理系统\n");

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

printf("学生成绩管理系统 \n\n");

printf("1.输入学生信息 \n");

printf("2.按总分进行排榜 \n");

printf("3.查找相应的学生信息 \n");

printf("4.退出学生成绩管理系统 \n\n");

printf("请输入功能选择编号:");

fflush(stdin); //清空输入缓冲区

scanf("%c",&selmenu); //接受用户选择的功能编号

switch(selmenu) //输入不同功能编号调用相应函数来完成功能

{

case'1':

input(stud); //调用输入学生信息函数,参数为学生信息数组名

break;

case'2':

sort(stud); //调用按总分排榜函数,参数是数组名

break;

case'3':

find(stud); //调用按学号和姓名查找学生信息函数

break;

}

}while(selmenu!='4'); //判断是否退出

printf("*^-^* 谢谢使用 *^-^*\n"); //输出告别词

printf(" 任务完成 ");

getch();

}

void input(struct student *arr) //定义输入学生信息函数

{

char ch; //用于接收用户指令

do //利用循环,由用户控制输入学生成绩

{

system("cls");

printf("\n输入第%d个学生的信息:\n输入学生姓名:",count+1);

scanf("%s",arr[count].name);

printf("\n输入学生学号:");

scanf("%s",arr[count].number);

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

scanf("%f",&arr[count].math);

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

scanf("%f",&arr[count].english);

printf("\n输入物理成绩:");

scanf("%f",&arr[count].physics);

printf("\n输入计算机成绩:");

scanf("%f",&arr[count].computer);

count++; //记录当前输入的学生资料的个数

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

fflush(stdin); //清空输入缓冲区

ch=getchar();

}while(ch=='y'||ch=='Y'); //判断用户指令,是否继续输入

}

void sort(struct student *arr) //定义按总分排榜函数

{

int i,j,k; //定义循环变量i,j,最小数位置k

struct student t; //定义交换临时变量

if(count==0) //判断数组中学生成绩是否存在

printf("无学生成绩,请先录入学生信息\n");

else

{

for(i=0;i

{

k=i;

for(j=i+1;j

if((arr[k].math+arr[k].english+arr[k].physics+arr[k].computer)

k=j;

if(k!=i) //如果最小数不是比较数列中第一个,对调

{

t=arr[k];

arr[k]=arr[i];

arr[i]=t;

}

}

printf("\n总分排榜版:\n\n");

printf("\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\t名次\n");

for(j=0;j

printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",

arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english,j+1);

}

printf("\n回车键返回主程序\n");

fflush(stdin);

getchar();

}

void find(struct student *arr) //定义查找函数

{

int j;

char name[9]; //用于接收用户输入的学生姓名

char number[10]; //用于接收用户输入的学生学号

system("cls"); //清屏函数

printf("\n请输入要查找的学生资料:\n");

printf("\n学生姓名:");

scanf("%s",name);

printf("\n学生学号:");

scanf("%s",number);

for(j=0;j

{

if((strcmp(name,arr[j].name)==0)&&(strcmp(number,arr[j].number)==0))

{

printf("\n\t姓名\t学号\t数学\t英语\t物理\t计算机\t总分\n");

printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\t%-6.1f\n",

arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].physics,arr[j].computer,arr[j].math+arr[j].english);

break;

}

}

if(j>=count) //如果没找到,会从循环条件退出

printf("\n未找到该学生纪录,请核对后重新查找!\n");

fflush(stdin); //清空输入缓冲区

printf("\n回车键返回\n");

getchar();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值