西安石油大学C++上机实验 上机三:继承和派生程序设计(2学时)

news2025/6/16 2:55:14

上机三:继承和派生程序设计(2学时)

实验目的

了解继承在面向对象程序设计中的重要作用。

理解继承与派生的概念。

掌握通过继承派生出一个新类的方法。

掌握虚基类的作用和用法。

实验内容

P169:5.19, 5.22

上机内容

先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄
账户类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经
常用到的成员函数。要求:

(1) 类中的成员函数具有输入、输出储户上述信息的功能;

(2) 将账号设计成不可更改;

(3) 修改密码时要提供原始密码。

#include<string>
#include<iostream>
using namespace std;
class Bank
{
private:
30
31
char name[20];//姓名
 long id;//账号
long balance;//余额
public:
Bank(char *Name,long Id,long Balance)//const变量需要用初始化表初始化
{
strcpy(name,Name);
id=Id;
balance=Balance;
}
string GetName(){return name;}//获取姓名
long GetId(){return id;}//获取账号
long GetBalance(){return balance;}//获取余额
long cunkuan(long money)//存款
{
balance+=money;
return balance;
}
long qukuan(long money)//取款
{
balance-=money;
return balance;
}
 
string change_name()//修改姓名
{
 char new_name[20];
 cout<<"请输入修改后的姓名:"<<endl;
 cin>>new_name;
 strcpy(name,new_name);
 cout<<"修改成功!"<<endl;
 return name;
}
};
class SaveBank:public Bank
{
private:
char password[20];//密码
char address[20];//住址
long minimum_balance;//最小余额
32
float annual_interest_rate;//年利率
public:
SaveBank(char *Name,long Id,long Balance,char *Password,char 
*Address,long Minimum_balance,float 
Annual_interest_rate):Bank(Name,Id,Balance),minimum_balance(Minimum_balance)
,annual_interest_rate(Annual_interest_rate)
{
strcpy(password,Password);
strcpy(address,Address);
}
string GetPassword(){return password;}//获取密码
 string GetAddress(){return address;}//获取住址
long Get_minimum_balance(){return minimum_balance;}//获取最小余额
float Get_annual_interest_rate(){return annual_interest_rate;}//获取年利率
string change_password()//修改密码
{
 char new_password[20];
 char number[20];
cout<<"请输入原始密码:"<<endl;
cin>>number;
if((strcmp(number,password))==0)
{cout<<"请输入新密码:"<<endl;
cin>>new_password;
strcpy(password,new_password);
cout<<"修改成功!"<<endl;
}
else
{cerr<<"原始密码错误!请重新选择操作!"<<endl;}
return password;
}
string change_address()//修改地址
{
 char new_address[20];
 cout<<"请输入修改后的地址:"<<endl;
 cin>>new_address;
strcpy(address,new_address);
 cout<<"修改成功!"<<endl;
33
 return address;
}
void getbank()//获取客户账户信息
{
cout<<"姓名:"<<GetName()<<endl;
cout<<"账号:"<<GetId()<<endl;
cout<<"余额:"<<GetBalance()<<endl;
cout<<"密码:"<<GetPassword()<<endl;
cout<<"地址:"<<GetAddress()<<endl;
cout<<"最小余额:"<<Get_minimum_balance()<<endl;
cout<<"利率:"<<Get_annual_interest_rate()<<endl;
}
};4)添加源文件代码。在 bank.cpp 文件中添加主程序代码,如图 6 所示。
代码如下:
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
#include <stdio.h>
#include "bank.h"
using namespace std;
int main(void)
{
char name[20];
long id;
long balance;
char password[20];
char address[20];
long minimum_balance;
float annual_interest_rate;
int op; //操作
long money; //存款 or 取款数额
cout<<"请输入客户信息"<<endl;
cout<<"————————————————————————————————
————————"<<endl;
cout<<"姓名:";
cin>>name;
cout<<"账号:";
cin>>id;
cout<<"余额:";
cin>>balance;
cout<<"密码:";
35
cin>>password;
cout<<"地址:";
cin>>address;
cout<<"最小余额:";
cin>>minimum_balance;
cout<<"年利率:";
cin>>annual_interest_rate;
SaveBank 
jianghan(name,id,balance,password,address,minimum_balance,annual_interest_rate);
cout<<"———————————请输入操作
———————————————————————"<<endl;
cout<<"1:打印客户信息"<<endl;
cout<<"2:存款"<<endl;
cout<<"3:取款"<<endl;
cout<<"4:修改密码"<<endl;
 cout<<"5:修改姓名"<<endl;
 cout<<"4:修改地址"<<endl;
while(cin>>op)
{
switch(op)
{
case 1:
jianghan.getbank();
break;
case 2:
cout<<"请输入存款金额:"<<endl;
cin>>money;
jianghan.cunkuan(money);
cout<<"当前余额:"<<jianghan.GetBalance()<<endl;
break;
case 3:
cout<<"请输入取款金额:"<<endl;
cin>>money;
jianghan.qukuan(money);
cout<<"当前余额:"<<jianghan.GetBalance()<<endl;
break;
case 4:
jianghan.change_password();
break;
case 5:
36
jianghan.change_name();
break;
case 6:
jianghan.change_address();
break;
default:
cerr<<"操作错误!"<<endl;
}
}
return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7YJkxMd-1681461509616)(2023-04-14-16-15-51.png)]

实验内容

P169:5.19, 5.22

5.19 设计一个动物类,它包含一些动物的属性,如名称、大小、重量等,动物可以跑或走。然后设计一个鸟类,除了动物的基本属性外,它还有自己的羽毛、翅膀等。鸟除了跑或走外,它还可以飞翔。为了继承动物类的特性,鸟类应该继承动物类。编写一个程序来测试所设计的鸟类能否实现预定的功能。

#include <iostream>
#include<string>
using namespace std;
class Animal //声明基类Animal
{public:
Animal(string n,char s,double w) //基类构造函数
{
name=n;
size=s;
weight=w;
}
~Animal( ){ } //基类析构函数
void Run();
void Walk();
protected: //私有部分
string name;
char size;
double weight;
};
class Bird: public Animal //声明派生类Animal
{public:
Bird(string n,char s,double w,string f,string wi):Animal(n,s,w)
{
feather=f; //在函数体中只对派生类新增的数据成员初始化
wing=wi;
}
~Bird( ){ } //派生类析构函数
void show( );
void Fly();
private: //派生类的私有部分
string feather;
string wing;
};
void Animal::Run()
{
cout<<"I can run!"<<endl;
}
void Animal::Walk()
{
cout<<"I can walk!"<<endl;
}
void Bird::show()
{
cout<<"name:"<<name<<endl;
cout<<"size:"<<size<<endl;
cout<<"weight:"<<weight<<endl;
cout<<"feather:"<<feather<<endl;
cout<<"wing:"<<wing<<endl;
}
void Bird::Fly()
{
cout<<"I can fly!"<<endl;
}
void main()
{
Bird bird("乌鸦",'L',50,"黑色羽毛","斑点翅膀");
bird.show ();
bird.Run ();
bird.Walk ();
bird.Fly ();
}
//我是这样的
public class Animal{
  private String name;
  private double weight;
  private int length;
  privateString sex;
  public void run(){
  System.out.println("the animal is running!");来源:考试大
  }
  public void jump(){
  System.out.println("the animal is jumping!");
  }
  public void walk(){
  System.out.println("the animal is walking!");
  }
  }

c++ 管理动物园动物

Problem Description

动物园(Zoo)有三种动物(Animal):猫(Cat)、狗(Dog)、老虎(Tiger),显示所有动物的信息。
(1)定义5个类,动物园(Zoo)、动物(Animal)、猫(Cat)、狗(Dog)、老虎(Tiger)。
Animal是抽象基类,Cat、Dog是Animal的派生类,Tiger是Cat的派生类。
Animal中有2个数据成员。一个是动物的姓名,另一个是动物的年龄。有1个成员函数,是纯虚函数void Display(),用来显示动物的姓名和年龄。
Cat、Dog和Tiger中有3个成员函数。构造函数、析构函数和重写的函数void Display()。
Zoo中有3个数据成员。分别是:动物园最多能容纳的动物数(max)、动物园当前动物数(num)、指向Animal的数组(Animal** asp)。
Zoo中有4个成员函数。分别是:
构造函数(Zoo(int max)),完成这几个任务,把构造函数参数的值赋给对象的max,动物园当前动物数为0,
new一个Animal的数组并且都初始化为NULL。
析构函数,释放数组空间。
添加动物函数(void Add(Animal* ap)),把ap指向的动物添加到动物园数组中。
显示动物园所有动物信息函数(void ShowAll())。
(2)在main函数中创建1个最大数为5的动物园,再创建2个猫,2个狗,1个老虎,然后把它们添加到动物园,最后显示所有动物的信息。
请完成下面的程序:
————————————————
版权声明:本文为CSDN博主「爱吃月饼的兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dimrhyme/article/details/121961164
int main()
{
Zoo z(5);
Animal* pa = new Cat (“AAA”, 3);
z.Add(pa);
//delete pa;
pa = new Dog(“BBB”, 1);
z.Add(pa);
//delete pa;
pa = new Tiger (“CCC”, 2);
z.Add(pa);
//delete pa;
z.ShowAll();
return 0;
}

Sample Output
Cat:AAA,3
Dog:BBB,1
Tiger:CCC,2

#include <iostream>
using namespace std;
#include <string>


class Animal
{
public:
	string name;
	int age;
	virtual void Display() = 0;
};

class Cat :public Animal
{
public:
	Cat(){}
	Cat(string a, int b)
	{
		name = a;
		age = b;
	}
	void Display()
	{
		cout << "Cat:" << name << "," << age << endl;
	}
	~Cat(){}
};

class Dog : public Animal
{
public:
	Dog(string a, int b)
	{
		name = a;
		age = b;
	}
	void Display()
	{
		cout << "Dog:" << name << "," << age << endl;
	}
	~Dog(){}
};

class Tiger :public Cat
{
public:
	//Tiger(string a, int b):Cat(a, b){}  这种不用在父类中构造无参构造函数
	Tiger(string a, int b)//此法需要在Cat中构造无参构造函数
	{
		name = a;
		age = b;
	}
	void Display()
	{
		cout << "Tiger:" << name << "," << age << endl;
	}
	~Tiger(){}
};

class Zoo//此类放在最后
{
public:
	int max;//最大动物数
	static int num;//动物数
	Animal** asp;//指针
	Zoo(int a)
	{
		max = a;
		asp = new Animal * [max];//动物数组 asp是指针
	}
	void Add(Animal* ap)//添加动物函数
	{
		if (num < max)
		{
			*(asp + num) = ap;
			num++;//计数
		}
	}
	void ShowAll()
	{
		for (int i = 0; i < num; i++)
		{
			asp[i]->Display();
		}
	}
	~Zoo()
	{
		delete asp;//释放堆区创建的空间
	}
};
int Zoo::num = 0;


int main()
{
	Zoo z(5);
	Animal* pa = new Cat("AAA", 3);
	z.Add(pa);
	//delete pa; 
	pa = new Dog("BBB", 1);
	z.Add(pa);
	//delete pa; 
	pa = new Tiger("CCC", 2);
	z.Add(pa);
	//delete pa; 
	z.ShowAll();
	return 0;
}

————————————————
版权声明:本文为CSDN博主「爱吃月饼的兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dimrhyme/article/details/121961164

5.21 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:

(1)计算月利息

月利息=存款金额×年利率÷12

(2)更改利率(静态方法):重新设置年利率

最后,编写一个程序来测试所设计的储蓄账户类能否实现预定的功能。

#include<iostream>
#include<string.h>
using namespace std;

class basic {
public:
	long id;
	basic(long a):id(a)						//基类构造函数
	{}
	void show(long id) {
		cout <<"账号:" << id << endl;
	}
	~basic()								//基类析构函数
	{}
};
class account :private basic {
public:
	char name[20];
	long balance;
	char password[20];
	char address[20];
	long minimum_balance;
	float annual_interest_rate;
	account(char *a, long b, long c, char *d, char *e, long f, float g): //派生类构造函数
		basic(b), balance(c), minimum_balance(f), annual_interest_rate(g)
	{
		strcpy_s(name, a);
		strcpy_s(password, d);
		strcpy_s(address, e);
	}
	void show1();							//声明显示函数
	void deposit(long money);				//声明存款函数
	void withdrawal(long money);			//声明取款函数
	void change_password(char* chpassword);	//声明修改密码函数
	void modify_name(char* chname);			//声明修改姓名函数
	void modification_address(char* chaddress);//声明修改地址函数
	~account()								//派生类析构函数
	{}
};
	void account::show1()
	{
	cout << "姓名:" << name << endl;
	basic::show(id);
	cout << "余额:" << balance << endl;
	cout << "密码:" << password << endl;
	cout << "地址:" << address << endl;
	cout << "最小余额:" << minimum_balance << endl;
	cout << "年利率:" << annual_interest_rate << endl;
	}
	void account::deposit(long money) {
		balance += money;
	}
	void account::withdrawal(long money) {
		balance -= money;
	}
	void account::change_password(char *chpassword) {
		strcpy_s(password, chpassword);
	}
	void account::modify_name(char* chname) {
		strcpy_s(name, chname);
	}
	void account::modification_address(char* chaddress) {
		strcpy_s(address, chaddress);
	}

int main() {
	char name[20];
	long id;
	long balance;
	char password[20];
	char address[20];
	long minimum_balance;
	float annual_interest_rate;
	long money;						//存款或取款数额
	int a;

	cout << "请输入客户信息" << endl;
	cout << "---------------------------------" << endl;
	cout << "姓名:";
	cin >> name;
	cout << "账号:";
	cin >> id;
	cout << "余额:";
	cin >> balance;
	cout << "密码:";
	cin >> password;
	cout << "地址:";
	cin >> address;
	cout << "最小余额:";
	cin >> minimum_balance;
	cout << "年利率";
	cin >> annual_interest_rate;
	account n(name, id, balance, password, address, minimum_balance, annual_interest_rate);
	cout << "------------------------请输入操作------------------------------" << endl;
	cout << "1.打印客户信息" << endl << "2.存款" << endl << "3.取款" << endl; 
	cout << "4.修改密码" << endl <<"5.修改姓名" << endl << "6.修改地址" << endl;

	while (scanf("%d", &a) != EOF) {
		switch (a) {
		case 1:
			n.show1();
			break;
		case 2:
			cout << "请输入存款金额:" << endl;
			cin >> money;
			n.deposit(money);
			cout << "当前余额:" << n.balance <<endl;
			break;
		case 3:
			cout << "请输入取款金额:" << endl;
			cin >> money;
			n.withdrawal(money);
			cout << "当前余额:" << n.balance << endl;
			break;
		case 4:
			char chpassword[20];
			cout << "请输入原始密码:" << endl;
			cin >> chpassword;
			if (strcmp(n.password, chpassword) != 0) {
				cout << "原始密码错误!请重新选择操作!" << endl;
			}
			else {
				cout << "请输入新密码:" << endl;
				cin >> chpassword;
				n.change_password(chpassword);
				cout << "修改成功!" << endl;
			}
			break;
		case 5:
			char chname[20];
			cout << "请输入修改后的姓名:" << endl;
			cin >> chname;
			n.modify_name(chname);
			cout << "修改成功!" << endl;
			break;
		case 6:
			char chaddress[20];
			cout << "请输入修改后的地址:" << endl;
			cin >> chaddress;
			n.modification_address(chaddress);
			cout << "修改成功!" << endl;
			break;
		}
	}
	return 0;

在这里插入图片描述

思考题

能否在储蓄账户类中增加一个功能:若是用户需要修改密码,需提供旧密码。

*继承 课后习题

 5.18 设计一个点类,它仅包含两个属性:横坐标和纵坐标。通过继承点类再设计一个圆类,它除了有一个圆心外,还有半径,还应该能够计算圆的周长和面积等。编写一个测试程序来测试所设计的类能否实现预定的功能。

 5.19 设计一个动物类,它包含一些动物的属性,如名称、大小、重量等,动物可以跑或走。然后设计一个鸟类,除了动物的基本属性外,它还有自己的羽毛、翅膀等。鸟除了跑或走外,它还可以飞翔。为了继承动物类的特性,鸟类应该继承动物类。编写一个程序来测试所设计的鸟类能否实现预定的功能。

 5.20 先设计一个长方形类,再通过继承长方形类设计一个正方形类,正方形类中通过覆盖父类的成员函数得到一些新的功能。

  5.21 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:

  (1)计算月利息

  月利息=存款金额×年利率÷12

  (2)更改利率(静态方法):重新设置年利率
 最后,编写一个程序来测试所设计的储蓄账户类能否实现预定的功能。

 5.22先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。要求:

  (1)类中的成员函数具有输入、输出储户上述信息的功能;

  (2)将账号设计成不可更改;

  (3)修改密码时要提供原密码。

  5.23 在阅读5.6.1节内容的基础上,进一步分析图书馆的图书和杂志管理与借阅方式,设计一个基本符合图书馆实际工作方式的图书和杂志借阅系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

krita系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文…

TCP和UDP(嵌入式学习)

TCP和UDPTCP&#xff08;即传输控制协议&#xff09;TCP连接建立(三次握手)TCP连接终止&#xff08;四次挥手&#xff09;UDP &#xff1a;用户数据报协议适用情况UDP 洪水UDP TCP 协议相同点TCP&#xff08;即传输控制协议&#xff09; 是一种面向连接的传输层协议&#xff0…

Vue ElementUI Axios 前后端案例(day01)

前言js 问js是什么&#xff0c;他有什么作用&#xff0c;与html和css的区别是什么 JavaScript&#xff08;简称JS&#xff09;是一种脚本语言&#xff0c;用于在网页上实现交互效果、动态效果和动态数据更新等功能。它是一种解释性语言&#xff0c;需要在浏览器中解释和执行。…

Linux中安装新版minio(centos7版本)

1. 背景需求 由于一些限制,在客户现场的Linux操作系统中,没有安装docker k8s等容器,无法直接使用镜像安装,而且客户要求只能在原始的操作系统中安装最新版的minio,(为什么需要安装最新版的minio,因为检测国网检测到之前版本的minio有漏洞,需要安装新版的minio). 2. 安装minio…

Direct3D 12——纹理——纹理缩小

纹理缩小(miniflcation )是纹理放大的逆运算。在缩小的过程中&#xff0c;大量纹素将被映射到少数纹理之 上 。例如&#xff0c;考虑下列情景&#xff1a;假设有一堵被256x256纹理所映射的墙壁&#xff0c;玩家的观察视角正紧盯着它&#xff0c;并 逐渐向后退却。在此过程中&am…

QML控件--Drawer

文章目录一、控件基本信息二、控件使用三、属性成员一、控件基本信息 Import Statement&#xff1a;import QtQuick.Controls 2.14 Since&#xff1a;Qt 5.7 Inherits&#xff1a;Popup 二、控件使用 Drawer&#xff1a;提供一个可以使用滑动手势打开和关闭的侧面板&#xff…

简述内网渗透中常用的隧道工具

frp 项目地址 https://github.com/fatedier/frp/ 简介 frp 是一个可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp 协议&#xff0c;为 http 和 https 应用协议提供了额外的能力&#xff0c;且尝试性支持了点对点穿透。 跨平台支持linux&#xff0c;win&a…

【cmake教程】find_path、find_library、find_program

目录 1、find_path 2、find_library 3、find_program find_path 参考文章&#xff1a;CMake中find_path的使用-CSDN博客 find_library 参考文章&#xff1a;CMake中find_library的使用 1、find_path find_path 一般用于在某个目录下查找一个或者多个头文件&#xff0c;命令…

ASP.NET Core - 依赖注入(一)

1. Ioc 与 DI Ioc 和DI 这两个词大家都应该比较熟悉&#xff0c;这两者已经在各种开发语言各种框架中普遍使用&#xff0c;成为框架中的一种基本设施了。 Ioc 是控制反转&#xff0c; Inversion of Control 的缩写&#xff0c;DI 是依赖注入&#xff0c;Inject Dependency 的…

WebSpider蓝蜘蛛网页抓取工具5.1用户手册

概述 关于网页抓取工具 本工具可以抓取互联网上的任何网页&#xff0c;包括需要登录后才能访问的页面。对抓取到页面内容进行解析&#xff0c;得到结构化的信息&#xff0c;比如&#xff1a;新闻标题、作者、来源、正文等。支持列表页的自动翻页抓取&#xff0c;支持正文页多页…

《Vue3实战》 第二章 创建项目和目录结构

1、创建项目 1.1、命令格式&#xff1a;vue create 项目名称 vue create vue3_example0011.2、运行项目 npm run serve1.2.1、增加run命令 启动时想修改命令&#xff0c;例如&#xff1a; npm run dev1、找到项目根路径下的package.json文件&#xff1b; 2、找到【scripts…

webgl-根据鼠标点击而移动

html <!DOCTYPE html> <head> <style> *{ margin: 0px; padding: 0px; } </style> </head> <body> <canvas id webgl> 您的浏览器不支持HTML5,请更换浏览器 </canvas> <script src"./main.js"></script&g…

DDoS攻击实验笔记

DoS&DDoS简介 DoS(Denial of Service)&#xff0c;拒绝服务攻击是通过一些方法影响服务的可用性&#xff0c;比如早期主要基于系统和应用程序的漏洞&#xff0c;只需要几个请求或数据包就能导致长时间的服务不可用&#xff0c;但易被入侵检测系统发现。 DDoS(Distributed D…

大数据Flink进阶(十八):Flink执行图和TaskSlot问题思考

文章目录 Flink执行图和TaskSlot问题思考 一、Flink执行图 二、TaskSlot问题思考 Flink执行图和TaskSlot问题思考 一、Flink执行图 Flink代码提交到集群执行时最终会被转换成task分布式的在各个节点上运行,在前面我们学习到DataFlow数据流图

【中级软件设计师】—操作系统考点总结篇(二)

【中级软件设计师】—操作系统考点总结篇&#xff08;二&#xff09; 1.操作系统概述 1.1操作系统的功能 1.2 特殊的操作系统 1.3 进程的概念和状态 进程与程序的区别&#xff1a; 进程是程序的一次执行过程&#xff0c;没有程序就没有进程 程序是一个静态的概念&#xff0c;…

【网络编程】TCP,UDP协议详解

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 目录 前言 TCP协议 TCP协议特点 TCP协议通…

Python 小型项目大全 1~5

一、百吉饼 原文&#xff1a;http://inventwithpython.com/bigbookpython/project1.html 在百吉饼这种演绎逻辑游戏中&#xff0c;你必须根据线索猜出一个秘密的三位数。该游戏提供以下提示之一来响应您的猜测&#xff1a;"Pico"&#xff0c;当您的猜测在错误的位置有…

询问ChatGPT的高质量答案艺术——提示工程指南(更新中……)

目录前言一、提示工程简介二、提示技巧2-1、生成法律文件2-2、添加提示技巧三、角色扮演3-1、智能手机产品描述3-2、添加角色扮演四、标准提示4-1、写一篇有关于新智能手机的评论4-2、添加标准提示、角色提示、种子词提示等等五、示例很少、或者没有示例5-1、生成一个手机配置六…

深度理解PyTorch的WeightedRandomSampler处理图像分类任务的类别不平衡问题

最近做活体检测任务&#xff0c;将其看成是一个图像二分类问题&#xff0c;然而面临的一个很大问题就是正负样本的不平衡问题&#xff0c;也就是正样本&#xff08;活体&#xff09;很多&#xff0c;而负样本&#xff08;假体&#xff09;很少&#xff0c;如何处理好数据集的类…

springboot实现邮箱验证码功能

引言 邮箱验证码是一个常见的功能&#xff0c;常用于邮箱绑定、修改密码等操作上&#xff0c;这里我演示一下如何使用springboot实现验证码的发送功能&#xff1b; 这里用qq邮箱进行演示&#xff0c;其他都差不多&#xff1b; 准备工作 首先要在设置->账户中开启邮箱POP…