• C#面向对象初步


    int定义的变量只能放整形数据,string定义的变量只能放字符串数据,它们是内置数据类型;

    struct{},class(类)都是用户定义的数据类型,可以放任意类型数据。

    用数据类型定义变量就像用模板规范的创建了一个变量,使其不能任意的存储数据,比如int类型的变量无法存储string类型的数据;

    所有的数据类型(int,string,struct出来的Student)就像各种各样的模板,struct出来的Student是我们自己创造的数据类型模板。

    class模板可以写函数,因此比struct模板更高级,class定义的变量我们叫做对象。

    面向对象是一种思想,一种思路。

    在面向对象编程中,类是最小单位,是类与类之间相互交互。

    以class为模板创建出来的数据类型,我们叫做对象。

    变量的作用范围:public(在项目所有地方都可以用),private只能在类的内部使用。

    不能用class创建的对象创建数组(struct可以),可以创建集合(Array)。

    每次创建对象需要用new开辟空间。struct可以自动开辟空间。

    object是所有数据类型的基类:就像生物对于所有动物、植物、微生物等等。

    小知识点:缩放代码:#region endregion
    蓝块:成员变量
    紫块:成员方法

    编程时,右击函数名->转到定义

    1.范例:通过struct数组存储、处理学生信息,按如下要求从控制台循环录入10个同学的信息跟成绩(学号,姓名,C语言分数)使用结构体  ,在控制台打印本班的总分和平均分,并打印本班最高分、最低分的学生信息,按成绩高低打印本班成绩册并排出名次,要求使用结构体,自定义函数,数组来完成本题。

    #region==学生课程题目==
            struct student
            {
                public string code;
                public string name;
                public decimal degree;
            }
    
            static void Main(string[] args)
            {
                Console.Write("请输入人数:");
                int n = int.Parse(Console.ReadLine().ToString());
    
                decimal sumfen=0, avg=0, max=0, min=0;
                student[] sumstu = new student[n];
                //根据所输入人数进行循环录入
                for (int i = 0; i < n; i++)
                {
                    Console.WriteLine("请输入第"+(i+1)+"个学生的信息");
                    Console.WriteLine("学号   姓名  c语言分数,以tab键分隔");
                    string s = Console.ReadLine();
                    string[] sarr = s.Split(new char[]{'	'});//使用split按照分隔符进行分隔
    
                    sumstu[i].code = sarr[0];
                    sumstu[i].name = sarr[1];
                    sumstu[i].degree = decimal.Parse(sarr[2]);
    
                    sumfen += sumstu[i].degree;
                }
    
    
    
                Console.WriteLine("****************************************");
                Console.WriteLine("总分:"+sumfen.ToString());
                avg = sumfen / n;
                Console.WriteLine("平均分:"+avg.ToString());
    
                //冒泡排序
                for (int i = 0; i < n-1; i++)
                {
                    for (int j = i+1; j < n; j++)
                    {
                        if (sumstu[i].degree < sumstu[j].degree)
                        {
                            Student zhong = new Student();
                            zhong = sumstu[i];
                            sumstu[i] = sumstu[j];
                            sumstu[j] = zhong;
                        }
                    }
                }
    
                Console.WriteLine("最高分:"+sumstu[0].degree.ToString());
                Console.WriteLine("最低分:"+sumstu[n-1].degree.ToString());
    
                Console.WriteLine("本班成绩列表如下:");
                Console.WriteLine("****************************************");
                Console.WriteLine("名次   学号  姓名  成绩");
                for (int i = 1; i <= n; i++)
                {
                    Console.WriteLine(i+"	"+sumstu[i-1].code+"	"+sumstu[i-1].name+"	"+sumstu[i-1].degree);
                }
    
                    Console.ReadLine();
            }

    2.通过Array集合来处理学生信息

    class Program
        {
            //用Array来存储十个学生信息,(不如上题将结构体放在数组里方便,只是练习一下Array的使用)
    
            //定义学生信息结构体
            public struct Student
            { 
                public string sno;
                public string name;
                public int degree;
            }
    
            static void Main(string[] args)
            {
                //定义Student元素类型的Array,存储10个学生信息
                Array myArr = Array.CreateInstance(typeof(Student), 10);
                for (int i = 0; i < myArr.Length; i++)
                {
                    Student aaa;
                    Console.WriteLine("请输入第" + (i + 1) + "个学生的学号,姓名,成绩");
                    aaa.sno = Console.ReadLine();
                    aaa.name = Console.ReadLine();
                    aaa.degree = Convert.ToInt32(Console.ReadLine());
                    myArr.SetValue(aaa, i);
                }
    
                //分割线
                Console.WriteLine("********************************************************");
    
                //求总分、平均分
                int sum = 0;
                for (int i = 0; i < myArr.Length; i++)
                {
                    object aaa;//定义一个对象来接收从Array中取出的元素
                    aaa = myArr.GetValue(i);
                    Student b = (Student)aaa;//将取出的元素进行强制转化
                    sum += b.degree;
                }
    
    
                Console.WriteLine("总分为" + sum + "平均分为" + sum / myArr.Length);
                Console.WriteLine("********************************************************");
    
    
                //通过冒泡排序求最高分、最低分
                int[] a = new int[10];//用数组来存储元素的分数
    
                for (int i = 1; i <= myArr.Length; i++)//冒泡排序,将Array中的元素按照分数的大小排序
                {
                    for (int j = 1; j <= myArr.Length - i; j++)
                    {
                        object aaa, bbb;//定义两个对象来接收从Array中取出的元素
                        aaa = myArr.GetValue(j - 1);
                        bbb = myArr.GetValue(j);
    
                        Student aa = (Student)aaa;//将取出的元素进行强制转化
                        Student bb = (Student)bbb;
    
                        a[j - 1] = aa.degree;//通过比较相邻两个元素的分数的大小,判断是否交换元素的位置
                        a[j] = bb.degree;
                        if (a[j] > a[j - 1])
                        {
                            myArr.SetValue(aa, j);
                            myArr.SetValue(bb, j - 1);
                        }
                    }
                }
    
                object zg, zd;
                zg = myArr.GetValue(0);
                Student mm = (Student)zg;
                zd = myArr.GetValue(myArr.Length - 1);
                Student n = (Student)zd;
                Console.WriteLine("最高分为" + mm.degree + "姓名" + mm.name + "学号" 
                    + mm.sno + "最低分为" + n.degree + "姓名" + n.name + "学号" + n.sno);
    
                //分割线
                Console.WriteLine("********************************************************");
    
                //打印成绩表
                for (int i = 0; i < myArr.Length; i++)
                {
                    object aaa;
                    aaa = myArr.GetValue(i);
                    Student b = (Student)aaa;
    
                    Console.WriteLine("姓名" + b.name + "学号" + b.sno + "分数为" + b.degree);
                }
    
            }
        }

    bb

  • 相关阅读:
    Lookup Method
    ReLocated Record in Grid
    Call Form By FormString
    Send Mail
    十大已亡或正在灭亡的电脑技术
    一个程序员的内心自白摘录
    数据库中null和''具体的区别
    gridview 横向显示
    Exchange2007获取OWA邮箱容量的代码
    owa实现清空邮箱的代码
  • 原文地址:https://www.cnblogs.com/wllhq/p/4306241.html
Copyright © 2020-2023  润新知