C#||设计一个学生的成绩管理系统

简介: C#||设计一个学生的成绩管理系统

题目:

设计一个学生的成绩管理系统(学生类、课程类、成绩类)包含以下功能:①登记学生②登记课程③选课④登记成绩⑤排名⑥输出信息

思路:

首先定义是三个类:学生类、课程类、成绩类,再定义一个成绩管理系统类,用来管理上述三个类,然后编写各个选项的具体功能。在定义学生类中,因为后续会对学生进行成绩排名,因此将学生的选课和其成绩存放在了字典里;在选课设计和登记成绩的过程中,通过多次使用if-else语句判断该生是否选过此课程和该课程是否存在的问题;在排名功能中就是简单的排序通过students.OrderBy(s => s.Grades.Values.Average())对学生列表进行排序,计算其成绩字典(Grades)中所有成绩的平均值,然后按照平均值进行排序。再将学生按照排名输出即可;输出功能则使用for-each函数,输出各个学生的各个相关信息。最后主函数中布局页面内容,用Switch函数来选择将要执行的功能,每个分支语句调用该功能具体函数即可。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace StudentScoreManageSystem
{
    // 学生类
    class Student
    {
        public string Name { get; set; }
        public string ID { get; set; }
        public Dictionary<string, int> Grades { get; set; }  
// key为课程名称,value为成绩
        public Student(string name, string id)
        {
            Name = name;
            ID = id;
            Grades = new Dictionary<string, int>();
        }
    }
    // 课程类
    class Course
    {
        public string CourseName { get; set; }
        public Course(string courseName)
        {
            CourseName = courseName;
        }
    }
    // 成绩类
    class Grade
    {
        public Student Student { get; set; }
        public Course Course { get; set; }
        public int Score { get; set; }
 
        public Grade(Student student, Course course, int score)
        {
            Student = student;
            Course = course;
            Score = score;
        }
    }
    // 成绩管理系统类
    class GradeManagementSystem
    {
        private List<Student> students;
        private List<Course> courses;
        private List<Grade> grades;
 
        public GradeManagementSystem()
        {
            students = new List<Student>();
            courses = new List<Course>();
            grades = new List<Grade>();
        }
        // 登记学生
        public void RegisterStudent(string name, string id)
        {
            students.Add(new Student(name, id));
            Console.WriteLine("学生登记成功!");
        }
        // 登记课程
        public void RegisterCourse(string courseName)
        {
            courses.Add(new Course(courseName));
            Console.WriteLine("课程登记成功!");
        }
        // 选课
        public void SelectCourse(string studentID, string courseName)
        {
            Student student = students.Find(s => s.ID == studentID);
            Course course = courses.Find(c => c.CourseName == courseName);
 
            if (student != null && course != null)
            {
                // 判断学生是否已选过该课程
                if (student.Grades.ContainsKey(courseName))
                {
                    Console.WriteLine("学生已经选过该课程!");
                }
                else
                {
                    student.Grades.Add(courseName, 0);
                    Console.WriteLine("选课成功!");
                }
            }
            else
            {
                Console.WriteLine("学生或课程不存在!");
            }
        }
        // 登记成绩
        public void EnterGrade(string studentID, string courseName, int score)
        {
            Student student = students.Find(s => s.ID == studentID);
            Course course = courses.Find(c => c.CourseName == courseName);
 
            if (student != null && course != null)
            {
                // 判断学生是否已选过该课程
                if (student.Grades.ContainsKey(courseName))
                {
                    student.Grades[courseName] = score;
                    grades.Add(new Grade(student, course, score));
                    Console.WriteLine("成绩登记成功!");
                }
                else
                {
                    Console.WriteLine("该课程不在学生选择的课程中!");
                }
            }
            else
            {
                Console.WriteLine("学生或课程不存在!");
            }
        }
        // 排名
        public void PrintRanking()
        {
            List<Student> rankedStudents = students.OrderBy(s => s.Grades.Values.Average()).ToList();
            for (int i = rankedStudents.Count - 1; i >= 0; i--)
            {
                Student student = rankedStudents[i];
                Console.WriteLine($"排名第{i}的学生:{student.Name},平均成绩:{student.Grades.Values.Average()}");
            }
        }
        // 输出信息
        public void PrintInformation()
        {
            Console.WriteLine("学生信息:");
            foreach (Student student in students)
            {
                Console.WriteLine($"姓名:{student.Name},学号:{student.ID}");
                Console.WriteLine("已选课程:");
                foreach (string course in student.Grades.Keys)
                {
                    Console.WriteLine(course);
                }
                Console.WriteLine();
            }
            Console.WriteLine("课程信息:");
            foreach (Course course in courses)
            {
                Console.WriteLine($"课程名称:{course.CourseName}");
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
                GradeManagementSystem system = new GradeManagementSystem();
 
                while (true)
                {
                    Console.WriteLine("请选择功能:");
                    Console.WriteLine("1. 登记学生");
                    Console.WriteLine("2. 登记课程");
                    Console.WriteLine("3. 选课");
                    Console.WriteLine("4. 登记成绩");
                    Console.WriteLine("5. 排名");
                    Console.WriteLine("6. 输出信息");
                    Console.WriteLine("0. 退出");
 
                    string choice = Console.ReadLine();
 
                    switch (choice)
                    {
                        case "1":
                            Console.WriteLine("请输入学生姓名:");
                            string name = Console.ReadLine();
                            Console.WriteLine("请输入学生学号:");
                            string id = Console.ReadLine();
                            system.RegisterStudent(name, id);
                            break;
                        case "2":
                            Console.WriteLine("请输入课程名称:");
                            string courseName = Console.ReadLine();
                            system.RegisterCourse(courseName);
                            break;
                        case "3":
                            Console.WriteLine("请输入学生学号:");
                            string studentID = Console.ReadLine();
                            Console.WriteLine("请输入课程名称:");
                            string selectedCourseName = Console.ReadLine();
                            system.SelectCourse(studentID, selectedCourseName);
                            break;
                        case "4":
                            Console.WriteLine("请输入学生学号:");
                            string gradeStudentID = Console.ReadLine();
                            Console.WriteLine("请输入课程名称:");
                            string gradeCourseName = Console.ReadLine();
                            Console.WriteLine("请输入成绩:");
                            int score = int.Parse(Console.ReadLine());
                            system.EnterGrade(gradeStudentID, gradeCourseName, score);
                            break;
                        case "5":
                            system.PrintRanking();
                            break;
                        case "6":
                            system.PrintInformation();
                            break;
                        case "0":
                            Environment.Exit(0);
                            break;
                        default:
                            Console.WriteLine("无效的选择,请重新输入!");
                            break;
                    }
                    Console.WriteLine();
                }
            }
        }
    }


测试:

相关文章
|
7月前
|
C# 数据库
用C#连接到数据库实现学生学籍管理系统(二)
用C#连接到数据库实现学生学籍管理系统
|
11月前
|
SQL 数据管理 Java
C#宿舍管理系统(C#课程设计含源码)
C#宿舍管理系统(C#课程设计含源码)
115 0
C#宿舍管理系统(C#课程设计含源码)
|
11月前
|
程序员 C#
C#财务管理系统(C#课程设计)
C#财务管理系统(C#课程设计)
86 0
|
7月前
|
开发框架 数据管理 .NET
C#第三方实验室LIMS管理系统(成品源码)
LIMS系统的功能根据实验室的规模和任务而有所不同,其系统主要功能包括:系统维护、基础数据编码管理,样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨大的变化,提高检测实验室的整体业务能力和工作效率,由此全面提高检测实验室的管理水平
|
7月前
|
C# 数据库
用C#连接到数据库实现学生学籍管理系统(三)
用C#连接到数据库实现学生学籍管理系统
|
7月前
|
C# 数据库 C语言
用C#连接到数据库实现学生学籍管理系统(一)
用C#连接到数据库实现学生学籍管理系统
|
11月前
|
程序员 C# 开发工具
基于C#实现的车辆停车管理系统(毕业设计)
基于C#实现的车辆停车管理系统(毕业设计)
99 0
|
11月前
|
存储 程序员 C#
基于C#实现的学生成绩管理系统
基于C#实现的学生成绩管理系统
129 0
|
11月前
|
SQL 数据库 C#
C#学生管理系统
基于C#实现的学生管理系统
70 0
|
2月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。