使用结构体完成学生(学号、姓名、性别、成绩)管理系统

1>使用菜单实现

2>功能1:完成对学生信息的录入,确定人数,完成输入

3>功能3:输出成绩最高和最低学生的信息
4>功能4:输出学生的总成绩和平局成绩

5>功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能

6>功能6:提示并输入要查要的学生名字,查找该名字是否存在该班级

7>功能0:退出

     1	#include<stdio.h>
     2	#include<string.h>
     3	#define NUM 100
     4	struct Stu                          //自定义结构体
     5	{
     6		char num[10];      //学号
     7		char name[10];     //姓名
     8		char sex;         //性别
     9		int score;        //成绩
    10	
    11	};
    12	int main(int argc, const char *argv[])
    13	{
    14		int size=0;    //需要录入的学生人数
    15		int input=0;   //
    16		int max=0,min=0,i1=0,i2=0;          //max 表示高成绩     min 表示最低成绩
    17	                                	//i1表示最好成绩下标,i2表示最差成绩下标
    18		int sum_score=0;                    //sum_score表示总成绩  
    19		int d=0;                        //表示选择升序降序
    20	
    21		struct Stu b[NUM];                         //创建一个空结构体数组;
    22		memset(b,0,sizeof(b));   //数组初始化
    23		char show_name[10]={""};
    24		while(1)
    25		{
    26			printf("\t-------------------学生信息管理系统-----------------\n");
    27			printf("\t---------------输入1:录入学生信息------------------\n");
    28			printf("\t---------------输入2:输出学生信息------------------\n");
    29			printf("\t---------------输入3:输出最高和低学生成绩----------\n");
    30			printf("\t---------------输入4:输出学生总成绩和平均成绩------\n");
    31			printf("\t---------------输入5:对学生成绩进行升降序----------\n");
    32			printf("\t---------------输入6:查找学生----------------------\n");
    33			printf("\t---------------输入0:退出--------------------------\n");                         //菜单
    34	
    35			printf("请输入>>>>>");
    36			scanf("%d",&input);
    37	
    38			switch(input)
    39			{
    40			case 1:
    41				printf("请输入需要录入的学生信息人数:");
    42				scanf("%d",&size);
    43				struct Stu a[NUM];
    44				memset(a,0,sizeof(a));   //数组初始化
    45				for(int i=0;i<size;i++)
    46				{
    47					printf("请输入第%d个学生的姓名:",i+1);
    48					scanf("%s",a[i].name);
    49					printf("请输入第%d个学生的学号:",i+1);
    50					scanf("%s",a[i].num);
    51					getchar();
    52					printf("请输入第%d个学生的性别:",i+1);
    53					scanf("%c",&a[i].sex);
    54					printf("请输入第%d个学生的成绩:",i+1);
    55					scanf("%d",&a[i].score);
    56					putchar(10);
    57				}                                       //循环录入学生成绩
    58				printf("成功录入!\n");
    59				break;
    60			case 2:
    61				printf("-------------学生信息-----------\n");
    62				printf("姓名\t学号\t性别\t成绩\n");
    63				for(int i=0;i<size;i++)
    64				{
    65					printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
    66	
    67				}                                      //循环输出学生成绩
    68				break;
    69			case 3:
    70		/*		for(int i=1;i<size;i++)
    71				{
    72					int j=0;
    73				   max=a[j].score;
    74					if(max<a[i].score);
    75					{
    76						max=a[i].score;
    77						i1=i;
    78					}
    79				}                          //遍历找到最高成绩
    80				min=a[i2].score;
    81				for(int i=1;i<size;i++)
    82				{
    83					if(min>a[i].score)
    84					{
    85						min=a[i].score;
    86						i2=i;
    87					}
    88				}      */
    89				max=a[i1].score;
    90				min=a[i2].score;
    91				for(int i=1;i<size;i++)
    92	
    93				{
    94					if(a[i].score>max)
    95					{
    96						max=a[i].score;
    97						i1=i;
    98					}                               //更新最高成绩
    99					if(a[i].score<min)
   100					{
   101				        min=a[i].score;
   102						i2=i;                       //更新最低成绩
   103					}
   104	
   105				}
   106				printf("------------成绩最高学生信息------------\n");
   107				printf("姓名\t学号\t性别\t成绩\n");
   108				printf("%s\t%s\t%c\t%d\n",a[i1].name,a[i1].num,a[i1].sex,max);
   109				printf("------------成绩最低学生信息------------\n");
   110				printf("%s\t%s\t%c\t%d\n",a[i2].name,a[i2].num,a[i2].sex,min);
   111				printf("姓名\t学号\t性别\t成绩\n");
   112				break;
   113	
   114			case 4:
   115				for(int i=0;i<size;i++)
   116				{
   117					sum_score+=a[i].score;
   118				}
   119				printf("学生总成绩:%d\t平均成绩:%.2f\n",sum_score,(float)sum_score/size);
   120				break;
   121			case 5:			
   122				for(int i=1;i<size;i++)
   123				{
   124					for(int j=0;j<size-i;j++)
   125					{
   126						if(a[j].score>a[j+1].score)
   127						{
   128							int t=a[j].score;
   129							a[j].score=a[j+1].score;
   130							a[j+1].score=t;               //成绩交换
   131	
   132							char q=a[j].sex;
   133							a[j].sex=a[j+1].sex;
   134							a[j+1].sex=q;                //性别交换
   135	
   136							char sw_name[10]="";
   137							strcpy(sw_name,a[j].name);
   138							strcpy(a[j].name,a[j+1].name);
   139							strcpy(a[j+1].name,sw_name);    // 名字交换
   140	
   141							char sw_num[10]="";
   142							strcpy(sw_num,a[j].num);
   143							strcpy(a[j].num,a[j+1].num);
   144							strcpy(a[j+1].num,sw_num);//学号交换
   145						}
   146					}
   147				}
   148				printf("\t-------------------输入1:将成绩升序,输入学生信息-----------------\n");
   149				printf("\t-------------------输入2:将成绩降序,输入学生信息-----------------\n");
   150				printf("请输入>>>>");
   151				scanf("%d",&d);
   152				if(d==1)                   //选择降序或升序
   153				{
   154					printf("-------------学生信息-----------\n");
   155					printf("姓名\t学号\t性别\t成绩\n");
   156					for(int i=0;i<size;i++)
   157					{
   158						printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
   159					}
   160				}
   161				else if(d==2)
   162				{
   163					for(int i=size-1;i>=0;i--)
   164					{
   165						printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
   166					}
   167	
   168				}
   169				else
   170				{
   171					printf("输入错误!\n");
   172				}
   173	
   174				break;
   175			case 6:
   176				printf("请输入需要查找学生的名字:");
   177				scanf("%s",show_name);
   178				int i=0;
   179				do{
   180					if(strcmp(show_name,a[i].name)==0)
   181					{
   182						printf("该名字在这个班级\n");
   183						break;
   184					}
   185					if(strcmp(show_name,a[i].name)!=0&&i==size-1)
   186					{
   187	          			printf("该名字不在这个班级\n");              //查找学生			
   188					}
   189					i++;
   190				}while(i<size);
   191				break;                                            
   192			case 0:
   193				break;
   194			}
   195		}
   196		return 0;
   197	}

功能1:

功能2:

功能3:

功能4:

功能5:

功能6:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值