C#实现学生管理系统

Carmen ·
更新时间:2024-11-13
· 933 次阅读

本文实例为大家分享了C#实现学生管理系统的具体代码,供大家参考,具体内容如下

添加3个类,分别实现 IComparer接口,实现对Student类的三个字段的排序。

1、学生类:学号、姓名、年龄
2、请选择:1、添加学生信息。2、删除学生信息 2、查询学生信息。
3、重复的学号不能添加。
4、查询学生信息功能中有:1、查询所有(按学号排序)2、查询所有(按姓名排序),2、查询所有(按年龄排序)4、按学号查询(查没有,则打印查无此学生)5、退出

学生类

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01 {     class Student     {         public string Num { get; set; }//学号         public string Name { get; set; }//姓名         public int Age { get; set; }//年龄         //创建带参的构造方法         public Student(string num,string name,int age) {             this.Num = num;             this.Name = name;             this.Age = age;         }         //创建无参的构造方法,在本次代码中未使用         public Student() { }         //重写了Tostring()的方法将字典中的值输出打印         public override string ToString()         {             return $"学号:{Num}姓名:{Name}年龄:{Age}";         }         //创建比较器用于比较         public int CompareTo(Student other)         {             return this.Num.CompareTo(other.Num);         }     } }

工具类(Utility)

工具类中封装了一些方法用于调用,使得主方法中的代码简洁

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01 {     //判断输入的数字是否正确     class Utility     {         public static int readMenuSelection() {         int c;         for (; ; ) {              c = int.Parse(Console.ReadLine());              if (c != 1 && c != 2 && c != 3 && c != 4) {                     Console.WriteLine("选择错误,请重新输入:");              } else break;         }         return c;     }         public static int readMenuSelection2()         {             int c;             for (; ; )             {                 c = int.Parse(Console.ReadLine());                 if (c != 1 && c != 2 && c != 3 && c != 4&&c!=5)                 {                     Console.WriteLine("选择错误,请重新输入:");                 }                 else break;             }             return c;         }         //用于确认选择的输入。该方法从键盘读取‘Y'或'N',并将其作为方法的返回值。         public static string readConfirmSelection()         {             string b;             for (; ; )             {                 b = Console.ReadLine();                 //将输入的值转换成小写的字母,用于用户区分大小写的输入                 string c = b.ToLowerInvariant();                 if (c.Equals("y")||c.Equals("n"))                 {                     break;                 }                 else                 {                     Console.WriteLine("选择错误,请重新输入:");                  }             }             return b;         }         //创建添加的方法        public static void AddStudent(Dictionary<string, Student> dc)         {             bool Flag = true;             while (Flag)             {                 Console.WriteLine("请输入学号:");                 string num = Console.ReadLine();                 Console.WriteLine("请输入姓名:");                 string name = Console.ReadLine();                 Console.WriteLine("请输入年龄:");                 int age = int.Parse(Console.ReadLine());                 Student student = new Student(num, name, age);                 //判断输入的学号是否重复                 if (!dc.ContainsKey(num))                 {                     dc.Add(student.Num, student);                     Console.WriteLine("添加成功");                 }                 else                 {                     Console.WriteLine("已存在,添加失败");                 }                 Console.WriteLine("是否继续添加(Y/N)):");                 string b = Utility.readConfirmSelection();                 if (b.Equals("n"))                 {                     Flag = false;                 }             }             }         //创建一个输出全部信息的方法         public static void Print(Dictionary<string,Student> dc) {             //循环遍历,将 Dictionary<K,V> 类中的值赋值给item             //需要重写Tostring方法,否则输出的值为该值得命名空间             foreach (var item in dc.Values)             {                 Console.WriteLine(item);             }         }         //删除学生信息         public static void DeleteStudent(Dictionary<string, Student> dc) {             Console.WriteLine("请输入要删除的学生学号");             string num = Console.ReadLine();             //判断num值是否在该类中             if (dc.ContainsKey(num))             {                 //根据提供的num移除目标                 dc.Remove(num);                 Console.WriteLine("删除成功");             }             else             {                 Console.WriteLine("该学号的学生信息不存在");             }         }         //将排序后的元素输出         internal static void Print(List<Student> students)         {             foreach (var item in students)             {                 Console.WriteLine(item);             }         }         //按照学号查询,如果没查到返回查无此人         public static void QueryByNum(Dictionary<string, Student> dc)         {             Console.WriteLine("请输入你要查询的学号");             string num = Console.ReadLine();             //             if (dc.ContainsKey(num))             {                 Console.WriteLine(dc[num]);             }             else             {                 Console.WriteLine("查无此人");             }         }         //按年龄排序         public static void Age(Dictionary<string, Student> dc)         {             List<Student> students = new List<Student>();             //字典中无序,将字典中的值存放到有序的list集合中             students.AddRange(dc.Values);             //调用NameSort的方法             students.Sort(new AgeSort());             Utility.Print(students);         }         //按名字排序         public static void NameSort(Dictionary<string, Student> dc)         {             List<Student> students = new List<Student>();             //字典中无序,将字典中的值存放到有序的list集合中             students.AddRange(dc.Values);             //调用NameSort的方法             students.Sort(new NameSort());             Utility.Print(students);         }         //按学号排序         public static void NumSort(Dictionary<string, Student> dc)         {             List<Student> students = new List<Student>();             //字典中无序,将字典中的值存放到有序的list集合中             students.AddRange(dc.Values);             //调用NameSort的方法             students.Sort(new NumSort());             Utility.Print(students);         }     } }

比较器

创建三个比较器用于比较排序,使用IComparer<>接口

1.年龄比较器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01 {     class NameSort : IComparer<Student>     {         public int Compare(Student x, Student y)         {             return x.Name.CompareTo(y.Name);         }     } }

2.姓名比较器`

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01 {     class NameSort : IComparer<Student>     {         public int Compare(Student x, Student y)         {             return x.Name.CompareTo(y.Name);         }     } }

3.学号比较器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01 {     //构造比较器,进行比较     class NumSort : IComparer<Student>     {         public int Compare(Student x, Student y)         {             return x.Num.CompareTo(y.Num);         }     } }

主方法中的代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace _01 {     class Program     {         static void Main(string[] args)         {             Student stu1 = new Student("007","李华",12);             Student stu2 = new Student("004", "张三", 13);             //Dictionary<数据类型,数据类型> 对象名 = new Dictionary<数据类型,数据类型>();             Dictionary<string, Student> ha = new Dictionary<string, Student>();             //将学生类对象添加到字典中             ha.Add(stu1.Num,stu1);             ha.Add(stu2.Num,stu2);             bool Flag = true;             while (Flag)             {             Console.WriteLine("请选择:1、添加学生信息。2、删除学生信息 3、查询学生信息;4.退出");             int a = Utility.readMenuSelection();             switch (a)             {                 case 1:                     //添加                     Utility.AddStudent(ha);                     //输出                     Utility.Print(ha);                     break;                 case 2:                     //删除                     Utility.DeleteStudent(ha);                     Utility.Print(ha);                     break;                 case 3:                         //查询                         Console.WriteLine("1、查询所有(按学号排序)2、查询所有(按姓名排序),3、查询所有(按年龄排序)" +                        "4、按学号查询(查没有,则打印查无此学生)5、退出");                         int q = Utility.readMenuSelection2();                         switch (q)                         {                             case 1:                                 //查询所有(按学号排序)                                Utility.NumSort(ha);                                 break;                             case 2:                                 //查询所有(按姓名排序)                                 Utility.NameSort(ha);                                 break;                             case 3:                                 //查询所有(按年龄排序)                                 Utility.Age(ha);                                 break;                             case 4:                                 //按学号查询(查没有,则打印查无此学生)                                 Utility.QueryByNum(ha);                                 break;                             case 5:                                 //退出                                 break;                             default:                                 break;                         }                         break;                 case 4:                     Console.WriteLine("确认是否退出(Y/N)");                     string b = Utility.readConfirmSelection();                     if (b.Equals("y"))                     {                         Flag = false;                     }                     //退出                     break;                 default:                     break;             }             }             Console.ReadKey();         }     } }

以上就是用一些简单的代码完成一个简易的学生管理系统



学生管理系统 C# 系统

需要 登录 后方可回复, 如果你还没有账号请 注册新账号