题目
设计一个学生的成绩管理系统系统(包含学生类、课程类、成绩类)
- 登记学生
- 登记课程
- 选课
- 登记成绩
- 排名
- 输出信息
思路
题目是设计一个学生管理系统,主要用于登记学生、课程、选课、登记成绩和排名等功能。设计思路是将学生、课程和成绩分别定义为不同的类,然后在学生管理系统类中进行管理,在学生管理系统类中,我使用了三个列表来分别存储学生、课程和成绩信息,在程序运行时,用户可以通过输入数字选择不同的功能。例如,用户可以选择登记学生,输入学生的姓名、学号和性别;当用户选择选课功能时,程序会提示用户输入学生的学号和课程的编号,然后通过查找学生和课程对象来判断是否可以选课;如果可以选课,程序会将选课信息添加到成绩列表中;当用户选择登记成绩功能时,程序会提示用户输入学生的学号和课程的编号,然后通过查找成绩列表中是否存在该学生和课程的成绩来判断是否可以登记成绩;如果可以登记成绩,程序会提示用户输入成绩,并将成绩更新到成绩列表中;当用户选择排名功能时,程序会将成绩列表按照成绩从高到低排序,并输出排名结果。
程序
using System;
using System.Collections.Generic;
// 学生类
class Student
{
public string Name {
get;
set;
}
public string StudentID {
get;
set;
}
public string Gender {
get;
set;
}
public Student(string name, string studentID, string gender)
{
Name = name;
StudentID = studentID;
Gender = gender;
}
}
// 课程类
class Course
{
public string CourseName {
get;
set;
}
public string CourseID {
get;
set; }
public Course(string courseName, string courseID)
{
CourseName = courseName;
CourseID = courseID;
}
}
// 成绩类
class Grade
{
public Student Student {
get;
set; }
public Course Course {
get;
set; }
public double Score {
get;
set; }
public Grade(Student student, Course course, double score)
{
Student = student;
Course = course;
Score = score;
}
}
// 成绩管理系统类
class StudentManagementSystem
{
private List<Student> students;
private List<Course> courses;
private List<Grade> grades;
public StudentManagementSystem()
{
students = new List<Student>();
courses = new List<Course>();
grades = new List<Grade>();
}
// 登记学生
public void RegisterStudent()
{
Console.WriteLine("请输入学生姓名:");
string name = Console.ReadLine();
Console.WriteLine("请输入学号:");
string studentID = Console.ReadLine();
Console.WriteLine("请输入性别:");
string gender = Console.ReadLine();
Student student = new Student(name, studentID, gender);
students.Add(student);
Console.WriteLine("学生登记成功!");
}
// 登记课程
public void RegisterCourse()
{
Console.WriteLine("请输入课程名称:");
string courseName = Console.ReadLine();
Console.WriteLine("请输入课程编号:");
string courseID = Console.ReadLine();
Course course = new Course(courseName, courseID);
courses.Add(course);
Console.WriteLine("课程登记成功!");
}
// 选课
public void SelectCourse()
{
Console.WriteLine("请输入学生学号:");
string studentID = Console.ReadLine();
Console.WriteLine("请输入课程编号:");
string courseID = Console.ReadLine();
Student student = students.Find(s => s.StudentID == studentID);
Course course = courses.Find(c => c.CourseID == courseID);
if (student != null && course != null)
{
Grade existingGrade = grades.Find(g => g.Student == student && g.Course == course);
if (existingGrade != null)
{
Console.WriteLine("该学生已经选过该课程!");
}
else
{
grades.Add(new Grade(student, course, 0));
Console.WriteLine("选课成功!");
}
}
else
{
Console.WriteLine("学生或课程不存在!");
}
}
// 登记成绩
public void RegisterScore()
{
Console.WriteLine("请输入学生学号:");
string studentID = Console.ReadLine();
Console.WriteLine("请输入课程编号:");
string courseID = Console.ReadLine();
Student student = students.Find(s => s.StudentID == studentID);
Course course = courses.Find(c => c.CourseID == courseID);
if (student != null && course != null)
{
Grade grade = grades.Find(g => g.Student == student && g.Course == course);
if (grade != null)
{
Console.WriteLine("请输入成绩:");
double score;
if (double.TryParse(Console.ReadLine(), out score))
{
grade.Score = score;
Console.WriteLine("成绩登记成功!");
}
else
{
Console.WriteLine("无效的成绩输入!");
}
}
else
{
Console.WriteLine("该学生未选修该课程!");
}
}
else
{
Console.WriteLine("学生或课程不存在!");
}
}
// 排名
public void Rank()
{
List<Grade> sortedGrades = new List<Grade>(grades);
sortedGrades.Sort((g1, g2) => g2.Score.CompareTo(g1.Score));
Console.WriteLine("*------------ 排名结果 --------------*");
for (int i = 0; i < sortedGrades.Count; i++)
{
Grade grade = sortedGrades[i];
Console.WriteLine("\t{0}. 学生姓名:{1},课程名称:{2},成绩:{3}", i + 1, grade.Student.Name, grade.Course.CourseName, grade.Score);
}
}
// 输出信息
public void PrintInfo()
{
Console.WriteLine("*------------ 学生列表 --------------*");
foreach (Student student in students)
{
Console.WriteLine("\t姓名:{0},学号:{1},性别:{2}", student.Name, student.StudentID, student.Gender);
}
Console.WriteLine(" * ------------课程列表-------------- * ");
foreach (Course course in courses)
{
Console.WriteLine("\t课程名称:{0},课程编号:{1}", course.CourseName, course.CourseID);
}
}
}
// 测试
class Program
{
static void Main(string[] args)
{
StudentManagementSystem system = new StudentManagementSystem();
while (true)
{
Console.WriteLine("************* 学生管理系统 ***************");
Console.WriteLine("\n*------------ 1. 登记学生 --------------*");
Console.WriteLine("*------------ 2. 登记课程 --------------*");
Console.WriteLine("*------------ 3. 选课 --------------*");
Console.WriteLine("*------------ 4. 登记成绩 --------------*");
Console.WriteLine("*------------ 5. 排名 --------------*");
Console.WriteLine("*------------ 6. 输出信息 --------------*");
Console.WriteLine("*------------ 0. 退出 --------------*");
Console.WriteLine("请输入你的选择:");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
system.RegisterStudent();
break;
case "2":
system.RegisterCourse();
break;
case "3":
system.SelectCourse();
break;
case "4":
system.RegisterScore();
break;
case "5":
system.Rank();
break;
case "6":
system.PrintInfo();
break;
case "0":
return;
default:
Console.WriteLine("输入有误!");
break;
}
Console.WriteLine();
}
}
}
运行截图