本文实例为大家分享了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();
}
}
}
以上就是用一些简单的代码完成一个简易的学生管理系统