C#程序设计实验报告

时间:2024.3.31

学 生 实 验 报 告

(理工类)

课程名称:  C#程序设计    专业班级: M11计算机科学与技术(专转本)

学生学号:  XXXXXXXX  学生姓名:       XXX       

所属院部:  信息技术学院  指导教师:      XXX      

20## — 20##学年          第  1  学期

 金陵科技学院教务处制

实验报告书写要求

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。

(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。 

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。

(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:C#基础编程       实验学时:      6     

同组学生姓名:                  实验地点:   A205     

实验日期: 9月17日-9月24日   实验成绩:             

批改教师:                      批改时间:            

实验1  C#基础编程

一、实验目的

1、熟悉Visual Studio .NET开发环境;

2、掌握C#应用程序的基本操作过程;

3、掌握C#的数据类型,运算符以及表达式的使用;

4、掌握分支和循环语句的使用方法;

5、掌握一维数组,二维数组及数组型数组的使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;

(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

    安装有Visual Studio .NET软件。

四、实验步骤

1、分析题意;

2、根据题目要求,新建项目;

3、编写并输入相关的程序代码;

5、运行与调试项目;

6、保存项目。

五、实验内容

1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("1121412016 张明星!");

            Console.ReadLine();

        }

    }

}

2、编写一个简单的Windows应用程序,在标签中显示你的姓名。

Form窗体的代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace w_1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            label2.Text = "你输入的姓名:"+textBox1.Text;

            textBox2.Text = "你输入的姓名:" + textBox1.Text;

            MessageBox.Show("你输入的姓名:" + textBox1.Text);

        }

    }

}

3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test

{

    class Program

    {

        static void Main(string[] args)

        {

            char c;

            int i=0;

            while (i < 10)

            {

                Console.WriteLine("请输入一个字符:");

                c = Convert.ToChar(Console.ReadLine());

                i++;

               

                if (char.IsUpper(c))

                {

                    Console.WriteLine(c + "这是一个大写字母");

                }

                else if (char.IsLower(c))

                {

                    Console.WriteLine(c + "这是一个小写字母");

                }

                else if (char.IsDigit(c))

                {

                    Console.WriteLine(c + "这是一个数字");                                                             

                }

                else

                {

                    Console.WriteLine(c + "什么也不是!");

                }

            }

            Console.ReadLine();

}

}

}

4、分别用while,do-while,for循环求1到100的和。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test

{

    class Program

    {

        static void Main(string[] args)

        {

            int sum = 0, i = 0;

            

            for (i = 1; i <= 10; i++)

            {

                sum = sum + i;

            }

            do

            {

                sum = sum + i;

                i++;

            } while (i <= 10);

            while (i <= 10)

            {

                sum = sum + i;

                i++;

            }

            Console.WriteLine("1到的和为" + sum);

            Console.ReadLine();

}

}

}

5、定义一个一维数组,用随机数为此赋值,用foreach循环输出其中的内容。

      using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_1

{

    class Program

    {

        static void Main(string[] args)

        {

            int[] a = new int[10];

            Random ran = new Random();

            for(int i=0;i<10;i++)

                a[i]=ran.Next(100);

            foreach(int i in a)

            {

                Console.WriteLine(i+" ");

            }

        }

    }

}

6、实现二维数组的输入和输出。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test

{

    class Program

    {

        static void Main(string[] args)

        {

               //输出100里的十个随机数

            int[] a = new int[10];

            int[,] a = new int[3, 3];

            for (int i = 0; i < 3; i++)

                for (int j = 0; j < 3; j++)

                    a[i, j] = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < 3; i++)

            {

                for (int j = 0; j < 3; j++)

                    Console.Write(a[i, j] + " ");

                Console.Write("\n");

            }

}

}

}

7、实现数组型数组的输入和输出。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_1

{

    class Program

    {

        static void Main(string[] args)

        {

            int[][] a = new int[2][];

            a[0] = new int[3] { Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()) };

            a[1] = new int[4] { Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()) };

                for (int j = 0; j <3; j++)

                {

                    Console.Write(a[0][j]+" ");

                }

                Console.WriteLine("\n");

                for (int j = 0; j < 4; j++)

                {

                    Console.Write(a[1][j] + " ");

                }

        }

    }

}

六、实验体会(遇到问题及解决办法,编程后的心得体会)

实验项目名称:     类与对象      实验学时:      6     

同组学生姓名:                   实验地点:  A205      

实验日期: 9月24日-10月1日    实验成绩:            

批改教师:                       批改时间:            

实验2  类与对象

一、实验目的、要求

(1)掌握类的定义和使用;

(2)掌握类的数据成员,属性的定义和使用;

(3)掌握方法的定义,调用和重载以及方法参数的传递;

(4)掌握构造函数的定义和使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;

(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有Visual Studio .NET软件。

四、实验步骤

1、分析题意;

2、根据题目要求,新建项目;

3、编写并输入相关的程序代码;

5、运行与调试项目;

6、保存项目。

五、实验内容

1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递);

Form里面的代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Test1_1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void btnSwap_Click(object sender, EventArgs e)

        {

            Swaper s = new Swaper();

            int a = Convert.ToInt32(txtOne.Text);

            int b = Convert.ToInt32(txtTwo.Text);

            lblShow.Text = s.Swap(a,b);

            lblShow.Text += string.Format("\n\n主调方法:条用之后:a={0},b={1}",a,b);

            txtOne.Text = a.ToString();

            txtTwo.Text = b.ToString();

        }

        class Swaper

        {

            public string Swap(int x, int y)

            {

                int temp;

                temp = x;

                x = y;

                y = temp;

                return string.Format("被调方法:交换之后:x{0}=,y={1}",x,y);

            }

        }

    }

}

2、定义一个方法,实现数组的排序;

     using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_1

{

    class Program

    {

        static void Main(string[] args)

        {

            SortLS s = new SortLS();

            int[] b = new int[5];

            for (int i = 0; i < 5; i++)

            {

                b[i] = Convert.ToInt32(Console.ReadLine());

            }

            s.SortL(b);

            Console.ReadLine();

        }

        class SortLS

        {

            public void SortL(int[] a)

            {

               

                for (int i = 1; i

                {

                    int temp;

                   if (a[i-1] < a[i])

                    {

                        temp = a[i-1];

                        a[i-1] = a[i];

                        a[i] = temp;

                    }

                }

                for (int i = 0; i < a.Length; i++)

                {

                    Console.Write(a[i]+" ");

                }

            }

        }

    } 

    }

3、定义一个学生类,把学生类当作对象来传递;

    using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_2

{

    class Program

    {

        static void Main(string[] args)

        {

            Student stu = new Student();

            stu.name = "张三";

            stu.age = 20;

            stu.ShowMessage(stu);

        }

        public class Student

        {

            public string name;

            public int age;

      

        public void ShowMessage(Student student)

        {

            Console.WriteLine("学生姓名:"+student.name+" "+"年龄:"+student.age);

        }

    }

   }

}

4、定义一个方法,求两个数的和和差,通过参数把这两个值带回;

    using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_3

{

    class Program

    {

        static void Main(string[] args)

        {

            A ax = new A();

            int a, b;

            a = 10;

            b = 3;

            ax.Method(a,b);

        }

        class A

        {

            public void Method(int x, int y)

            {

                int add, miu;

                add = x + y;

                miu = x - y;

                Console.WriteLine("两数之和:" + add + "\n" + "两数之差:" + miu);

            }

        }

    }

}

5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积;

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_4

{

    class Program

    {

        static void Main(string[] args)

        {

            int a = 4;

            int b = 5;

            int c = 6;

            Area a1 = new Area(a);

            Area a2 = new Area(a,b);

            Area a3 = new Area(a,b,c);

        }

        class Area

        {

            int x, y, z;

            public Area(int a)

            {

                Console.WriteLine("圆的面积:"+ 3.12 * a*a);

            }

            public Area(int a,int b)

            {

                Console.WriteLine("矩形的面积:" + a*b);

            }

            public Area(int a,int b,int h)

            {

                Console.WriteLine("梯形的面积:" + (a+b)*h/2);

            }

        }

    }

}

6、设计一个windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:

1)能查询每个学生的总成绩。

2)能显示全班前三名的名单。

3)能显示单科成绩最高分和不及格的学生名单。

4)能统计全班学生的平均成绩。

5)能显示各科成绩不同分数段的学生人数的百分比。

Student类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test4_3

{

    public class Student

    {

        public string stuNo;

        public string name;

        public double chinese;

        public double math;

        public double english;

       

        public double sumScore

        {

            get { return chinese + math + english; }

        }

    }

}

StudentList类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test4_3

{

    public class StudentList:Student

    {

        int snums;

        public Student[] stu=new Student[50];

        public StudentList()

        {

            snums = 0;

        }

        public void addstu(Student s)

        {

            stu[snums] = s;

            snums++;

        }

        public int searchstu(string name)

        {

            int i;

            for (i = 0; i < snums; i++)

            {

                if (stu[i].name == name) break;

            }

            if (i == snums) return -1;

            else return i;

        }

        //给所有成绩排序,用后面实现前三名的排名

        public void ProThree()

        {

            for (int i = 0; i < snums; i++)

            {

                int k = i;

                for (int j = i + 1; j < snums; j++)

                    if (stu[j].sumScore > stu[k].sumScore) k = j;

                if (k != i)

                {

                    Student temp;

                    temp = stu[k];

                    stu[k] = stu[i];

                    stu[i] = temp;

                }

            }

         

           

        }

        //显示单科成绩的最高分

        public int HighScore(int k)

        {

            int p = 0;

            if (k == 0)

            {

                for (int i = 1; i < snums; i++)

                    if (stu[i].math > stu[p].math) p = i;

            }

            else if (k == 1)

            {

                for (int i = 1; i < snums; i++)

                    if (stu[i].chinese > stu[p].chinese) p = i;

            }

            else

            {

                for (int i = 1; i < snums; i++)

                    if (stu[i].chinese > stu[p].chinese) p = i;

            }

            return p;

        }

        //显示不及格名单

        public string  BuhgName(int k)

        {

            string name=" ";

            if (k == 0)

            {

                for (int i = 0; i < snums; i++)

                    if (stu[i].math < 60) name +=stu[i].name+"\n";

            }

            else if (k == 1)

            {

                for (int i = 0; i < snums; i++)

                    if (stu[i].chinese < 60) name += stu[i].name + "\n";

            }

            else

            {

                for (int i = 0; i < snums; i++)

                    if (stu[i].english < 60) name += stu[i].name + "\n";

                    

            }

            return name;

        }

        public string getHL()

        {

            string Maxer = " ", Loser = " ";

            Maxer += "单科数学最高:" + stu[HighScore(0)].name + "\n";

            Maxer += " 单科语文最高:" + stu[HighScore(1)].name + "\n";

            Maxer += " 单科英语最高:" + stu[HighScore(2)].name + "\n";

            Loser += "单科数学挂科名单:" +BuhgName(0) + "\n";

            Loser += "单科语文挂科名单:" + BuhgName(1) + "\n";

            Loser += "单科英语挂科名单:" + BuhgName(2) + "\n";

            return Maxer + "\n" + Loser;

        }

        //全班的平均成绩

        public string SumScore()

        {

            double sum = 0;

            double avg=0;

            for (int i = 0; i < snums; i++)

            {

               

                sum = sum + stu[i].sumScore;

            }

            avg = sum / snums;

            return "班级总分平均分:"+avg;

        }

        //各科成绩不同分数段的学生百分比

        //英语成绩各分数段百分比

        public string PerC()

        {

            double per1, per2, per3, per4, per5;

            double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

            for (int i = 0; i < snums; i++)

            {

                if ((stu[i].chinese > 90) && (stu[i].chinese <= 100))

                {

                    sumC1++;

                   

                }

                else if ((80 <= stu[i].chinese) && (stu[i].chinese < 90))

                {

                    sumC2++;

                }

                else if((70<=stu[i].chinese)&& (stu[i].chinese < 80))

                {

                    sumC3++;

                }

                else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))

                {

                    sumC4++;

                }

                else

                {sumC5++;}

            }

            per1 = sumC1 / snums;

            per2 = sumC2 / snums;

            per3 = sumC3 / snums;

            per4 = sumC4 / snums;

            per5 = sumC5 / snums;

            return "语文成绩百分比:"+"\n"+"90~100:"+per1+"  80~90:"+per2+"  80~70:"+per3+"  70~60:"+per4+"  60以下的:"+per5;

           

        }

        //数学成绩各分数段百分比

        public string PerM()

        {

            double per1, per2, per3, per4, per5;

            double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

            for (int i = 0; i < snums; i++)

            {

                if ((stu[i].math> 90) &&(stu[i].math <= 100))

                {

                    sumC1++;

                }

                else if ((80 <= stu[i].math) && (stu[i].math < 90))

                {

                    sumC2++;

                }

                else if ((70 <= stu[i].math) && (stu[i].math < 80))

                {

                    sumC3++;

                }

                else if ((60 <= stu[i].math) && (stu[i].math < 70))

                {

                    sumC4++;

                }

                else

                { sumC5++; }

            }

            per1 = sumC1 / snums;

            per2 = sumC2 / snums;

            per3 = sumC3 / snums;

            per4 = sumC4 / snums;

            per5 = sumC5 / snums;

            return string.Format("数学成绩百分比:" + "\n" + "90~100:" + per1 + "  80~90:" + per2 + "  80~70:" + per3 + "  70~60:" + per4 + "  60以下的:" + per5);

        }

        //英语成绩各分数段百分比

        public string PerE()

        {

            double per1, per2, per3, per4, per5;

            double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

            for (int i = 0; i < snums; i++)

            {

                if ((stu[i].english > 90) && (stu[i].english <= 100))

                {

                    sumC1++;

                }

                else if ((80 <= stu[i].english) && (stu[i].english < 90))

                {

                    sumC2++;

                }

                else if ((70 <= stu[i].english) && (stu[i].english < 80))

                {

                    sumC3++;

                }

                else if ((60 <= stu[i].english) && (stu[i].english < 70))

                {

                    sumC4++;

                }

                else

                { sumC5++; }

            }

            per1 = sumC1 / snums;

            per2 = sumC2 / snums;

            per3 = sumC3 / snums;

            per4 = sumC4 / snums;

            per5 = sumC5 / snums;

            return string.Format("数学成绩百分比:" + "\n" + "90~100:" + per1 + "  80~90:" + per2 + "  80~70:" + per3 + "  70~60:" + per4 + "  60以下的:" + per5);

        }

    }

}

From窗体代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Test4_3

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        public StudentList sl = new StudentList();

        private void btnAdd_Click(object sender, EventArgs e)

        { 

                Student s = new Student();

                s.stuNo = txtStuNo.Text;

                s.name = txtName.Text;

                s.chinese = Convert.ToDouble(txtChina.Text);

                s.math = Convert.ToDouble(txtMath.Text);

                s.english = Convert.ToDouble(txtEng.Text);

                sl.addstu(s);

                MessageBox.Show("添加成功");

        }

        private void btnSearch_Click(object sender, EventArgs e)

        {

            int pos = sl.searchstu(this.textBox1.Text);

            if (pos != -1)

            {

                label7.Text = this.textBox1.Text + "的总成绩:" + sl.stu[pos].sumScore;

            }

            else { MessageBox.Show("不存在这个人!"); }

        }

        private void btnFinish_Click(object sender, EventArgs e)

        {

            label7.Text = "前3名:"+"\n";

            for (int i = 0; i < 3; i++)

            {

                sl.ProThree();

                label7.Text+= sl.stu[i].name+"\n";

            }

            label7.Text += sl.getHL()+"\n";

            label7.Text += Convert.ToString(sl.SumScore())+"\n";

            label7.Text += sl.PerC()+"\n";

            label7.Text += sl.PerM()+"\n";

            label7.Text += sl.PerE()+"\n";

        }   }}

六、实验体会(遇到问题及解决办法,编程后的心得体会)

实验项目名称:     继承与多态    实验学时:      6      

同组学生姓名:                   实验地点:  A205       

实验日期:  10月8日-10月15日  实验成绩:            

批改教师:                       批改时间:            

实验3  继承与多态

一、实验目的

(1)理解类的继承性与多态性;

(2)掌握虚方法的定义以及如何用虚方法实现多态;

(3)掌握抽象类的定义以及如何用用抽象方法实现多态;

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;

(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有Visual Studio .NET软件。

四、实验步骤

1、分析题意;

2、根据题目要求,新建项目;

3、编写并输入相关的程序代码;

5、运行与调试项目;

6、保存项目。

五、实验内容

1、设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。

Student类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test5_1

{

    public abstract class Student

    {

        protected string name;

        protected int age;

        public static int number;

        public Student(string name, int age)

        {

            this.name = name;

            this.age = age;

            number++;

        }

        public string Name

        {

            get { return name; }

        }

        public abstract double Average();

    }

    public class Pupil : Student

    {

        protected double chinese;

        protected double math;

        public Pupil(string name, int age, double chinese, double math)

            : base(name, age)

        {

            this.chinese = chinese;

            this.math = math;

        }

        public override double Average()

        {

            return (chinese + math) / 2;

        }

    }

    public class Middle : Student

    {

        protected double chinese;

        protected double math;

        protected double english;

        public Middle(string name, int age, double chinese, double math, double english)

            : base(name, age)

        {

            this.chinese = chinese;

            this.math = math;

            this.english = english;

        }

        public override double Average()

        {

            return (chinese + math + english) / 3;

        }

    }

    public class College : Student

    {

        protected double required;

        protected double elective;

        public College(string name, int age, double required, double elective)

            : base(name, age)

        {

            this.required = required;

            this.elective = elective;

        }

        public override double Average()

        {

            return (required + elective) / 2;

        }

    }

}

Form窗体内的代码:

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Test5_1

{

    public partial class Form1 : Form

    {

       

        public Form1()

        {

            InitializeComponent();

        }

        private void btnSmall_Click(object sender, EventArgs e)

        {

            Pupil p = new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.Text),Convert.ToDouble(txtMath.Text));

            lblShow.Text += "总人数:" +Convert.ToString( Student.number) + "," + "姓名:" + p.Name + "," + "小学生" + "," + "平均成绩为:" + p.Average() +"\n";

        }

        private void btnMiddle_Click(object sender, EventArgs e)

        {

            Middle m = new Middle(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));

            lblShow.Text += "总人数:" + Convert.ToString(Student.number) + "," + "姓名:" + m.Name + "," + "中学生" + "," + "平均成绩为:" + m.Average() + "\n";

        }

        private void btnBig_Click(object sender, EventArgs e)

        {

            College c = new College(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text));

            lblShow.Text += "总人数:" + Convert.ToString(Student.number) + "," + "姓名:" + c.Name + "," + "大学生" + "," + "平均成绩为:" + c.Average() + "\n";

        }

    }

}

2、设计一个Windows应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。

Figure类代码:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test5_2

{

   public abstract class Figure

    {

       public abstract double Area();

    }

    public class Circle:Figure

    {

        double radius;

        public Circle(double r)

        {

            radius = r;

        }

        public override double Area()

        {

            return radius * radius * 3.14;

        }

    }

    public class JUxing:Figure

    {

        double chang;

        double kuan;

        public JUxing(double c, double k)

        {

            this.chang = c;

            this.kuan = k;

        }

        public override double Area()

        {

            return chang * kuan;

        }

    }

    public class San:Figure

    {

        double bian;

        double heigth;

        public San(double b, double h)

        {

            this.bian = b;

            this.heigth = h;

        }

        public override double Area()

        {

            return bian * heigth / 2;

        }

    }

}

Form窗体代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Test5_2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void btnCircle_Click(object sender, EventArgs e)

        {

            Circle c=new Circle(Convert.ToInt32(TxtChang.Text));

            lblShow.Text = "圆的面积为:" + c.Area();

        }

        private void btnJu_Click(object sender, EventArgs e)

        {

            JUxing j = new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));

            lblShow.Text = "矩形的面积为:" + j.Area();

        }

        private void btnSan_Click(object sender, EventArgs e)

        {

            San s = new San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));

           lblShow.Text = "三角形的面积为:" + s.Area();

        }

    }

}

3、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。分别用new关键字,虚方法,抽象类实现多态性。

  使用new关键字:

using System;

using System.Collections.Generic;

using System.Text;

namespace Tests3_1

{

    class Program

    {

        static void Main(string[] args)

        {

            Studnet s = new Studnet("学生");

            Teacher t = new Teacher("老师");

            Console.WriteLine(s.name+s.Work());

            Console.WriteLine(t.name+t.Work());

            Console.ReadLine();

           

        }

    }

    public class Person

    {

        public string name;

        public interface Method

        {

            string Work();

        }

    }

    public class Studnet : Person

    {

        public Studnet(string name)

        {

            this.name = name;

        }

        public string Work()

        {

            return  "早上8:30开始上课!";

        }

    }

    public class Teacher :Person

    {

        public Teacher(string name)

        {

            this.name = name;

        }

        public string Work()

        {

            return "开始讲课!";

        }

    }

}

使用虚方法:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_5

{

    class Program

    {

        static void Main(string[] args)

        {

           Teacher t=new Teacher("张三","老师");

           PersonWork(t);

           Student s = new Student("李四","学生");

           PersonWork(s);

        }

        private static void PersonWork(Person person)

        {

            Console.WriteLine(person.Work());

        }

        public class Person

        {

            public string name;

            public Person(string name) { this.name = name; }

            public virtual string Work()

            {

                return string.Format("Person{0}:早上8:30开始",name);

            }

        }

        public class Student : Person

        {

            private string type;

            public Student(string name,string type):base(name)

            {

                this.type = type;

            }

            public override string Work()

            {

                return string.Format("Person{0}:早上8:30开始上课", name);

            }

        }

        public class Teacher : Person

        {

            private string type;

             public Teacher(string name,string type):base(name)

            {

                this.type = type;

            }

            public override string Work()

            {

                return string.Format("Person{0}:早上8:30开始讲课", name);

            }

        }

    }

}

抽象类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_5

{

    class Program

    {

        static void Main(string[] args)

        {

           Teacher t=new Teacher("张三","老师");

           PersonWork(t);

           Student s = new Student("李四","学生");

           PersonWork(s);

        }

        private static void PersonWork(Person person)

        {

            Console.WriteLine(person.Work());

        }

        public abstract class Person

        {

            public string name;

            public Person(string name) { this.name = name; }

            public abstract string Work();

        }

        public class Student : Person

        {

            private string type;

            public Student(string name,string type):base(name)

            {

                this.type = type;

            }

            public override string Work()

            {

                return string.Format("Person{0}:早上8:30开始上课", name);

            }

        }

        public class Teacher : Person

        {

            private string type;

             public Teacher(string name,string type):base(name)

            {

                this.type = type;

            }

            public override string Work()

            {

                return string.Format("Person{0}:早上8:30开始讲课", name);

            }

        }

    }

}

六、实验体会(遇到问题及解决办法,编程后的心得体会)

实验项目名称: 接口、文件和流    实验学时:      6     

同组学生姓名:                   实验地点:  A205      

实验日期:  10月15日-10月22日 实验成绩:            

批改教师:                       批改时间:             

实验4  接口、文件和流

一、实验目的

(1)掌握接口的定义及使用方法;

(2)掌握流,序列化和反序列化的概念和使用方法;

(3)掌握流文件的读写操作类及其使用方法;

(4)掌握OpenFileDialog,SaveFileDialog等控件的使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;

(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有Visual Studio .NET软件。

四、实验步骤

1、分析题意;

2、根据题目要求,新建项目;

3、编写并输入相关的程序代码;

5、运行与调试项目;

6、保存项目。

五、实验内容

1、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。用接口来实现。

using System;

using System.Collections.Generic;

using System.Text;

namespace Test1_5

{

    class Program

    {

        static void Main(string[] args)

        {

            Student s = new Student("张三","学生");

            Console.WriteLine(s.Work());

            Teacher t = new Teacher("李四","老师");

            Console.WriteLine(t.Work());

        }

        public abstract class Person

        {

            public string name;

            public Person(string name)

            {

                this.name = name;

            }

        }

       interface IPerson

        {

           string type { get;}

            string Work();

        }

        public class Student :Person, IPerson

        {

            public string type

            {

                get { return string.Format("老师"); }

            }

              public Student(string name, string type)

                : base(name)

            {

                this.name=name;

            }

            public string Work()

            {

                return string.Format("Person{0}:早上8:30开始上课", name);

            }

        }

        public class Teacher :Person, IPerson

        {

            public string type

            {

                get { return string.Format("学生"); }

            }

            public Teacher(string name, string type)

                : base(name)

            {

                this.name = name;

            }

            public string Work()

            {

                return string.Format("Person{0}:早上8:30开始讲课", name);

            }

        }

    }

}

2、声明一个接口Iplayer,包含5个接口方法:播放,停止,暂停,上一首和下一首。在该程序中定义一个MP3播放器类和一个AVI播放器类,以实现该接口。

MP3类(包含Iplayer接口,AVI类):

using System;

using System.Collections.Generic;

using System.Text;

namespace Test5_3

{

    interface IPlayer

    {

        string Play();

        string Stop();

        string Pause();

        string Pre();

        string Next();

    }

    public class MP3:IPlayer

    {

        public string Play()

        {

            return "正在播放MP3歌曲!";

        }

        public string Stop()

        {

            return "停止播放MP3歌曲!";

        }

        public string Pause()

        {

            return "暂停播放MP3歌曲!";

        }

        public string Pre()

        {

            return "播放上一首MP3歌曲!";

        }

        public string Next()

        {

            return "播放下一首MP3歌曲!";

        }

    }

    public class AVI : IPlayer

    {

        public string Play()

        {

            return "正在播放AVI歌曲!";

        }

        public string Stop()

        {

            return "停止播放AVI歌曲!";

        }

        public string Pause()

        {

            return "暂停播放AVI歌曲!";

        }

        public string Pre()

        {

            return "播放上一首AVI歌曲!";

        }

        public string Next()

        {

            return "播放下一首AVI歌曲!";

        }

    }

}

Form窗体里代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Test5_3

{

    public partial class Form1 : Form

    {

        IPlayer iplayer;

        MP3 mp3;

        AVI avi;

        public Form1()

        {

            InitializeComponent();

        }

        private void btnMp3_Click(object sender, EventArgs e)

        {

            mp3 = new MP3();

            iplayer = (IPlayer)mp3;

        }

        private void btnPlay_Click(object sender, EventArgs e)

        {

            label1.Text = iplayer.Play();

        }

        private void btnUp_Click(object sender, EventArgs e)

        {

            label1.Text = iplayer.Pre();

        }

        private void btnStop_Click(object sender, EventArgs e)

        {

            label1.Text = iplayer.Stop();

        }

        private void btnPause_Click(object sender, EventArgs e)

        {

            label1.Text = iplayer.Pause();

        }

        private void btnNext_Click(object sender, EventArgs e)

        {

            label1.Text = iplayer.Next();

        }

        private void btnAvi_Click(object sender, EventArgs e)

        {

            avi = new AVI();

            iplayer = (IPlayer)avi;

        }

    }

}

3、实现对文本文件的读写操作,用文件操作控件打开和保存文件。

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace Test9_2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void btnSave_Click(object sender, EventArgs e)

        {

            saveFileDialog1.ShowDialog();

            StreamWriter sw = new StreamWriter(saveFileDialog1.FileName,true);

            sw.WriteLine(DateTime.Now.ToString());

            sw.WriteLine(txtSource.Text);

            sw.Close();

        }

        private void btnShow_Click(object sender, EventArgs e)

        {

            StreamReader sr = new StreamReader(saveFileDialog1.FileName);

            txtShow.Text = sr.ReadToEnd();

            sr.Close();

        }

    }

}

4、实现对二进制文件的读写操作。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace Test9_3

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void btnSave_Click(object sender, EventArgs e)

        {

            FileStream fs = new FileStream(@"d:\Data\student.dat",FileMode.Append,FileAccess.Write);

            BinaryWriter bw = new BinaryWriter(fs);

            bw.Write(Int32.Parse(txtStuNo.Text));

            bw.Write(TxtName.Text);

            bool isMale;

            if (rdoMan.Checked)

                isMale = true;

            else

                isMale = false;

            bw.Write(isMale);

            fs.Close();

            bw.Close();

        }

        private void btnShow_Click(object sender, EventArgs e)

        {

            lstShow.Items.Clear();

            lstShow.Items.Add("学号\t姓名\t性别");

            FileStream fs = new FileStream(@"d:\Data\student.dat",FileMode.Open,FileAccess.Read);

            BinaryReader br = new BinaryReader(fs);

            fs.Position = 0;

            while (fs.Position != fs.Length)

            {

                int s_no = br.ReadInt32();

                string name = br.ReadString();

                string sex = "";

                if (br.ReadBoolean())

                    sex = "男";

                else

                    sex = "女";

                string result = String.Format("{0}\t{1}\t{2}",s_no,name,sex);

                lstShow.Items.Add(result);

            }

            br.Close();

            fs.Close();

        }

    }

}

5、实现对象序列化和反序化。

Student类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test9_3

{

    [Serializable]

    public class Student

    {

        public int sno;

        public string name;

        public bool sex;

        public Student(int s_no, string name, bool isMale)

        {

            this.sno = s_no;

            this.name = name;

            this.sex = isMale;

        }

    }

}

StudentList类:

using System;

using System.Collections.Generic;

using System.Text;

namespace Test9_3

{

    [Serializable]

    public class StudentList

    {

        private Student[] list = new Student[100];

        public Student this[int index]

        {

            get

            {

                if (index < 0 || index >= 100)

                    return list[0];

                else

                    return list[index];

            }

            set

            {

                if (!(index < 0 || index >=100))

                    list[index] = value;

            }

        }

    }

}

Form下的代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

namespace Test9_3

{

    public partial class Test9_32 : Form

    {

        private StudentList list = new StudentList();

        private int i = 0;

        public Test9_32()

        {

            InitializeComponent();

        }

        private void Test9_32_Load(object sender, EventArgs e)

        {

        }

        private void btnSave_Click(object sender, EventArgs e)

        {

            string file = @"d:\data\student.dat";

            Stream stream = new FileStream(file,FileMode.OpenOrCreate,FileAccess.Write);

            BinaryFormatter bf = new BinaryFormatter();

            bf.Serialize(stream,list);

            stream.Close();

        }

        private void btnAdd_Click(object sender, EventArgs e)

        {

            int sno = Int32.Parse(txtStuNo.Text);

            bool isMale;

            if (rdoMan.Checked)

                isMale = true;

            else

                isMale = false;

            Student student = new Student(sno, TxtName.Text, isMale);

            list[i] = student;

            i++;

        }

        private void btnShow_Click(object sender, EventArgs e)

        {

            lstShow.Items.Clear();

            lstShow.Items.Add("学号\t姓名\t性别");

            string file = @"d:\data\student.dat";

            Stream stream = new FileStream(file,FileMode.Open,FileAccess.Read);

            BinaryFormatter bf = new BinaryFormatter();

            StudentList students = (StudentList)bf.Deserialize(stream);

            int k = 0;

            while (students[k] != null)

            {

                int s_no = students[k].sno;

                string name = students[k].name;

                bool isMale = students[k].sex;

                string sex = "";

                if (isMale)

                    sex = "男";

                else

                    sex = "女";

                string result = String.Format("{0}\t{1}\t{2}", s_no, name, sex);

                lstShow.Items.Add(result);

                k++;

            }

            stream.Close();

        }

    }

}

六、实验体会(遇到问题及解决办法,编程后的心得体会)

更多相关推荐:
C++程序设计实验报告

C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。2、掌握过程控制编程方法,正确编制多重循…

程序设计实验报告模板

C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的值传递的方式;(3)掌握函数的嵌套调用及递归调用的设计方法;(4)在编程过程…

Java程序设计实验报告

学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指导教师:20XX20XX学年第二学期金陵科技学院教务处制实验报告书写要求实验报告…

程序设计综合实验报告册

西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户操作界面业务逻辑编写实验目的及内容1根据ATM的工作流程编写用户界面掌握文本用户...

C程序设计实验报告

C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的结果如果输入数比正确的结果要大提示猜大了如果输入数比正确的结果要小提示猜小了当猜...

C程序设计实验报告5

工学院工业设计专业10级20xx至20xx学年度第1学期学号2104021638姓名杨芹芹20xx年9月22日第34节综合楼325教室

C程序设计实验报告2

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年9月22日第34节综合楼325教室

《高级语言程序设计》实验报告(必看)

高级语言程序设计实验报告

c++程序设计实验报告实验一

C实验报告课程名称C程序设计成绩评定实验项目名称几何形体练习1指导教师实验项目编号1实验项目类型实验地点学生姓名学号学院计算机与信息工程学院专业计算机科学与技术实验时间20xx年11月26日一实验目的熟悉掌握类...

C++程序设计实验报告

C实验报告实验一1实验要求1编写一个函数把华氏温度转换为摄氏温度转换公式如下CF32592编写重载函数Max1可分别求两个整数三个整数两个双精度数三个双精度数的最大值3使用系统函数powxy计算xy的值注意包含...

C程序设计实验报告3-

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年10月8日第34节综合楼325教室

C++描述程序设计实验报告

程序设计基础实验报告实验一面向过程的简单程序设计1实验目的掌握C语言的数据类型包括对各种数据类型变量的定义初始化赋值等运算符和表达式的使用掌握赋值语句的使用掌握数据的输入输出方法2实验设备VisualC603实...

程序设计实验报告(37篇)