C#实现学生成绩管理系统

  /*

  Author:马志勇

  date:2020-10-14

  */

  using System;

  using System.Collections.Generic;

  using System.Diagnostics;

  using System.Linq;

  using System.Text;

  using System.Threading.Tasks;

  namespace ConsoleApplication1

  {

  class Program

  {

  static void Main(string[] args)

  {

  //2. 在用户登录界面提示用户输入用户名和密码,并根据用户名和密码决定    能否登录系统。

  //   3. 合法用户登陆成功后,在屏幕上显示如下功能菜单:

  //          1.学生成绩输入 2.学生成绩输出 3.学生成绩查询 4.学生成绩修改 0.退出系统

  //            提示用户输入选择号,用户输入正确的选择好后执行相应功能。执行完对应功   能后返回功能菜单。

  Console.WriteLine("欢迎来到成绩管理系统!");

  while (true) {

  Console.WriteLine("***请输入账号:");

  String userName = Console.ReadLine();

  Console.WriteLine("***请输入密码:");

  String userPassword = Console.ReadLine();

  if (userName.Equals("123456") && userPassword.Equals("456789"))

  {

  Console.WriteLine("***账号密码正确请进入");

  break;

  }

  else {

  Console.WriteLine("账号密码不一致,是否重新进入![1:重新输入---2:退出]");

  int n = int.Parse(Console.ReadLine());

  while (true) {

  if (n == 1 || n == 2)

  {

  break;

  }

  else {

  Console.WriteLine("***序号有误请重新输入!");

  n = int.Parse(Console.ReadLine());

  }

  }

  if (n==2) {

  Process.GetCurrentProcess().Kill();

  }

  }

  }

  showView();

  showChoice();

  StudentLinkedList link = new StudentLinkedList();

  while (true) {

  Console.WriteLine("***请选这些序号 ");

  int n = int.Parse(Console.ReadLine());

  switch (n) {

  //0.退出系统

  case 0: {

  Process.GetCurrentProcess().Kill();

  break;

  }

  //1.学生成绩输入

  case 1: {

  Console.WriteLine("***请输入ID账号:");

  int id = int.Parse(Console.ReadLine());

  Console.WriteLine("***请输入姓名:");

  String name = Console.ReadLine();

  Console.WriteLine("***请输入成绩:");

  int score = int.Parse(Console.ReadLine());

  link.add(getStudentNode(id, name, score));

  break;

  }

  //2.学生成绩输出

  case 2: {

  link.show();

  break;

  }

  // 3.学生成绩查询

  case 3:

  {

  Console.WriteLine("***请输入你要查找的id账号");

  int index = int.Parse(Console.ReadLine());

  Student student=link.search(index);

  Console.WriteLine(student.toString());

  break;

  }

  //4.学生成绩修改

  case 4:

  {

  Console.WriteLine("***[注]:只能修改成绩!");

  Console.WriteLine("***请输入你要修改的id账号");

  int index = int.Parse(Console.ReadLine());

  Console.WriteLine("***请输入你要修改的id分数");

  int score = int.Parse(Console.ReadLine());

  link.upThis(index, score);

  break;

  }

  case 5:

  {

  Console.WriteLine("***请输入你要删除的id账号");

  int index = int.Parse(Console.ReadLine());

  link.delete(index);

  break;

  }

  default: {

  break;

  }

  }

  showChoice();

  }

  Console.ReadKey();

  }

  //获取节点对象

  public static StudentNode getStudentNode(int id,String name,int score ) {

  return new StudentNode(new Student(id,name,score));

  }

  //启动界面

  // 1.学生成绩输入 2.学生成绩输出 3.学生成绩查询 4.学生成绩修改 0.退出系统

  public static void showView() {

  Console.WriteLine("|----------------------------程序启动---------------------------|");

  Console.WriteLine("| 学生成绩管理系统 |");

  Console.WriteLine("|---------------------------------------------------------------|");

  Console.WriteLine("| 开发人姓名:马志勇 |");

  Console.WriteLine("| 开发时间:2020-20-14 |");

  Console.WriteLine("| 按任意键进入系统 |");

  Console.WriteLine("|---------------------------------------------------------------|");

  }

  public static void showChoice() {

  Console.WriteLine("|---------------------------------------------------------------|");

  Console.WriteLine("| 0.退出系统 |");

  Console.WriteLine("| 1.学生成绩输入 |");

  Console.WriteLine("| 2.学生成绩输出 |");

  Console.WriteLine("| 3.学生成绩查询 |");

  Console.WriteLine("| 4.学生成绩修改 |");

  Console.WriteLine("| 5.删除这个学生 |");

  Console.WriteLine("|---------------------------------------------------------------|");

  }

  }

  class StudentLinkedList

  {

  //定义一个头结点啥都不放

  StudentNode head = null;

  public StudentLinkedList() {

  head=new StudentNode(null);

  }

  //添加 按照学号顺序顺序进行添加

  //如果学号相同则不能添加

  public void add(StudentNode node)

  {

  if (head.next == null)

  {

  head.next = node;

  return;

  }

  //否则定义一个变量临时变量进行处理;

  StudentNode temp = head;

  int id = node.s.getId();

  bool flag = false;

  while (true)

  {

  if (temp.next == null)

  {

  flag = false;

  break;

  }

  if (temp.next.s.getId() > id)

  {

  flag = false;

  break;

  }

  else if (temp.next.s.getId() == id)

  {

  //这个情况是有重复的就不能添加进去

  flag = true;

  break;

  }

  temp = temp.next;

  }

  if (flag)

  {

  Console.WriteLine("这个序号已经存在");

  }

  else {

  node.next=temp.next;

  temp.next = node;

  }

  }

  //删除

  //只能通过id进行删除

  public bool delete(int id) {

  if (head.next==null) {

  return false;

  }

  StudentNode temp = head;

  while (true) {

  if (temp.next==null) {

  return false;

  }

  if (temp.next.s.getId()==id) {

  break;

  }

  temp = temp.next;

  }

  if (temp.next.next != null)

  {

  temp.next = temp.next.next;

  }

  else {

  temp.next = null;

  }

  return true;

  }

  //修改

  //只能修改成绩

  public void upThis(int id,int score) {

  if (head.next == null)

  {

  Console.WriteLine("没有数据,无法修改!");

  return;

  }

  StudentNode temp = head.next;

  while (true) {

  if (temp==null) {

  Console.WriteLine("没有这个ID数据!");

  return;

  }

  if (temp.s.getId()== id) {

  temp.s.setScore(score);

  return;

  }

  temp = temp.next;

  }

  }

  //查询

  public Student search(int id)

  {

  if (head.next == null)

  {

  Console.WriteLine("没有数据,无法修改!");

  return null;

  }

  StudentNode temp = head.next;

  while (true)

  {

  if (temp == null)

  {

  Console.WriteLine("没有这个ID数据!");

  return null;

  }

  if (temp.s.getId() == id)

  {

  return new Student(temp.s.getId(), temp.s.getName(), temp.s.getScore());

  }

  temp = temp.next;

  }

  }

  //遍历

  public void show() {

  Console.WriteLine("ID 姓名 分数");

  StudentNode temp = head.next;

  while (true) {

  if (temp==null) {

  break;

  }

  Console.WriteLine(temp.s.getId()+" "+temp.s.getName()+" "+temp.s.getScore());

  temp = temp.next;

  }

  }

  }

  //创建一个链表进行处理这些数据

  class StudentNode

  {

  public Student s;

  public StudentNode next;

  public StudentNode(Student s)

  {

  this.s = s;

  }

  }

  //定义学生类

  class Student

  {

  private int id;

  private String name;

  private int score;

  public Student(int id, String name, int score)

  {

  this.id = id;

  this.name = name;

  this.score = score;

  }

  public void setId(int id)

  {

  this.id = id;

  }

  public int getId()

  {

  return this.id;

  }

  public String getName()

  {

  return this.name;

  }

  public void setName(String name)

  {

  this.name = name;

  }

  public int getScore()

  {

  return this.score;

  }

  public void setScore(int score)

  {

  this.score = score;

  }

  public String toString() {

  return "ID:"+getId() + " 姓名:" + getName() + " 成绩:" + getScore();

  }

  }

  //这是用户类

  class User

  {

  private String userName;

  private String userParsword;

  public User(String userName, String userParsword)

  {

  this.userName = userName;

  this.userParsword = userParsword;

  }

  public String getUserName()

  {

  return this.userName;

  }

  public void setName(String userName)

  {

  this.userName = userName;

  }

  public String getUserParsword()

  {

  return this.userParsword;

  }

  public void setUserParsword(String userParsword)

  {

  this.userParsword = userParsword;

  }

  }

  }