using System;
using System.Collections.Generic;
namespace GPAMgr
{
class Program
{
struct Major{
public string Name{get;set;}
public double Credit{get;set;}
public double Score{get;set;}
//绩点的计算自己写,我用的是武汉大学的。
public double Point{get{
if (Score<59) {
return 0d;
}else if (Score<63) {
return 1.0d;
}else if (Score<67) {
return 1.5d;
}else if (Score<71) {
return 2.0d;
}else if (Score<74) {
return 2.3d;
}else if (Score<77) {
return 2.7d;
}else if (Score<81) {
return 3.0d;
}else if (Score<84) {
return 3.3d;
}else if (Score<89) {
return 3.7d;
}else{
return 4.0;
}
}
}
public Major(string name, double credit):this()
{
this.Name = name;
this.Credit = credit;
}
}
class Student{
public string Name{get;set;}
public List<Major> Majors{get;set;}
public int StudentID{get;set;}
public double GPA{
get{
double sum=0d;
double sumCredit=0d;
foreach (var element in Majors) {
sumCredit+=element.Credit;
sum+=element.Credit*element.Point;
}
return (sum/sumCredit);
}
}
public int CompareTo(Student other)
{
return GPA.CompareTo(other.GPA);
}
public override string ToString()
{
return string.Format("{0}, \t{1:#.##}", Name, GPA);
}
}
public static void Main(string[] args)
{
Console.Write("请输入学生总人数");
int stCount= ReadInt32("请输入学生总人数");
int majCount=ReadInt32("请输入选修课程总数");
List<Student> students=new List<Student>(stCount);
List<Major> majs=new List<Major>(majCount);
string name;
double credit;
for (int i = 0; i < majCount; i++) {
Console.Write("请输入选修课程名称");
name=Console.ReadLine();
credit=ReadDouble("请输入选修课程学分");
majs.Add(new Major(name,credit));
}
Major mj;
for (int i = 0; i < stCount; i++) {
Student st=new Student();
Console.Write("请输入学生姓名");
st.Name=Console.ReadLine();
st.StudentID=ReadInt32("请输入学号");
st.Majors=new List<Major>(majCount);
foreach (var element in majs) {
mj=element;
mj.Score=ReadDouble(string.Format("请输入{0}的成绩",element.Name));
st.Majors.Add(mj);
}
students.Add(st);
Console.WriteLine("你的GPA值是:{0:#.##}",st.GPA)
}
students.Sort();
foreach (var element in students) {
Console.WriteLine(students);
}
Console.ReadKey(true);
}
static int ReadInt32(string prom){
int num =0;
Console.Write(prom);
string intput=Console.ReadLine();
while (!int.TryParse(intput,out num)) {
Console.Write(prom);
intput=Console.ReadLine();
}
return num;
}
static double ReadDouble(string prom){
double num =0.0d;
Console.Write(prom);
string intput=Console.ReadLine();
while (!double.TryParse(intput,out num)) {
Console.Write(prom);
intput=Console.ReadLine();
}
return num;
}
}
}
追问代码有误 话说你如果还记得你设计思路
告诉我思路就好了 苦死了 悬赏我提高20好不?
追答思路就是GPA的计算公式啊。
先要知道 用户选了什么课,学分是多少。再知道课程得分,然后根据分数,计算绩点。
GPA 就是 课程绩点*课程学分的总和 ,再去除以课程学分的总和。
追问真是知者不难 难者不知啊…………我再看看……