zoukankan      html  css  js  c++  java
  • 实现成绩表的初步想法

     利用结构体可以实现我们手动输入一些学生信息,进行自动排序打印的小程序;

    首先在Main函数外面定义一个名字为student的结构体,下面没一个同学的信息存储都需要用到student结构体。

    struct student
            {
                public int no;
                public string name;
                public int Cshap;
                public int web;
                public int datebase;
                public int sum;
          
            }  //定义一个student结构体

    下面为Main函数开始;

     static void Main(string[] args)

    {
                int i;  int j;//声明循环变量
                int no_x;string name_x;int Cshap_x;int web_x;int datebase_x;//定义元素变量

    上面主要是定义两个循环变量i和j,i用来进行输入循环,j用来进行排序循环。no_x是输入学号的一个变量,name_x是输入名字的一个变量,Cshap_x是输入Cshap成绩的一个变量,web_x是输入网页成绩的一个变量,datebase_x是输入数据库成绩的一个变量。

                student a = new student();
                student b = new student();
                student c = new student();
                student d = new student();       //定义用于分别存放三个学生成绩的结构体,d用来进行交换

    上面定义了4个student类型的结构体,a、b、c是存放三个学生成绩的结构体,d是在排序的时候用来交换数据的一个结构体。

    下面是输入循环开始,总共需要输入三个学生的信息,因此i<=3,学号是自动+1,其他的信息都是需要主动输入,输入一个同学完成之后清一下屏。

     for (i = 1; i <=3; i++)
                {
                    //提示输入数据,并保存在元素变量里
                    no_x = i;
                    Console.WriteLine("请输入第{0}位同学的姓名:", i);
                    name_x = Console.ReadLine();
                    Console.WriteLine("请输入第{0}位同学的Cshap成绩:", i);
                    Cshap_x = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("请输入第{0}位同学的网页成绩:", i);
                    web_x = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("请输入第{0}位同学的数据库成绩:", i);
                    datebase_x = Convert.ToInt32(Console.ReadLine());

                    Console.Clear();

    //下面判断是不是第一个同学,是的话将他的基本数据存入第一个同学的结构体中,也就是a中。

     if(i==1)
                    {
                            a.no = no_x;
                            a.name = name_x;
                            a.Cshap = Cshap_x;
                            a.web =web_x;
                            a.datebase = datebase_x;
                            a.sum = a.Cshap + a.web + a.datebase;

                    }

    //下面判断是不是第二个同学,是的话将他的基本数据存入第二个同学的结构体中,也就是b中。

                    if (i == 2)
                    {
                      
                            b.no = no_x;
                            b.name = name_x;
                            b.Cshap = Cshap_x;
                            b.web = web_x;
                            b.datebase = datebase_x;
                            b.sum = b.Cshap + b.web + b.datebase;
                      
                    }

    //下面判断是不是第三个同学,是的话将他的基本数据存入第三个同学的结构体中,也就是c中。

                    if (i == 3)
                    {
                       
                            c.no = no_x;
                            c.name = name_x;
                            c.Cshap = Cshap_x;
                            c.web = web_x;
                            c.datebase = datebase_x;
                            c.sum = c.Cshap + c.web + c.datebase;
                      
                    }

     }

    //储存完数据之后,开始排序,排序因为这里是用的a,b,c来储存的数据,暂时没想到直接用两套循环来冒泡排序的方法,可以用一个数组zf[]来存一下每个同学的总分,这样就可以用两套循环来进行排序

                    for (j = 0; j < 2; j++)
                    {
                        if (a.sum < b.sum)
                        {
                            d = a;
                            a = b;
                            b = d;
                        }
                         if (b.sum < c.sum)
                        {
                            d = b;
                            b = c;
                            c = d;
                           
                        }
                    }

     //排序完成,进行打印,因为前面的语句已经将顺序排好,总分高的同学的数据放在了a里面,次高的放在b里面,低的放在c里面,所以打印直接按a,b,c打印就可以

                Console.WriteLine("学号 姓名 Cshap 网页 数据库 总分 ");
                Console.WriteLine(("{0} {1} {2} {3} {4} {5} "),a.no,a.name,a.Cshap,a.web,a.datebase,a.sum);
                Console.WriteLine(("{0} {1} {2} {3} {4} {5} "), b.no,b.name,b.Cshap, b.web, b.datebase, b.sum);
                Console.WriteLine(("{0} {1} {2} {3} {4} {5} "), c.no, c.name, c.Cshap, c.web, c.datebase, c.sum);

      }
            }
        }

    基本实现成绩表的一个想法,但是当学生数量多的时候程序就显得很复杂,还需要用别的方法再试,最好能用循环解决

    下面看一下效果:

    输入学生信息的界面:
     
    输入完成之后打印出的界面:
     
     
     
    程序网盘地址:
  • 相关阅读:
    【BZOJ2879】【NOI2012】美食节(费用流)
    HN2018省队集训
    【HDU5421】Victor and String(回文树)
    【BZOJ2878】【NOI2012】迷失游乐园(动态规划)
    【BZOJ5338】[TJOI2018]异或(主席树)
    【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)
    【BZOJ2436】【NOI2011】NOI嘉年华(动态规划)
    【BZOJ2437】【NOI2011】兔兔与蛋蛋(博弈论,二分图匹配)
    【BZOJ2109/2535】【NOI2010】航空管制(贪心)
    【BZOJ1565】【NOI2009】植物大战僵尸(网络流)
  • 原文地址:https://www.cnblogs.com/Alvin-ftd/p/3939753.html
Copyright © 2011-2022 走看看