C#复习:
在控制台程序中使用结构体、集合,完成下列要求
项目要求:
一、连续输入5个学生的信息,每个学生都有以下4个内容:
1、序号 - 根据输入的顺序自动生成,不需要手动填写,如输入第一个学生的序号是1,第二个是2,以此类推
2、学号 - 必填,如:S001,S002... 以此类推
3、姓名 - 必填
4、成绩 - 大于等于0,小于等于100
以上内容必须按照要求填写,请写好相应的验证,如果没填写正确,则让用户重复填写到正确为止
二、5个学生信息都输入完毕后,按照分数从高到低的顺序将学生信息展示出来
显示格式如下:
==============学生成绩展示=================
序号 学号 姓名 成绩
3 S003 张三 100
1 S001 李四 99
2 S002 王五 98
...
...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace ConsoleApplication3 { class Program { struct student { public int code; public string xuehao; public string name; public double score; } static void Main(string[] args) { ArrayList al =new ArrayList(); student st =new student(); int biao = 0; for (int i = 0; i < 5; i++) { int biao1 = 0; st.code = i+1; for (; ; ) { Console.Write("请输入第{0}个学生的学号:", i + 1); string xh = Console.ReadLine(); if (xh != ""&&xh!=" "&&xh!=" ") { if (biao == 0) { st.xuehao = xh; biao1 = 1; break; } else { for (int k = 0; k < biao; k++) { if (((student)al[k]).xuehao == xh) { Console.WriteLine("学号输入重复,请重新输入!"); break; } else { if (k == biao - 1) { st.xuehao = xh; biao1 = 1; break; } else { continue; } } } } } else { Console.WriteLine("输入学号不能为空,请重新输入!"); } if (biao1 == 1) { break; } } for (; ; ) { Console.Write("请输入第{0}个学生的姓名:", i + 1); string name = Console.ReadLine(); if (name != ""&&name!=" "&&name!=" ") { st.name = name; break; } else { Console.WriteLine("输入姓名不能为空,请重新输入!"); continue; } } for (; ; ) { Console.Write("请输入第{0}个学生的成绩:", i + 1); try { double b = double.Parse(Console.ReadLine()); if (b >= 0 && b <= 100) { st.score = b; break; } else { Console.WriteLine("输入成绩有误,请重新输入:"); continue; } } catch { Console.WriteLine("成绩输入有误,请重新输入!"); continue; } } al.Add(st); biao++; } for (int m = 0; m < 4;m++ ) { for (int n = m; n <5; n++) { if (((student)al[m]).score < ((student)al[n]).score) { object zhong = al[m]; al[m] = al[n]; al[n] = zhong; } } } Console.WriteLine("序号" + " " + "学号" + " " + "姓名" + " " + "成绩"); for (int i = 0; i < 5;i++ ) { Console.WriteLine(((student)al[i]).code + " " + ((student)al[i]).xuehao + " " + ((student)al[i]).name + " " + ((student)al[i]).score); } Console.ReadLine(); } } }
面向对象:
面向对象不是一种实质性的东西,而是一种编程思想,较为抽象。
面向对象里面,最重要的东西就是对象。
对象一定程度上可以理解为类,简而言之说多了都是类,或者万物皆对象。
比如说结构体,我们把一个学生的学号 姓名 性别 年龄 成绩等信息放入一个结构体,这个结构体可以看做是一个对象,代表着这个学生的信息。
又好比说所有生物可以分为动物和植物,动物和植物可以继续往下分,这其中的每一个“标签”——比如哺乳动物、海洋生物,都可以拿出来作为一个类,也就是一个对象。
面向对象有三大特性,也可以说是类的特点:
封装(类似打包)
继承(子级继承父级的属性)
多态(子级拥有与其他同级子级不同的属性,也就是特点)