C# 学生成绩管理程序。根据学生选修的课程及课程学分和课程成绩计算GPA,最后按GPA的值对学生进行排序。

这个怎么实现?

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 就是 课程绩点*课程学分的总和 ,再去除以课程学分的总和。

追问

真是知者不难 难者不知啊…………我再看看……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-25
jia我 Q一九8786三三63 我发程序给你追问

直接贴上来就好了啊 我一般不用QQ的 或者你直接传上来吧

追答

这个是程序运行效果图 加我 我把代码发给你 代码太多不让发

相似回答