【C#】实验3

s3-1

设计项目s3-1。构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类来对Point类进行使用。

/*
 * 作者:JeronZhou
 * 日期:2021-09-15
 * 功能:点类
 */

using System;
using System.Collections.Generic;
using System.Text;

namespace s3_1
{
	public class Point  //点类
    {
		public double x,y;
        public Point()  //无参构造函数
        {
        	this.x=0;
        	this.y=0;
        }
        public Point(double xx, double yy)  //有参构造函数
        {
        	this.x=xx;
        	this.y=yy;
        }
        public static double Distance(Point a, Point b)  //求两点间距离
        {
        	double distance;
        	distance = Math.Pow(((a.x-b.x)*(a.x-b.x))+((a.y-b.y)*(a.y-b.y)),0.5);
        	return distance;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Point A = new Point();     //点A(0,0),无参构造
            Point B = new Point(3,4);  //点B(3,4),有参构造
            double distance = Point.Distance(A,B);
            Console.WriteLine("A点坐标为:(" + A.x + "," + A.y + ")");
            Console.WriteLine("B点坐标为:(" + B.x + "," + B.y + ")");
            Console.WriteLine("AB两点的距离为:"+distance);
            Console.ReadLine();
        }
    }
}

设计测试用例为A(0,0)、B(3,4),A点为无参构造,B点为有参构造。运行程序,得到两点距离为5,分析可知结果正确。
在这里插入图片描述

s3-2

设计项目s3-2。编写一个程序,输入自己的生日,判断这一天是这一年的第几天。

/*
 * 作者:JeronZhou
 * 日期:2021-09-19
 * 功能:输入自己的生日,判断这一天是这一年的第几天
 */

using System;

namespace s3_2
{
	class Program
	{
		public static void Main(string[] args)
		{
			int sum = 0;
			Console.WriteLine("请输入年份:");
            int year = int.Parse(Console.ReadLine());   //输入年份
            Console.WriteLine("请输入月份:");
            int month = int.Parse(Console.ReadLine());  //输入月份
            Console.WriteLine("请输入日期:");
            int day = int.Parse(Console.ReadLine());    //输入日期
                        
            int [] M1 = {31,28,31,30,31,30,31,31,30,31,30,31};  //平年月份情况
            int [] M2 = {31,29,31,30,31,30,31,31,30,31,30,31};  //闰年月份情况
            
            if(month<1 || month>12 || day<1 || day>31)
            {
            	Console.WriteLine("数据错误!请重新输入!");
            	Console.ReadLine();
            }
            else if(month==2 && (year%4==0 || year%400==0) && day>29)
            {
            	Console.WriteLine("数据错误!请重新输入!");
            	Console.ReadLine();
            }
            else if(month==2 && !(year%4==0 || year%400==0) && day>28)
            {
            	Console.WriteLine("数据错误!请重新输入!");
            	Console.ReadLine();
            }
            else
            {
            	if(year%4==0 || year%400==0)  //闰年的情况
            	{
            		for(int i=1;i<month;i++)
            		{
            			sum += M2[i-1];
            		}
            		sum += day;
            	}
            	else  //平年的情况
            	{
            		for(int i=1;i<month;i++)
            		{
            			sum += M1[i-1];
            		}
            		sum += day;
            	}
            	Console.WriteLine("你的生日是" + year + "年的第" + sum + "天。");
            	Console.ReadLine();
            }
		}
	}
}

测试用例1:输入生日为2001年4月6日,输出结果为第96天,结果正确。
在这里插入图片描述
测试用例2:输入生日为2000年12月31日,输出结果为第366天,结果正确。
在这里插入图片描述
测试用例3:输入生日为1977年2月29日,验证平年没有2月29号的错误处理情况,输出提示数据错误,结果正确。
在这里插入图片描述

s3-3

设计项目s3-3。编写一个程序,用来模拟银行帐户的基本操作,如帐户开户的话,则最低存款额为100、存取现金操作以及在使用任意修改余额后都可以随时查看帐户余额。请使用重载的带参数的构造函数。

/*
 * 作者:JeronZhou
 * 日期:2021-09-19
 * 功能:模拟银行帐户的基本操作。
 */

using System;

namespace bank
{
	class Account
	{
		public double saving;
		public Account()          //默认无参构造函数
		{
			this.saving = 100;
		}
		public Account(double s)  //有参构造函数
		{
			this.saving = s;
		}
	}
	class BANK
	{
	    public static void Main()
	    {
	    	Account X = new Account();
	        int password = 123456;
	        Console.WriteLine("欢迎您使用本系统!");
	        Console.WriteLine("(如果您尚未创建账户,则输入初始密码:123456)");
	        Console.Write("请输入您的密码:");
	        string s1 = Console.ReadLine();
	        int a1 = int.Parse(s1);
	        
	        if(a1 == password)  //密码正确情况
	        {
	        	Console.WriteLine();
	            Console.WriteLine("(提示:开户至少需要存入¥100)");
	            Console.Write("开始创建账户,请输入需要存入的金额:");
	            string s = Console.ReadLine();
	            float money = int.Parse(s);
	            if(money<100)
	            {
	                Console.WriteLine("所存金额不满足开户条件!");
	                Console.WriteLine("已成功退出系统");
	                Console.ReadLine();
	                return;
	            }
	            else
	            {
	            	Console.WriteLine("您好,您的账户已开户成功!");
	                X.saving = money;
	            }
	        }
	        else if(a1 != password)  //密码错误情况
	        {
	            Console.Write("密码错误,请重新输入:");
	            string s2 = Console.ReadLine();  //再次接受输入
	            int a2 = int.Parse(s2);
	            if(a2 != password)
	            {
	                Console.Write("密码错误,请重新输入:");
	                string s3=Console.ReadLine();  //第三次接受输入,错误时将吞卡
	                int a3=int.Parse(s3);
	                if(a3!=password)
	                {
	                    Console.WriteLine("密码连续三次错误,用户已锁定");
	                    Console.WriteLine("已成功退出系统");
	                    Console.ReadLine();
	                    return;
	                }
	            }
	        }
	        
	        while(true)
	        {
	        	Console.WriteLine("");
	        	Console.WriteLine("请选择你所需要的服务:");
	        	Console.WriteLine("1.查询余额");
	     		Console.WriteLine("2.取款服务");
	     		Console.WriteLine("3.存款服务");
	     		Console.WriteLine("4.修改密码");
	     		Console.WriteLine("5.退出系统");
	     		string st = Console.ReadLine();
	     		int choice = int.Parse(st);
	     		switch(choice)
	     		{
	      			case 0:
	                	goto case 1;
	            	case 1:
	                	Console.WriteLine();
	                	Console.Write("您好!您的账户余额是:¥ ");
	       				Console.WriteLine(X.saving);
	       				break;
	            	case 2:
	       				Console.WriteLine();
	       				Console.Write("请输入您需要取的金额:");
	       				string str1 = Console.ReadLine();
	       				int money1 = int.Parse(str1);
	       				if(money1>X.saving)
	       				{
	       					Console.WriteLine("对不起,您的存款不足!");
	       				}
	       				else
	       				{
	        				X.saving=X.saving-money1;
	        				Console.WriteLine("正在处理中,请稍候.....");
	        				Console.WriteLine("您的服务已完成!");
	       				}
	       				break;
	     			case 3:
	       				Console.WriteLine();
	       				Console.Write("请输入您需要存的金额:");
	       				string str2=Console.ReadLine();
	       				int money2=int.Parse(str2);
	      				X.saving = X.saving + money2;
	       				Console.WriteLine("正在处理中,请稍候....");
	       				Console.WriteLine("您的服务已完成!");
	       				break;
	      			case 4:
	       				Console.WriteLine();
	       				Console.Write("请输入原来的密码:");
	       				string str3=Console.ReadLine();
	       				int t = int.Parse(str3);
	       				if(t == password)
	       				{
	        				Console.Write("请输入新密码:");
	        				string str4= Console.ReadLine();
	        				int password1=int.Parse(str4);
	       					Console.Write("请再次输入新密码:");
	        				string str5=Console.ReadLine();
	        				int password2=int.Parse(str5);
	        				if(password2==password1)
	        				{
	         					Console.WriteLine("您的密码已修改成功!");
	         					password=password2;
	        				}
	        				else
	        				{
	        			    	Console.WriteLine("两次输入的密码不相同,修改不成功!");
	        				}
	       				}
	       				else
	       				{
	        				Console.WriteLine("您输入的密码不正确!");
	       				}
	       				break;
	      	    	case 5:
	       				return;
	     			default:
	       				Console.WriteLine("您没有做选择!");
	      				break;
	        	}
	     	}
	    }
	}
}

测试用例1:模拟系统正常操作过程。

进入系统界面,按照提示输入初始密码123456,之后按照提示存入200元开户,系统显示开户成功。
在这里插入图片描述

按照菜单栏提示输入“1”,进行查询账户余额操作。显示账户余额为200元。
在这里插入图片描述

按照菜单栏提示输入“2”,进行取款操作。输入取款金额为100元,再按照菜单栏提示输入“1”,进行查询账户余额操作,系统显示账户余额为100元。
在这里插入图片描述

按照菜单栏提示输入“3”,进行存款操作。输入取款金额为150元,再按照菜单栏提示输入“1”,进行查询账户余额操作,系统显示账户余额为250元。
在这里插入图片描述

按照菜单栏提示输入“4”,进行修改密码操作。输入新密码为888888,系统显示密码修改成功。
在这里插入图片描述

按照菜单栏提示输入“5”,成功退出系统。

测试用例2:模拟密码输入错误的情况。
进入系统界面,连续三次输错密码,系统自动锁定用户并强制退出系统。
在这里插入图片描述
测试用例3:模拟系统无法开户的情况。
进入系统界面,按照提示输入初始密码123456,之后按照提示存入90元开户,系统显示开户失败,自动退出系统。
在这里插入图片描述

s3-4

设计项目s3-4。请采用面向对象的程序设计方法建立一个汽车Auto类 包括轮胎个数、汽车颜色、 车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求 汽车能够加速、 减速、 停车。 再定义一个小汽车类Car 继承Auto 并添加空调、CD等成员变量 覆盖加速 、减速的方法。

/*
 * 作者:JeronZhou
 * 日期:2021-09-19
 * 功能:汽车类与小汽车类
 */

using System;

namespace s3_4
{
	public class Auto  //汽车类
	{
		public int TyreNumber;  //轮胎个数
		public string color;    //汽车颜色
		public double weight;   //车身重量
		public double speed;    //当前速度
		
		public Auto(int t,string c,double w,double s)  //构造函数
		{
			this.TyreNumber = t;
			this.color = c;
			this.weight = w;
			this.speed = s;
			Console.WriteLine();
			Console.WriteLine("成功构造汽车!");
			Get_TyreNumber(this);
			Get_Color(this);
			Get_Weight(this);
			Get_Speed(this);
		}
		
		public void SpeedUp(Auto car)  //加速
		{
			Console.Write("请输入需要加速的速度:");
			string str = Console.ReadLine();
	        double up = double.Parse(str);
			car.speed += up;
			Console.WriteLine("汽车成功加速!已加速" + up + "km/h,当前速度为:" + car.speed  + "km/h");
		}
		
		public void SpeedDown(Auto car)  //减速
		{
			Console.Write("请输入需要减速的速度:");
			string str = Console.ReadLine();
	        double down = double.Parse(str);
			car.speed -= down;
			Console.WriteLine("汽车成功加速!已加速" + down + "km/h,当前速度为:" + car.speed  + "km/h");
		}
		
		public void Stop(Auto car)  //停车
		{
			car.speed = 0;
			Console.WriteLine("汽车成功停车!当前速度为:" + car.speed  + "km/h");
		}
		
		public void Get_TyreNumber(Auto car)  //输出轮胎个数
		{
			Console.WriteLine("轮胎个数:" + car.TyreNumber + "个");
		}
		
		public void Get_Color(Auto car)  //输出汽车颜色
		{
			Console.WriteLine("汽车颜色:" + car.color);
		}
		
		public void Get_Weight(Auto car)  //输出车身重量
		{
			Console.WriteLine("车身重量:" + car.weight + "kg");
		}
		
		public void Get_Speed(Auto car)  //输出当前速度
		{
			Console.WriteLine("当前速度:" + car.speed + "km/h");
		}
	}
	
	public class Car : Auto  //小汽车类
	{
		public string AirConditioner;  //车载空调
		public string CD;              //CD播放器
		
		public Car(int t,string c,double w,double s,string a,string cd) : base(t,c,w,s)  //构造函数
		{
			this.AirConditioner = a;
			this.CD = cd;
			Console.WriteLine();
			Console.WriteLine("成功构造小汽车!");
			Get_TyreNumber(this);
			Get_Color(this);
			Get_Weight(this);
			Get_Speed(this);
			Get_AirConditioner(this);
			Get_CD(this);
		}
		
		public void Get_AirConditioner(Car car)  //输出空调型号
		{
			Console.WriteLine("车载空调型号为:" + car.AirConditioner);
		}
		
		public void Get_CD(Car car)  //输出CD播放器型号
		{
			Console.WriteLine("CD播放器型号为:" + car.CD);
		}
		
		public void SpeedUp(Car car)  //覆盖加速
		{
			Console.Write("请输入需要加速的速度:");
			string str = Console.ReadLine();
	        double up = double.Parse(str);
			car.speed += up;
			Console.WriteLine("小汽车成功加速!已加速" + up + "km/h,当前速度为:" + car.speed + "km/h");
		}
		
		public void SpeedDown(Car car)  //覆盖减速
		{
			Console.Write("请输入需要减速的速度:");
			string str = Console.ReadLine();
	        double down = double.Parse(str);
			car.speed -= down;
			Console.WriteLine("小汽车成功减速!已减速" + down + "km/h,当前速度为:" + car.speed + "km/h");
		}
		
		public void Stop(Car car)  //覆盖加速
		{
			car.speed = 0;
			Console.WriteLine("小汽车成功停车!当前速度为:" + car.speed + "km/h");
		}
		
		public void Open_AirConditioner()  //打开空调
		{
			Console.WriteLine("成功打开空调!");
		}
		
		public void Close_AirConditioner()  //关闭空调
		{
			Console.WriteLine("成功关闭空调!");
		}
		
		public void Open_CD()  //打开CD
		{
			Console.WriteLine("成功打开CD!");
		}
		
		public void Close_CD()  //关闭CD
		{
			Console.WriteLine("成功关闭CD!");
		}
	}
	
	class Program
	{
		public static void Main(string[] args)
		{
			bool flag = true;
			Console.WriteLine("【汽车类测试开始】");
			Console.WriteLine();
			Console.Write("请输入轮胎数量:");
			string s1 = Console.ReadLine();
	        int t1 = int.Parse(s1);
	        Console.Write("请输入汽车颜色:");
			string t2 = Console.ReadLine();
	        Console.Write("请输入车身重量:");
			string s3 = Console.ReadLine();
	        int t3 = int.Parse(s3);
	        Console.Write("请输入当前速度:");
			string s4 = Console.ReadLine();
	        int t4 = int.Parse(s4);
			Auto MyAuto = new Auto(t1,t2,t3,t4);  //重量为1500kg速度为0的白色四轮汽车
			Console.WriteLine();
			while(flag)
			{
				Console.WriteLine("请选择您需要的操作:");
				Console.WriteLine("【1】汽车加速");
				Console.WriteLine("【2】汽车减速");
				Console.WriteLine("【3】汽车停车");
				Console.WriteLine("【4】结束操作");
				string h = Console.ReadLine();
	     		int choice = int.Parse(h);
				switch(choice)
				{
					case 1:
						MyAuto.SpeedUp(MyAuto);
						Console.WriteLine();
						break;
					case 2:
						MyAuto.SpeedDown(MyAuto);
						Console.WriteLine();
						break;
					case 3:
						MyAuto.Stop(MyAuto);
						Console.WriteLine();
						break;
					case 4:
						flag = false;
						Console.WriteLine();
						break;
				}
			}
			flag = true;
			Console.WriteLine("【汽车类测试完毕】");
			Console.WriteLine();
			
			Console.WriteLine("【小汽车类测试开始】");
			Console.WriteLine();
			Console.Write("请输入空调型号:");
			string t5 = Console.ReadLine();
	        Console.Write("请输入CD播放器型号:");
			string t6 = Console.ReadLine();
			Car MyCar = new Car(t1,t2,t3,t4,t5,t6);
			Console.WriteLine();
			while(flag)
			{
				Console.WriteLine("请选择您需要的操作:");
				Console.WriteLine("【1】小汽车加速");
				Console.WriteLine("【2】小汽车减速");
				Console.WriteLine("【3】小汽车停车");
				Console.WriteLine("【4】打开车载空调");
				Console.WriteLine("【5】关闭车载空调");
				Console.WriteLine("【6】打开车载CD");
				Console.WriteLine("【7】关闭车载CD");
				Console.WriteLine("【8】结束操作");
				string h = Console.ReadLine();
	     		int choice = int.Parse(h);
				switch(choice)
				{
					case 1:
						MyCar.SpeedUp(MyCar);
						Console.WriteLine();
						break;
					case 2:
						MyCar.SpeedDown(MyCar);
						Console.WriteLine();
						break;
					case 3:
						MyCar.Stop(MyCar);
						Console.WriteLine();
						break;
					case 4:
						MyCar.Open_AirConditioner();
						Console.WriteLine();
						break;
					case 5:
						MyCar.Close_AirConditioner();
						Console.WriteLine();
						break;
					case 6:
						MyCar.Open_CD();
						Console.WriteLine();
						break;
					case 7:
						MyCar.Close_CD();
						Console.WriteLine();
						break;
					case 8:
						flag = false;
						Console.WriteLine();
						break;
				}
			}
			flag = true;
			Console.WriteLine("【小汽车类测试完毕】");
			Console.WriteLine();
			Console.ReadLine();
		}
	}
}

测试汽车类:

输入轮胎数量为4,汽车颜色为白色,车身重量为1500kg,初始速度为0km/h,构造汽车类对象MyAuto。控制台显示成功构造汽车MyAuto,并给出相关参数。
在这里插入图片描述

在菜单栏选择操作1,测试汽车加速。输入需要加速的速度为50km/h,控制台显示汽车已成功加速50km/h,当前速度为50km/h。
在这里插入图片描述

在菜单栏选择操作2,测试汽车减速。输入需要减速的速度为30km/h,控制台显示汽车已成功减速30km/h,当前速度为20km/h。
在这里插入图片描述

在菜单栏选择操作3,测试汽车停车。控制台显示汽车已成功停车,当前速度为0km/h。
在这里插入图片描述

在菜单栏选择操作4,结束操作,汽车类测试完毕,开始测试小汽车类。
在这里插入图片描述
测试小汽车类:

继续输入空调型号为“歌谷CB-9000S”,CD播放器型号为“索尼gs820bt”,其余参数均继承自汽车类对象MyAuto,控制台显示成功构造小汽车类对象MyCar,并给出相关参数。
在这里插入图片描述

在菜单栏选择操作1,测试小汽车加速。输入需要加速的速度为60km/h,控制台显示小汽车已成功加速60km/h,当前速度为60km/h。
在这里插入图片描述

在菜单栏选择操作2,测试小汽车减速。输入需要减速的速度为20km/h,控制台显示小汽车已成功减速20km/h,当前速度为40km/h。
在这里插入图片描述

在菜单栏选择操作4,测试小汽车打开空调。控制台显示空调已打开。
在这里插入图片描述

在菜单栏选择操作5,测试小汽车关闭空调。控制台显示空调已关闭。
在这里插入图片描述

在菜单栏选择操作6,测试小汽车打开CD。控制台显示CD已打开。
在这里插入图片描述

在菜单栏选择操作7,测试小汽车关闭CD。控制台显示CD已关闭。
在这里插入图片描述

在菜单栏选择操作3,测试小汽车停车。控制台显示小汽车已成功停车,当前速度为0km/h。
在这里插入图片描述

在菜单栏选择操作8,结束操作,小汽车类测试完毕。整体测试结束。

在这里插入图片描述

解决方案源代码

C#实验3 解决方案及项目源代码压缩包

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeron Zhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值