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,结束操作,小汽车类测试完毕。整体测试结束。