我是用面向对象做的也能实现你看看。不懂的话问我
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace test9
{
class Program
{/*班级学生总成绩和平均成绩计算:
1)让用户输入班级人数
2)让用户依次输入该班级每个学员的姓名和成绩(0-100之间)
3)按成绩进行排序,按成绩由高到低依次输出学生的姓名和成绩
*/
static void Main(string[] args)
{
Console.WriteLine("请输入班级人数");
int num = Convert.ToInt32(Console.ReadLine());//接收你输入的班级人数
ArrayList students = new ArrayList();//创建一个动态数组来存储学生对象
for (int i = 0; i < num; i++)//循环接收
{
student st = new student();//实例化一个student对象
Console.WriteLine("请输入姓名");
st.Name = Console.ReadLine();//给它的名字属性赋值
Console.WriteLine("请输入成绩");
st.Grade1 = Convert.ToInt32(Console.ReadLine());//给它的成绩属性赋值
students.Add(st);//把对象依次填入到动态数组中
}
myEmployeeCompare EmployeeCompare = new myEmployeeCompare();//实例化 myEmployeeCompare类
students.Sort(EmployeeCompare);//用arraylist.sort方法进行排序
foreach (object stun in students)//遍历动态数组输出其中对象的值
{
student stuforeach = (student)stun;//利用多态实现对象的转换
Console.WriteLine("{0}{1}", stuforeach.Name, stuforeach.Grade1);//输出名字和成绩
}
}
private class myEmployeeCompare : System.Collections.IComparer//Comparer实现接口System.Collections.IComparer 该接口只有一个成员函数需要实现。
{
public int Compare(object x, object y)
{
return ((student)y).Grade1 - ((student)x).Grade1;//指定排序的规则是按哪一个数据按哪一个规则进行排序
}
}
}
}
//你用的话要自己在建一个student类我是这样写的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test9
{
public class student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int Grade;
public int Grade1
{
get { return Grade; }
set { Grade = value; }
}
}
}
|