最近刚学习C# 老师留了两个作业 实在想不出来怎么做 麻烦大神帮忙解答一下

2024-12-29 15:18:22
推荐回答(1个)
回答1:

实现方法有很多种,初学者 建议你使用 if else 遍历 等等 加固下基础知识

我就不写那些啰嗦代码了 .... 实现方法 大致如下

  class Program
    {
        static void Main(string[] args)
        {
            // 1. 定义玩家类,并创建玩家对象
            // 解决 思路  
            // 1)必须知道12星座的时间 之后就是两者时间的间隔对比 
            // 2) 实现方法有很多种 if else  switch 初学者我建议你使用 这些,啰嗦代码有点多,是基础
            // 实现第一题
            //调用玩家对象
            var players = new Players(Convert.ToDateTime("1994/6/21"));

            //获取玩家的出生日期
            Console.WriteLine(players.DateOfBirth);
            //获取玩家的星座
            Console.WriteLine(players.Constellation);
            Console.WriteLine("你出生日期是:{0} 你的星座是:{1}", players.DateOfBirth, players.Constellation);
            Console.WriteLine("\r\n");
            //2. 某班有5个学生,三门课(数学,英语和语文)。分别实现以下要求 
            //填充学生数据 5个学生 这里使用了继承,你可以写在一个类中
            var studentData = new List()
            {
                new Student(){Id=1002001, Name="学生1", Language=60, English=85, Mathematics=70},
                new Student(){Id=1002002, Name="学生2", Language=50, English=59, Mathematics=80},
                new Student(){Id=1002003, Name="学生3", Language=59, English=85, Mathematics=40},
                new Student(){Id=1002004, Name="学生4", Language=100, English=90, Mathematics=90},
                new Student(){Id=1002005, Name="学生5", Language=20, English=40, Mathematics=30},
            };

            //(1)求各门课的平均分; =总分/人数  =>你可以使用遍历实现,啰嗦代码有点多,我就不写了...建议你去写实现
            var languageAge = studentData.Sum(s => s.Language) / studentData.Count;
            var englishAge = studentData.Sum(s => s.English) / studentData.Count;
            var mathematicsAge = studentData.Sum(s => s.Mathematics) / studentData.Count;
            Console.WriteLine("-------------平均分-------------");
            Console.WriteLine("语文:{0} 数学:{1} 英语:{2}", languageAge, mathematicsAge, englishAge);

            //(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;
            // 两门以上= 3门课不及格 如果课多 可以写一个独立方法计算

            var getFailStudent = studentData.Where(w =>
            {
                if (w.Language < 60 && w.Mathematics < 60 && w.English < 60) { return true; }
                return false;
            }).ToList();

            Console.WriteLine("\r\n\r\n-------------两门以上不及格的学生信息-------------\r\n");

            foreach (var item in getFailStudent)
            {
                Console.WriteLine("学号:{0} 姓名:{1}", item.Id, item.Name);
                Console.WriteLine("语文:{0} 数学:{1} 英文:{2}", item.Language, item.Mathematics, item.English);
            }

            //(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名 ;
            var getPassStudent = studentData.Where(w =>
            {
                if (
                (((w.Language + w.Mathematics + w.English) / 3) >= 85) && (((w.Language + w.Mathematics + w.English) / 3) <= 90))
                { return true; }
                return false;
            }).ToList();
            Console.WriteLine("\r\n\r\n-------------三门课平均成绩在85-90分的学生-------------\r\n");

            foreach (var item in getPassStudent)
            {
                Console.WriteLine("学号:{0} 姓名:{1}", item.Id, item.Name);
                Console.WriteLine("语文:{0} 数学:{1} 英文:{2}", item.Language, item.Mathematics, item.English);
            }
            Console.ReadKey();

        }
    }

    /// 
    /// 玩家类
    /// 

    public class Players
    {
        /// 
        /// 出生日期
        /// 

        public DateTime DateOfBirth { get; set; }

        /// 
        /// 星座
        /// 

        public string Constellation { get; set; }

        /// 
        /// 构造函数 根据输入的出生日期 得到星座
        /// 

        /// 
        public Players(DateTime dateOfBirth)
        {
            var getClName = GetConstellation(dateOfBirth);
            this.DateOfBirth = dateOfBirth;
            this.Constellation = getClName;

        }

        /// 
        /// 根据日期计算星座
        /// 

        /// 
        /// 
        string GetConstellation(DateTime date)
        {
            //3月21日~4月19日,白羊座
            //4月20日~5月20日,金牛座
            //5月21日~6月20日,双子座
            //6月21日~7月21日,巨蟹座
            //7月22日~8月22日,狮子座
            //8月23日~9月22日,处女座
            //9月23日~10月22日,天秤座
            //10月23日~11月21日,天蝎座
            //11月22日~12月21日,射手座
            //12月22日~1月19日,摩羯座
            //1月20日~2月18日,水瓶座
            //2月19日~3月20日,双鱼座
            var clDate = new List()
            {
                "3/21-4/19,白羊座",
                "4/20-5/20,金牛座",
                "5/21-6/20,双子座",
                "6/21-7/21,巨蟹座",
                "7/22-8/22,狮子座",
                "8/23-9/22,处女座",
                "9/23-10/22,天秤座",
                "10/23-11/21,天蝎座",
                "11/22-12/21,射手座",
                "12/22-1/19,摩羯座",
                "1/20-2/18,水瓶座",
                "2/19-3/20,双鱼座"
            };
            var cYear = date.ToString("yyyy"); //提取出生年
            //计算时间间隔获取星座信息
            var name = clDate.Where(w =>
            DateTime.Compare(date, Convert.ToDateTime(cYear + "/" + w.Split(',')[0].Split('-')[0])) >= 0
            &&
             DateTime.Compare(date, Convert.ToDateTime(cYear + "/" + w.Split(',')[0].Split('-')[1])) <= 0
            );
            return name.ToList()[0].Split(',')[1];
        }
    }

    /// 
    /// 教课 基类
    /// 

    public class Teach
    {
        /// 
        /// 语文课 分数
        /// 

        public double Language { get; set; }

        /// 
        /// 数学分数
        /// 

        public double Mathematics { get; set; }

        /// 
        /// 英文分数
        /// 

        public double English { get; set; }

    }

    /// 
    /// 学生类
    /// 

    public class Student : Teach
    {
        /// 
        /// 学号
        /// 

        public long Id { get; set; }

        /// 
        /// 学生姓名
        /// 

        public string Name { get; set; }
    }