C#程序设计经典教程(第三版)实验四

注意:C#语言刚入门,代码质量不高!!!可以参考

1.设计一个简单的 Windows 应用程序,在文本框中输入两个点的坐标值,单击“确定时显示两点之间的距离,如图 4-22 所示。

界面布局:

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 实训4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int x1, x2, y1, y2;
            x1 = Convert.ToInt32(textBox1.Text);
            y1 = Convert.ToInt32(textBox2.Text);
            x2 = Convert.ToInt32(textBox3.Text);
            y2 = Convert.ToInt32(textBox4.Text);
            Point p1 = new Point(x1, y1);
            Point p2 = new Point(x2, y2);
            textBox5.Text = p1.Distance(p2).ToString();

        }
        class Point
        {
            int x1, y1;
            public Point(int x,int y)
            {
                this.x1 = x;
                this.y1 = y;
            }
            public int X
            {
                get => x1;
            }
            public int Y
            {
                get => y1;
            }
            public Double Distance(Point point)
            {
                return System.Math.Sqrt((this.x1 - point.X) * (this.x1 - point.X) + (this.y1 - point.Y) * (this.y1 - point.Y));
            }
        }
    }
}

2.自定义一个时间类。该类包含小时、分、秒字段与属性,具有将秒增1操作的方法,如图 4-23 所示。

界面布局:

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 实训4
{
    public partial class Form2 : Form
    {
        Time time = new Time();
        public Form2()
        {
            InitializeComponent();
            textBox1.Text = time.Hour.ToString();
            textBox2.Text = time.Minute.ToString();
            textBox3.Text = time.Second.ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            time.AddSecond();
            textBox1.Text = time.Hour.ToString();
            textBox2.Text = time.Minute.ToString();
            textBox3.Text = time.Second.ToString();

        }
    }
    class Time
    {
        private double hour ;
        private double minute;
        private double second;
        public Time()
        {
         hour = System.DateTime.Now.Hour;
         minute = System.DateTime.Now.Minute;
         second = System.DateTime.Now.Second;
         }
        public Double Hour
        {
            get => hour;
        }
        public Double Minute
        {
            get => minute;
        }
        public Double Second
        {
            get => second;
        }
        public Time(double hour, double minute, double second)
        {
            this.hour = hour;
            this.minute = minute;
            this.second = second;
        }
        public void AddSecond()
        {
            second++;
            if (second > 60)
            {
                minute++;
                second = second%60;
            }
            if (minute > 60)
            {
                hour++;
                minute = minute % 60;
            }
        }
    }
}

第三小题比较复杂,可以下载资源使用,还是要弄懂代码比较好(资源已上传)

3.设计一个 Windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个生的学号、姓名、语文、数学和英语 3 门课程的期末考试成绩,要求:
(1) 能根据姓名查询指定学生的总成绩。
(2) 能统计全班学生的平均成绩
(3)能统计单科成绩最高分。
(4)能统计全班前 3 名的名单。
(5) 能统计指定课程不及格的学生名单
(6) 能统计指定课程在不同分数段的学生人数百分比
设计提示:
(1)定义一个 Student 学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)
和属性(总成绩)等。
(2) 定义一个 Grade 班级类,包含一个 Student 类型的数组(用来保存全班学生的信息)以及若干个实现上述要求的方法等。

(3) 设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中。单击“完成”按钮调用班级类的方法来显示各种统计结果。当用户输入了学生姓名并且单击“查询”按钮时显示该学生的总成绩。

界面布局:

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;

namespace 实训4
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        Grade grage = new Grade();

        private void button1_Click(object sender, EventArgs e)
        {
            grage.addStudent(new Student(textBox2.Text, textBox1.Text, Convert.ToDouble(textBox3.Text), Convert.ToDouble(textBox4.Text), Convert.ToDouble(textBox5.Text)));
            label6.Text = "添加成功";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            label7.Text = "统计全班学生的平均成绩:"+Convert.ToString(grage.getAverage()); ;
            double[] temp = grage.getSingleMaxGrage();
            label8.Text = "统计单科成绩最高分:"+"语文:" + temp[0] + ", " + "数学:" + temp[1] + ", " + "英语:" + temp[2];
            Student[] tempStu = grage.getTop3();
            label9.Text = "统计全班前3的学生名单:";
            for (int i = 0; i < tempStu.Length; i++)
            {
                if (i < 3)
                {
                    label9.Text += tempStu[i].name+",";
                }
               

            }
         
            string gradeName = textBox6.Text;
            var result=grage.getfaileStudent(gradeName);
            Student[] tempStus = result.temp;
            int sizeStu = result.size;
            label15.Text = "";
            for (int i=0;i< sizeStu; i++)
            {
                label15.Text += tempStus[i].name+",";
           }


            string gradeName1 = textBox7.Text;
            double[] tempgrade = grage.getdiffStudent(gradeName1);
            if (tempgrade != null)
            {
                label16.Text = "低于60分的学生人数百分比:" + tempgrade[0]*100 +"%" + ",  位于60分到80分的学生人数百分比:" + tempgrade[1]*100 + "%" + ",大于80分的学生人数百分比:" + tempgrade[2]*100 + "%";
            }
         
        }

        private void button3_Click(object sender, EventArgs e)
        {

            label17.Text = "总成绩为:" + grage.getStudentByName(textBox8.Text);
        }
    }
    class Student
    {
        String No;
        string Name;
        double YuWen;
        double Math;
        double English;
        double totalGrage;
        public Student(string No, string Name, double YuWen, double Math, double English)
        {
            this.No = No;
            this.Name = Name;
            this.YuWen = YuWen;
            this.Math = Math;
            this.English = English;
            this.totalGrage = YuWen + Math + English;
        }

        public String name
        {
            get => Name;
        }
        public double yuwen
        {
            get => YuWen;
        }
        public double math
        {
            get => Math;
        }
        public double english
        {
            get => English;
        }
        public double totalgrade
        {
            get => totalGrage;
        }
    }
    class Grade
    {
        Student[] arr = new Student[100];
        int size = 0;
        public String getStudentByName(String Name)
        {
            foreach(Student s in arr)
            {
                if (s.name == Name)
                {
                    return s.totalgrade.ToString();
                }
            }
            return "该学生不存在";
        }
        public void addStudent(Student s)
        {

            arr[size++] = s;
        }

        public double getAverage()
        {
            double sum = 0;
            double average;
            for(int i = 0; i < size; i++)
            {
                sum += arr[i].totalgrade;
            }
            
            average = sum / size;
            return average;
        } 
        public double[] getSingleMaxGrage()
        {
            double[] grades = new double[3];
            for(int i=0;i<size;i++)
            {
                grades[0] = grades[0] < arr[i].yuwen ? arr[i].yuwen : grades[0];
                grades[1] = grades[1] < arr[i].math ? arr[i].math : grades[1];
                grades[2] = grades[2] < arr[i].english ? arr[i].english : grades[2];
            }
            return grades;
        }
        public Student[] getTop3()
        {
         
            Student s;
            Student[] temp=new Student[size];
            for(int i = 0; i < size; i++)
            {
                for(int j = i + 1; j < size; j++)
                {
                    if (arr[i].totalgrade < arr[j].totalgrade)
                    {
                        s = arr[j];
                        arr[j] = arr[i];
                        arr[i] = s;
                    }
                }
            }
            for(int i = 0; i < size; i++)
            {
                temp[i] = arr[i];
            }
            return temp;
        }
        public (int size,Student[] temp) getfaileStudent(String gradeName)
        {
            Student[] temp=new Student[size];
            int size1 = 0;
            if ( gradeName.Contains("语文"))
            {
                for(int i=0;i<size;i++)
                {
                    if (arr[i].yuwen < 60)
                    {
                        temp[size1++] = arr[i];
                    }
                 }
            }else if(gradeName.Contains("数学"))
            {
                for (int i = 0; i < size; i++)
                {
                    if (arr[i].math < 60)
                    {
                        temp[size1++] = arr[i];
                    }
                }

            }
            else if ("英语" == gradeName)
            {
                for (int i = 0; i < size; i++)
                {
                    if (arr[i].english < 60)
                    {
                        temp[size1++] = arr[i];
                    }
                }
            }
            return (size1,temp);
        }
        public double[] getdiffStudent(String gradeName)
        {
            double[] temp = new double[3];
            int index = gradeName.Contains("语文") ? 1 : gradeName.Contains("数学") ? 2 : gradeName.Contains("英语") ? 3 : -1;
            if (index == 1)
            {
                for (int i = 0; i < size; i++)
                {
                    if (arr[i].yuwen < 60)
                    {
                        temp[0]++;
                    }else if(arr[i].yuwen>=60 && arr[i].yuwen <= 80)
                    {
                        temp[1]++;
                    }
                    else if(arr[i].yuwen>80)
                    {
                        temp[2]++;
                    }
                }

            }else if (index == 2)
            {
                for (int i = 0; i < size; i++)
                {
                    if (arr[i].math < 60)
                    {
                        temp[0]++;
                    }
                    else if (arr[i].math >= 60 && arr[i].math <= 80)
                    {
                        temp[1]++;
                    }
                    else if(arr[i].math>80)
                    {
                        temp[2]++;
                    }
                }

            }
            else if (index == 3)
            {
                for (int i = 0; i < size; i++)
                {
                    if (arr[i].english < 60)
                    {
                        temp[0]++;
                    }
                    else if (arr[i].english >= 60 && arr[i].english <= 80)
                    {
                        temp[1]++;
                    }
                    else if (arr[i].english > 80)
                    {
                        temp[2]++;
                    }
                }
            }
            else
            {
                return null;
            }
            double[] result = new double[3];
            result[0] = Math.Round(temp[0] / (temp[0] + temp[1] + temp[2]),2);
            result[1] = Math.Round(temp[1] / (temp[0] + temp[1] + temp[2]),2);
            result[2] = Math.Round(temp[2] / (temp[0] + temp[1] + temp[2]),2);
            return result;
        }
    }
}

第三个小实验比较复杂,所以展示操作(注意实验只是完成了成功的操作,对于一些错误操作未进行检查,比如文本框为空的检测,所以可能会有异常,这个可以自行写入检测代码)

新增学生:输入学生信息后,点击添加按钮,即可添加成功。(如下图,添加张三、李四、王五)

添加李四,同样是点击添加按钮即可。

统计两个文本框中输入语文和英语,再点击完成,就会展示相关的信息

右侧输入学生姓名,点击查询即可查询学生的总成绩

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值