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

2023-11-19

老师口中说,少用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();//调用方法
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#类和对象--习题(2)成绩管理 的相关文章

  • 为什么使用abs()或fabs()而不是条件否定?

    在 C C 中 为什么要使用abs or fabs 不使用以下代码即可查找变量的绝对值 int absoluteValue value lt 0 value value 这与较低级别的指令较少有关吗 您提出的 有条件的abs 并不等于std
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐

  • UnityLuaMvvM Lua 带通知的Mode类

    实现数据更新UI自动刷新的核心代码 欢迎关注https gitee com xiongks UnityMVVM mode function modeType local obj obj modeType modeType obj filds
  • extends OverWrite

    extends 扩展延伸 继承 用这个方法对class有了进一步的汇总 减少了对具有相同属性的类重复enter的工作量 使函数模块化更高 注 构造函数内的属性和方法能继承 package Extends 定义一个父类public class
  • 远程桌面连接技术【包含出现问题的解决手段】

    远程桌面连接技术 文章目录 远程桌面连接技术 前言 定义 远程连接的方法 远程桌面协议 RDP 由于我没有两台电脑 这里用虚拟机演示 1 为两台计算机设置相同的网段的 IP 地址 2 远程计算机的设置 2 1 在电脑中找到 远程桌面连接 2
  • 【单片机】keil和Proteus使用教程

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 kei
  • I/O流之进步认识、InputStream以及FileInputStream

    File类 用于描述一个文件或者文件夹的 通过File对象 我们可以读取文件或者文件夹的属性数据 如果我们需要读取文件的内容数据 那么我们需要使用IO流技术 IO流 Input Output IO流解决问题 解决设备与设备之间的数据传输问题
  • Windows 10安装WSA(WindowsSubsystemForAndroid)

    0 Win10安装好了仍然不能用 Win10安装好了仍然不能用 Win10安装好了仍然不能用 抱着试一试的心态装了一下 果然不行 随手记录下 1 首先 直接在应用商店里下载WSA是会报错的 所以要从微软商店把这个包下载下来 打开https
  • 下载 arm-linux-gcc

    https releases linaro org components toolchain binaries latest 4 arm linux gnueabihf 如果你使用的是ubuntu系统 你可以使用apt方式来安装arm li
  • mybatis plus中update_time字段未自动更新

    参考 MyBatis Plus官方文档 mybatis plus对于create time update time这样的数据库字段提供了自动插入功能 不用每次都手动进行更新 使用指南 加 TableField注解 自定义实现类TimeMet
  • 抗击疫情,AI可以做些什么?

    目前 新冠疫情的发展 可以说无时无刻不在牵动着大家的心 在这样的历史背景下 作为人工智能 数据科学领域的从业者 我们不妨来探讨一下 AI在遏制类似的疾病传播中 可以起到什么样的作用 当然 单纯靠AI技术确实无法让病毒停止传播 在一定时期内
  • STM32的单脉冲模式实现精确个数脉冲

    我们在做嵌入式产品的开发过程中 有时需要输出指定数目的脉冲 实现它的方法较多 这里介绍一种利用 STM32定时器的单脉冲模式来实现的方法 STM32定时器的单脉冲输出功能 其实是定时器输出比较功能的一个特殊应用 即让定时器在某个事件触发后的
  • keil mdk代码提示与代码补全设置

    主要参考https blog csdn net w5862338 article details 50520423 结合自己的实际问题 一旦习惯了一些实用的功能 当进入到类似的环境中而没有熟悉的功能 会觉得很不方便 代码提示与补全就是这样实
  • 60-400-045-使用-binlog-Maxwell读取MySQL binlog日志到Kafka

    文章目录 启动MySQL 创建maxwell的数据库和用户 在MySQL中创建一个测试数据库和表 启动Zookeeper 启动kafka 并创建主题为maxwell的topic 启动kafaka的消费者 检查数据是否到位 启动maxwell
  • [网络安全]sqli-labs Less-17 解题详析

    考察报错注入 本文使用extractvalue进行注入 原理及姿势可参考 网络安全 sqli labs Less 5 解题详析 判断注入类型 由以下回显可知 注入类型为单引号注入 查库名 账号输入admin 密码输入 1 and extra
  • Visual C++6.0的安装及使用教程

    Visual C 6 0下载链接 链接 https pan baidu com s 18ubNr9Gor3GbRrAkJe612w 密码 piek 对刚学习C语言或C 的小伙伴们来说 一款简单好用的编译器必不可少 今天给大家介绍的是Visu
  • 深度学习小白——DenseNet学习

    原论文地址 https arxiv org abs 1608 06993 用Keras写的pre model代码地址 https github com flyyufelix DenseNet Keras 一 主要原理 其借鉴了ResNet的
  • 深度学习如何集成领域知识?IBM研究等《知识增强深度学习》综述,全面阐述科学与经验知识增强的深度学习...

    来源 专知 尽管在过去的几年里 深度学习模型在许多不同的领域取得了巨大的成功 但通常数据匮乏 在不可见的样本上表现不佳 而且缺乏可解释性 目标领域往往存在各种先验知识 利用这些先验知识可以弥补深度学习的不足 为了更好地模仿人类大脑的行为 人
  • 下面是两种解决Redis击穿问题的方法,并给出相应的Java代码实现。

    Redis击穿问题指的是当一个key在缓存中过期时 恰好有大量并发请求访问该key 导致请求直接打到数据库 引起数据库压力过大 甚至宕机 方法一 使用互斥锁 在访问缓存之前 首先获取一个互斥锁 防止多个请求同时访问数据库 只有一个请求可以访
  • 转 用十条命令在一分钟内检查Linux服务器性能

    如果你的Linux服务器突然负载暴增 告警短信快发爆你的手机 如何在最短时间内找出Linux性能问题所在 来看Netflix性能工程团队的这篇博文 看它们通过十条命令在一分钟内对机器性能问题进行诊断 概述 通过执行以下命令 可以在1分钟内对
  • 开发百度地图定位APP(LBS)

    一 注册成为百度地图开发者 并获取开发密钥 获取密钥时需要进入Android studio使用keytool文件获取SHA1码 二 下载开发包解压并导入Android studio 选择自己需要的开发包下载 这里我选择的是基础地图基础定位J
  • C#类和对象--习题(2)成绩管理

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