面对对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
 
 
 
封装:将客观事物抽象成类,每个类对自身的数据和方法实行

继承:广义的继承有三种实现形式:
实现继承(指使用基类的属性和方法而无需额外编码的能力)、
可视继承(子窗体使用父窗体的外观和实现代码)、
接口继承(仅使用属性和方法,实现滞后到子类实现)。
  前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

小练习

在控制台程序中使用结构体、集合,完成下列要求
项目要求:
一、连续输入5个学生的信息,每个学生都有以下4个内容:
1、序号 - 根据输入的顺序自动生成,不需要手动填写,如输入第一个学生的序号是1,第二个是2,以此类推
2、学号 - 必填,如:S001,S002... 以此类推
3、姓名 - 必填
4、成绩 - 大于等于0,小于等于100

以上内容必须按照要求填写,请写好相应的验证,如果没填写正确,则让用户重复填写到正确为止

二、5个学生信息都输入完毕后,按照分数从高到低的顺序将学生信息展示出来
显示格式如下:

==============学生成绩展示=================
序号 学号 姓名 成绩
3 S003 张三 100
1 S001 李四 99
2 S002 王五 98

            ArrayList ar = new ArrayList();
            string str = "";
            //do{
            //    Console.Write("请输入学号:");
            //    stt.str=Console.ReadLine();
            //} while (stt.str.StartsWith("s") != stt.str.EndsWith("s")&&stt.str.IndexOf("s")!=0);
            ; j < ; j++)
            {
                stu stt = new stu();
                stt.num = j;

                for (; ; )
                {
                    Console.Write("请输入第" + j + "个学生的学号:s");
                    try
                    {
                        int i = Convert.ToInt32(Console.ReadLine());
                        )
                            i = Math.Abs(i);
                        )
                        {
                            stt.str = ");
                        }
                        )
                        {
                            stt.str = ");
                        }
                        break;
                    }
                    catch
                    {
                        Console.WriteLine("请输入数字");
                    }
                }

                for (; ; )
                {
                    Console.Write("请输入第" + j + "个学生的姓名:");
                    stt.name = Console.ReadLine();
                    if (stt.name != "")
                        break;
                    else
                        Console.WriteLine("姓名不能为空");
                }

                for (; ; )
                {
                    Console.Write("请输入第" + j + "个学生的成绩:");
                    try
                    {
                        stt.chengji = Convert.ToDouble(Console.ReadLine());
                         && stt.chengji <= )
                        {
                            break;
                        }
                        )
                        {
                            Console.WriteLine("成绩不能大于100");
                        }
                        else
                        {
                            Console.WriteLine("成绩不能小于0");
                        }
                    }
                    catch
                    {
                        Console.WriteLine("请输入数字");
                    }
                }
                ar.Add(stt);
            }

            Console.WriteLine("┌───────────────────┐");
            Console.WriteLine("│      所有学生数据       │");
            Console.WriteLine("│\t序号\t学号\t姓名\t成绩\t│");
            ; k <= ar.Count - ; k++)
            {
                stu stt = (stu)ar[k];
                Console.WriteLine("│\t{0}\t{1}\t{2}\t{3}\t│", stt.num, stt.str, stt.name, stt.chengji);
            }
            Console.WriteLine("└───────────────────┘");

            ; j < ar.Count; j++)
            {
                for (int k = j; k < ar.Count; k++)
                {
                    if (((stu)ar[j]).chengji < ((stu)ar[k]).chengji)
                    {
                        object zhon = ar[j];
                        ar[j] = ar[k];
                        ar[k] = zhon;
                    }
                }
            }

            Console.WriteLine("┌───────────────────┐");
            Console.WriteLine("│      按成绩排序         │");
            Console.WriteLine("│\t序号\t学号\t姓名\t成绩\t│");
            ; k <= ar.Count - ; k++)
            {
                stu stt = (stu)ar[k];
                Console.WriteLine("│\t{0}\t{1}\t{2}\t{3}\t│", stt.num, stt.str, stt.name, stt.chengji);
            }
            Console.WriteLine("└───────────────────┘");

            Console.ReadLine();

示例

2016年11月24日--面向对象、C#小复习的更多相关文章

  1. 2016年11月24日 星期四 --出埃及记 Exodus 20:15

    2016年11月24日 星期四 --出埃及记 Exodus 20:15 "You shall not steal.不可偷盗.

  2. 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合

    1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...

  3. 2016年11月8日 星期二 --出埃及记 Exodus 19:24

    2016年11月8日 星期二 --出埃及记 Exodus 19:24 The LORD replied, "Go down and bring Aaron up with you. But ...

  4. 2016年12月24日 星期六 --出埃及记 Exodus 21:19

    2016年12月24日 星期六 --出埃及记 Exodus 21:19 the one who struck the blow will not be held responsible if the ...

  5. 2016年11月30日 星期三 --出埃及记 Exodus 20:21

    2016年11月30日 星期三 --出埃及记 Exodus 20:21 The people remained at a distance, while Moses approached the th ...

  6. 2016年11月29日 星期二 --出埃及记 Exodus 20:20

    2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...

  7. 2016年11月28日 星期一 --出埃及记 Exodus 20:19

    2016年11月28日 星期一 --出埃及记 Exodus 20:19 and said to Moses, "Speak to us yourself and we will listen ...

  8. 2016年11月27日 星期日 --出埃及记 Exodus 20:18

    2016年11月27日 星期日 --出埃及记 Exodus 20:18 When the people saw the thunder and lightning and heard the trum ...

  9. 2016年11月26日 星期六 --出埃及记 Exodus 20:17

    2016年11月26日 星期六 --出埃及记 Exodus 20:17 "You shall not covet your neighbor's house. You shall not c ...

随机推荐

  1. bootstrap-全局css样式

    bootstrap-全局css样式   1.bootstrap是一个前端框架 2.基本模板:viewport视口可以解决移动端设备网页自适应问题 3.版心(.container)  流式版心(.con ...

  2. ASP.NET WebForm中异步请求防止XSRF攻击的方法

    在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法.对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢.这里给大家提供一个简单地方法,和M ...

  3. AVA数据库连接池.

    package db_pool; //// 一个效果非常不错的JAVA数据库连接池.// from:http://www.jxer.com/home/?uid-195-action-viewspace ...

  4. Vue系列:在vux的popup组件中使用百度地图遇到显示不全的问题

    问题描述: 将百度地图封装成一个独立的组件BMapComponent,具体见 Vue系列:如何将百度地图包装成Vue的组件(http://www.cnblogs.com/strinkbug/p/576 ...

  5. js实现点击修改按钮之后单元格变成可编辑状态

    主要实现原理: 每一行有一个修改按钮 点击修改之后,获取行对象,通过行对象再获取行中单元格数组.然后把每一个单元格中的innerHTML替换成input输入框,并赋值value=原来单元格中的内容,鼠 ...

  6. ts 格式化日期输出

    功能 像C#中DateTime的ToString的格式化输出一样,在js/ts中输出格式化的日期字符串 网上很多正则的,不加分隔符就不行了,和C#的格式也不一样 刚接触js/ts没两月,可能会有问题. ...

  7. Android开发自学笔记(Android Studio)—4.2TextView及其子类

    一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...

  8. javascript数据类型判断

    javascript基本数据类型:原始类型  和  引用类型 原始类型(简单数据类型):String,Number,Boolean,Undefined,Null,Symbol(ES6新增) 引用类型( ...

  9. Curl扩展开启失败解决方案

    1.php.ini 开启curl扩展 2.设置有时候开启之后,curl还是不能将php目录下的libssh2.dll复制到apache/bin下.(基本上可以成功) 3. 如果没有开启成功,将php安 ...

  10. Local gulp not found in.. on windows

    当出现报错时,请按如下方式安装 gulp 以下使用国内的淘宝镜像安装: $ # Step 1 $ cnpm install -g gulp $ # Step 2 $ cnpm install --sa ...