C#类和对象--习题(2)成绩管理

老师口中说,少用static,然后有习题要我们用static来写
实现简单学生成绩管理:(两个类,方法带static)
1.学生及信息录入(id,name,grade)
2.输出成绩
3.修改成绩
4.查询成绩
5.显示成绩
6.退出系统

在这里插入图片描述

Method类:

//定义属性
string id;
string name;
int grade;
//无参构造
public Method()
 {
    
    
  }
//三参构造
public Method(string id, string name, int grade)
 {
    
    
 this.id = id;
 this.name = name;
 this.grade = grade;
  }
static  Method md = new Method();//创建对象
static  Method[] m = new Method[10];//创建对象数组
static int j=0;//对象数组下标
//信息添加
public static void Add(Method g1)
 {
    
    
   Console.Write("请输入id:");
   string id = Console.ReadLine();                       
   Console.Write("请输入姓名:");
   string name = Console.ReadLine();           
   Console.Write("请输入分数:");
   int grade = int.Parse(Console.ReadLine());
   //将信息放入对象数组里面
   g1.id = id;
   g1.name = name;
   g1.grade = grade;
   m[j] = g1;
   //判断id是否存在
   for(int i = 0; i < j; i++)
     {
    
    
       if (m[i].id == id)
        {
    
    
        i--;
        Console.WriteLine("id已存在!请重新输入id");
        id = Console.ReadLine();
        Console.Write("请输入姓名:");
        name = Console.ReadLine();
        Console.Write("请输入分数:");
        grade = int.Parse(Console.ReadLine());                  
         }
      }
     g1.id = id;
     g1.name = name;
     g1.grade = grade;
     Console.WriteLine("添加成功:" + "id为:" + m[j].id + " " + "姓名为:" + m[j].name + " " + "成绩为:" + m[j].grade);
     j++;//添加功能执行后,j++,j表示数组下标                   
}        
//删除分数
static int flag=0;//判断id是否存在
public static void Del()
 {
    
    
  Console.Write("请输入要删除分数的id:");
  string id = Console.ReadLine();
  //这里用i<j,因为不删除学生,只有j个学生                
  for(int i = 0; i < j; i++)
   {
    
    
   if (m[i].id==id)
    {
    
    
     flag = 1;//如果存在,k=1
     m[i].grade = 0;//这里的删除成绩只是将分数置为0,有待优化
     Console.WriteLine("删除成功:" + "id为:" + m[i].id + " " + "姓名为:" + m[i].name + " " + "成绩为:" + m[i].grade);
     break;                  
    }              
   }
   if (flag == 0)//如果没有经过上面if循环,则flag一直为0
    {
    
    
    Console.WriteLine("查无此人!");
    }
   flag = 0;//保持每一次执行后,flag都为0
}     
//修改分数   
public static void Updata()
 {
    
    
  Console.Write("请选择要修改分数的id:");
  string id = Console.ReadLine();
  for (int i = 0; i < j; i++)
   {
    
    
    if (id == m[i].id)
     {
    
    
      Console.Write("请修改分数:");
      int grade = int.Parse(Console.ReadLine());
      m[i].grade = grade;
     }
   }
  }
//查询学生信息
public static void Search()
  {
    
    
  Console.Write("请选择你要查询信息的id:");
  string id = Console.ReadLine();
  for (int i = 0; i < j; i++)
  {
    
    
  if(id == m[i].id)
   {
    
    
    Console.WriteLine("查询到了:"+"id为:" + m[i].id + " " + "姓名为:" + m[i].name + " " + "成绩为:" + m[i].grade);
   }
  }
}
//显示所有学生信息
public static void ShowInfo()
 {
    
    
  for(int i = 0; i <j; i++)
   {
    
    
     Console.WriteLine("id为:"+m[i].id+" "+"姓名为:"+m[i].name+" "+"成绩为:"+m[i].grade);
   }
 }

Grade类

class Grade
 {
    
                   
  void Cj()
   {
    
    
    while (true)
     {
    
    
      Console.WriteLine("*********************************************************");
      Console.WriteLine("*成绩操作:1.添加 2.删除 3.修改 4.查询 5.显示 0.退出系统*");
      Console.WriteLine("*********************************************************");            
      Console.Write("输入数字:");
      int num = int.Parse(Console.ReadLine());
      Method method = new Method();//对应Method中的无参构造
      //Method method = new Method("1", "zhang", 1);
      //对应Method中三参构造,里面的“1”,“张”,1没有影响,只是为了得到Method对象,完成方法的调用
      switch (num)
      {
    
    
      case 1:
        Method.Add(method);
        break;
      case 2:
         Method.Del();
         break;
      case 3:
         Method.Updata();
         break;
      case 4:
         Method.Search();
         break;
      case 5:
         Method.ShowInfo();
         break;
      case 0:
         Console.WriteLine("程序结束!");
         Environment.Exit(0);
         break;
      default: 
         Console.WriteLine("操作有误!");
         break;
      }
    }            
  }
static void Main(string[] args)
  {
    
     
  Grade g = new Grade();//创建对象
  g.Cj();//调用方法
   }
}

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/125834378