小白必看 一个简单的学生信息管理系统

一.实验目的:
熟悉函数设计和模块化程序设计方法。
掌握结构体的使用。
熟悉结构体数组作为函数参数。
二.实验内容:
按以下菜单界面编写学生信息管理系统;
在这里插入图片描述

1)录入学生信息首先输入学生人数,然后根据学生人数开辟动态数组;
2)学生信息包括学号、姓名、性别、三门课成绩、总分;其中学号、姓名、
性别、三门课成绩是需要从键盘录入的,而总分是由程序计算的,而不
是用户自己算了再输入。
3)显示结果(学生信息)要以列表的形式显示,注意美观性;
4)要有必要的容错措施,比如输入各科分数要在0-100之间,输入错误给
用户提示,让其重新输入;

CPP源代码

#include "stdafx.h"
#include <iostream>
#include<iomanip>
#include<string>
using namespace std;
struct STU
{
	char xuehao[10];
	char name[10];
	char sex;//f is woman,m is man
	float score[3];
	float sum;//sum 为总分
};
void fun1(int renshu,STU p[])
{
	int i;
	for(i=0;i<renshu;i++)
	{
		cout<<"请输入学号";
		cin>>p[i].xuehao;
		cout<<"请输入姓名";
		cin>>p[i].name;
		cout<<"请输入性别";
		cin>>p[i].sex;
		cout<<"请输入三门的成绩";
		int q;
		for(q=0;q<3;q++)
		{
			cin>>p[i].score[q];
		}
		int ii;
		for(ii=0;ii<3;ii++)
		{
			if(p[i].score [ii]>100||p[i].score[ii]<0)
			{
				cout<<"请输入正确的分数";
				for(q=0;q<3;q++)
		         {
			         cin>>p[i].score[q];
		         }
			}
		}
		p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2];
	}
	cout<<"\n任务1的处理结果\n";
}
void fun2(int renshu,STU p[])
{
	int i;
	for(i=0;i<renshu;i++)
	{
		cout<<setw(10)<<p[i].xuehao;
		cout<<setw(10)<<p[i].name ;
		cout<<setw(5)<<p[i].sex ;
		int q;
		for(q=0;q<3;q++)
		  {
			  cout<<setw(5)<<p[i].score[q];
		  }
		cout<<setw(5)<<p[i].sum;
	    cout<<"\n";
	}
	cout << "\n任务2的处理结果\n";
}
void fun3(int renshu,char k[],STU p[])
{
	int i;
	for(i=0;i<renshu;i++)
	{
		if(strcmp(k,p[i].xuehao)==0)
		{
			cout<<setw(10)<<p[i].xuehao;
		    cout<<setw(10)<<p[i].name ;
		    cout<<setw(5)<<p[i].sex ;
		    int q;
		    for(q=0;q<3;q++)
		     {
			   cout<<setw(5)<<p[i].score[q];
		     }
		    cout<<setw(5)<<p[i].sum;
		}
	}
	cout << "\n任务3的处理结果\n";
}
void fun4(int renshu,char kk[],STU p[])
{
	int i;
	for(i=0;i<renshu;i++)
	{
		if(strcmp(kk,p[i].name)==0)
		{
			cout<<setw(10)<<p[i].xuehao;
		    cout<<setw(10)<<p[i].name ;
		    cout<<setw(5)<<p[i].sex ;
		    int q;
		    for(q=0;q<3;q++)
		    {
			  cout<<setw(5)<<p[i].score[q];
		    }
		    cout<<setw(5)<<p[i].sum;
		}
	}
	cout << "\n任务4的处理结果\n";
}
void fun5(int renshu,STU p[])
{
	int max;
	max=p[0].sum ;
	STU temp;
	int i;
	int ii;
	for(int i=1;i<=renshu;i++)
	{
		for(ii=0;ii<renshu-i;ii++)
		{
			 if(p[ii].sum<p[ii+1].sum )
			 {
				 temp=p[ii];
				 p[ii]=p[ii+1];
				 p[ii+1]=temp;
			 }
		}
	}
	cout<<"排序后的学生信息:\n";
	for(i=0;i<renshu;i++)
	{
		cout<<setw(10)<<p[i].xuehao;
		cout<<setw(10)<<p[i].name ;
		cout<<setw(5)<<p[i].sex ;
		int q;
		for(q=0;q<3;q++)
		  {
			  cout<<setw(5)<<p[i].score[q];
		  }
		cout<<setw(5)<<p[i].sum;
	    cout<<"\n";
	}
	cout << "\n任务5的处理结果\n";
}
void fun6(int renshu,STU p[])
{
	int i;
	int count=0;
	int ii;
	cout<<"有两门不及格的同学为:\n"; 
	for(i=0;i<renshu;i++)
	{
		for(ii=0;ii<3;ii++)
		{
			if(p[i].score [ii]<60)
				count++;
		}
		if(count==2)
		{
			cout<<setw(10)<<p[i].xuehao;
		    cout<<setw(10)<<p[i].name ;
		    cout<<setw(5)<<p[i].sex ;
		    int q;
		    for(q=0;q<3;q++)
		    {
			  cout<<setw(5)<<p[i].score[q];
		    }
		    cout<<setw(5)<<p[i].sum;
	        cout<<"\0";
		}
	}
	cout << "\n任务6的处理结果\n";
}
void main()
{
	int n=-1 ;//n is mode
	int renshu;
	
	STU *p;
	while (n != 0)
	{
		cout << "\n*************************\n";
		cout << "1.录入学生信息\n";
		cout << "2.显示学生信息\n";
		cout << "3.按学号查找\n";
		cout << "4.按姓名查找\n";
		cout << "5.按总分递减排序\n";
		cout << "6.查找有2科目不及格的学生信息\n";
		cout << "0.退出\n";
		cout << "*************************\n";

		while (n<0 || n>6)
		{
			cout << "请输入正确的功能号0-6:";
			cin >> n ;
		}
		
		if (n == 1)
			{
				cout<<"\n请输入学生人数:";
	            cin>>renshu;
				p=new STU[renshu];
				fun1(renshu,p);
				n=-1;
		    }
		else if (n == 2)
			{
				fun2(renshu,p);
				n=-1;continue;
		    }

		else if (n == 3)
		{
			char k[10];//k is the xuehao of the stuent you want find
			cout<<"\n请输入你想查找学生的学号";
			cin>>k;
			fun3(renshu,k,p);
			n=-1;continue;
		}
		else if (n == 4)
		{
			char kk[10];//kk is the name of the student you want find
			cout<<"\n请输入你想查找学生的姓名";
			cin>>kk;
			fun4(renshu,kk,p);
			n=-1;continue;
		}
		else if (n == 5)
		{
			fun5(renshu,p);
			n=-1;continue;
		}
		
		else if (n == 6)
	    {
			fun6(renshu,p);
			n=-1;continue;
		}
	}
	cout << endl << endl;
	system("pause");
}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值