android外卖点餐界面(期末作业)

效果展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AndroidMainFest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.EndActivity"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".Register"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".Login"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

FoodItem.java

package com.lzcu.endactivity;public class FoodItem {private String name;        // 食品名称private double price;       // 食品价格private boolean isVegetarian;  // 是否素食public FoodItem(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

Login.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class Login extends AppCompatActivity {Button login_but,register_but;TextView touchScreen;EditText Account_2,pwd;MyDatabaseHelper myDatabaseHelper;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//按钮组件login_but = findViewById(R.id.login);register_but = findViewById(R.id.register);//编辑框Account_2 = findViewById(R.id.UserName);pwd =findViewById(R.id.Pwd);//数据库myDatabaseHelper = new MyDatabaseHelper(this);myDatabaseHelper.getWritableDatabase();//只读//登录login_but.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){String acc = Account_2.getText().toString();String pwd1 =pwd.getText().toString();//获取数据库数据,判断用户名是否在库Cursor result = myDatabaseHelper.find();int a=0;int b=0;for (result.moveToFirst();!result.isAfterLast();result.moveToNext()){@SuppressLint("Range") String account_1=result.getString(result.getColumnIndex("Account"));@SuppressLint("Range") String pwd_1=result.getString(result.getColumnIndex("Password"));if (Account_2.getText().toString().equals(account_1) && pwd.getText().toString().equals(pwd_1))a=1;if (Account_2.getText().toString().equals(account_1))b=1;}if (b==1){if (!Account_2.getText().toString().equals("") && !pwd.getText().toString().equals("")){if(a==1){Intent intent = new Intent(Login.this, MainActivity.class);startActivity(intent);finish();Toast.makeText(Login.this, "登入成功", Toast.LENGTH_SHORT).show();}elseToast.makeText(getApplicationContext(),"密码错误!", Toast.LENGTH_SHORT).show();}elseToast.makeText(getApplicationContext(),"用户名或密码不能为空!", Toast.LENGTH_SHORT).show();}elseToast.makeText(Login.this, "账号不存在,请注册!", Toast.LENGTH_SHORT).show();//关闭游标result.close();}});//注册register_but.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//显示注册界面Intent intent = new Intent(Login.this, Register.class);//启动显示修改界面startActivity(intent);finish();}});}
}

MainActivity.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {public TextView txtCartItems;public Button btnCheckout;public ArrayList<FoodItem> cartItems = new ArrayList<>();public double totalPrice = 0;private ListView menu_list;private List<String> mDataList;private ArrayAdapter<String> mAdapter;private EditText mEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);txtCartItems = findViewById(R.id.txt_cart_items);btnCheckout = findViewById(R.id.btn_checkout);//初始化// 初始化 ListView 和 数据源menu_list = findViewById(R.id.menu_list);mDataList = new ArrayList<>();// 添加测试数据mDataList.add("汉堡 22.5");mDataList.add("薯条 12.0");mDataList.add("热干面 8.0");mDataList.add("麻辣香锅 59.0");mDataList.add("鱼香肉丝 38.0");mDataList.add("大盘鸡 48.0");mDataList.add("炒粉丝 11.0");mDataList.add("毛血旺 58.0");// 创建适配器mAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, mDataList);// 设置适配器menu_list.setAdapter(mAdapter);// 设置列表项点击事件menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Toast.makeText(MainActivity.this, "你选择了" + mDataList.get(i),Toast.LENGTH_SHORT).show();// 获取 editText 控件mEditText = findViewById(R.id.editText);mEditText.append(mDataList.get(i));
//                mEditText.setText("你选择了"+mDataList.get(i)+"吗?");// 加入购物车的逻辑FoodItem item1 = new FoodItem("汉堡", 22.5);FoodItem item2 = new FoodItem("薯条", 12.0);addToCart(item1);addToCart(item2);}});// 更新购物车信息updateCart();// 结算按钮的点击事件btnCheckout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {checkout();}});}// 添加商品到购物车private void addToCart(FoodItem item) {cartItems.add(item);totalPrice += item.getPrice();}// 更新购物车信息private void updateCart() {String cartText = "购物车(" + cartItems.size() + "): ¥" + totalPrice;txtCartItems.setText(cartText);}// 结算private void checkout() {// 将购物车中的商品生成订单,进行结算等操作Toast.makeText(this, "订单已提交,感谢您的惠顾!", Toast.LENGTH_SHORT).show();cartItems.clear();totalPrice = 0;updateCart();}
}

MyDatabaseHelper.java

package com.lzcu.endactivity;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;public class MyDatabaseHelper extends SQLiteOpenHelper
{//声明数据库的名字和表名private static final String DATABASENAME = "Practical.db" ;	// 数据库名称private static final int DATABASEVERSION = 1 ;private static final String TABLE_USERNAME = "User" ;	// 用户表名称public MyDatabaseHelper(@Nullable Context context){super(context, DATABASENAME, null, DATABASEVERSION);}@Overridepublic void onCreate(SQLiteDatabase db){//创建数据库用户表,并添加三个字段id,Account,PasswordString sqlString="create table "+ TABLE_USERNAME+"( id integer primary key autoincrement,Account varchar(255),Password varchar(255))";db.execSQL(sqlString);}//注册public  void Register(String Account,String Password){SQLiteDatabase db=super.getWritableDatabase();String sqlString="insert into "+TABLE_USERNAME+"(Account,Password) values (?,?)";//构造占位符的参数数组Object args[]=new Object[]{Account,Password};db.execSQL(sqlString,args);//此方法执行的sql语句主要有创建、插入、修改、删除等db.close();}//查询账号的方法public Cursor find(){SQLiteDatabase db=super.getWritableDatabase();String sqlString="select * from User;";//执行查询,返回数据给游标Cursor result =db.rawQuery(sqlString,null);return result;}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

Register.java

package com.lzcu.endactivity;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;public class Register extends AppCompatActivity {Button register_lj,back;TextView touchScreen;EditText Account,Pwd1,Pwd2;MyDatabaseHelper myDatabaseHelper;ArrayList<User> data = new ArrayList<User>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.register);//数据库myDatabaseHelper = new MyDatabaseHelper(this);//按钮组件register_lj =findViewById(R.id.register_but);back =findViewById(R.id.back);//编辑框Account = findViewById(R.id.register_name);Pwd1 = findViewById(R.id.register_pwd);Pwd2 = findViewById(R.id.register_pwd2);//立即注册register_lj.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//获取输入的用户名和密码String name = Account.getText().toString().trim();String password = Pwd1.getText().toString().trim();//获取数据库数据,判断用户名是否已存在Cursor result = myDatabaseHelper.find();int a=0;if (!Account.getText().toString().equals("")){if (Account.getText().toString().length()<6)Toast.makeText(Register.this, "账号创建不能少于6位", Toast.LENGTH_SHORT).show();else if (Pwd1.getText().toString().length()<6)Toast.makeText(Register.this, "密码设置不能少于6位", Toast.LENGTH_SHORT).show();else{for (result.moveToFirst();!result.isAfterLast();result.moveToNext()){//判断数据库是否存在此对象@SuppressLint("Range") String account_1 = result.getString(result.getColumnIndex("Account"));if(Account.getText().toString().equals(account_1)){a=1;}}//关闭游标result.close();if(!Pwd1.getText().toString().equals("") && !Pwd2.getText().toString().equals("")){if ((Pwd1.getText().toString().equals(Pwd2.getText().toString()) && a==0)){myDatabaseHelper.Register(name,password);Intent intent = new Intent(Register.this, Login.class);startActivity(intent);finish();Toast.makeText(Register.this, "注册成功", Toast.LENGTH_SHORT).show();}else if (a==1)Toast.makeText(getApplicationContext(),"账号已存在,请重新输入账号",Toast.LENGTH_SHORT).show();elseToast.makeText(getApplicationContext(),"两次密码输入不一致",Toast.LENGTH_SHORT).show();} elseToast.makeText(getApplicationContext(),"密码不能为空!",Toast.LENGTH_SHORT).show();}} elseToast.makeText(getApplicationContext(),"账号不能为空!",Toast.LENGTH_SHORT).show();}});//返回back.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){//显示注册界面Intent intent = new Intent(Register.this, Login.class);//启动显示修改界面startActivity(intent);finish();}})}
}

User.java

package com.lzcu.endactivity;public class User
{private int id;private String account;private String password;public User( ) {}public User(int id, String account, String password) {this.id = id;this.account = account;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:background="@drawable/img"><TextViewandroid:id="@+id/text_top"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="100dp"android:text="外卖点餐"android:textColor="@color/black"android:textSize="30dp"android:textStyle="italic"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/><EditTextandroid:id="@+id/UserName"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="60dp"android:hint="请输入用户名"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_top" /><EditTextandroid:id="@+id/Pwd"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请输入用户密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/UserName" /><Buttonandroid:id="@+id/login"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="登录"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/register"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/Pwd" /><Buttonandroid:id="@+id/register"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="注册"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/login"app:layout_constraintTop_toBottomOf="@+id/Pwd" /></androidx.constraintlayout.widget.ConstraintLayout>

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/img"><!-- 标题栏 --><RelativeLayoutandroid:id="@+id/title_layout"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/title_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="外卖点餐系统"android:textSize="22sp"android:textColor="#ffffff" /></RelativeLayout><!-- 菜单列表 --><!-- 购物车和结算按钮 --><ListViewandroid:id="@+id/menu_list"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><RelativeLayoutandroid:id="@+id/cart_layout"android:layout_width="match_parent"android:layout_height="70dp"android:layout_marginTop="10dp"android:background="#ffffff"android:padding="0dp"><TextViewandroid:id="@+id/txt_cart_items"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="购物车(0): ¥0"android:textColor="#000000"android:textSize="18sp" /><Buttonandroid:id="@+id/btn_checkout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="结算"android:textColor="#ffffff"android:textSize="18sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="70dp"android:layout_marginTop="10dp"android:background="#ffffff"android:padding="0dp"><EditTextandroid:id="@+id/editText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginBottom="25dp"android:gravity="bottom"/></RelativeLayout>
</LinearLayout>

register.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Login"android:background="@drawable/img"tools:ignore="MissingDefaultResource"><TextViewandroid:id="@+id/text_top"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="90dp"android:text="注册界面"android:textColor="#141414"android:textSize="30dp"android:textStyle="italic"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/register_name"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:hint="请输入用户名"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_top" /><EditTextandroid:id="@+id/register_pwd"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请输入用户密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_name" /><EditTextandroid:id="@+id/register_pwd2"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:hint="请确认密码"android:inputType="textPassword"android:maxLength="16"android:padding="15dp"android:singleLine="true"android:textSize="24dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.504"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_pwd" /><Buttonandroid:id="@+id/register_but"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="立即注册"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintEnd_toStartOf="@+id/back"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/register_pwd2" /><Buttonandroid:id="@+id/back"android:layout_width="120dp"android:layout_height="60dp"android:layout_marginTop="30dp"android:text="返回登录"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/register_but"app:layout_constraintTop_toBottomOf="@+id/register_pwd2" />
</androidx.constraintlayout.widget.ConstraintLayout>

xiao效果展示

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

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

相关文章

Rancher-RKE2-安装流程

一、什么是rke2&#xff1f; 1.rke2是Rancher的下一代k8s发行版&#xff0c; 二、与rke的不同 1.重要的是&#xff0c;RKE2 不像 RKE1 那样依赖 Docker。RKE1 利用 Docker 来部署和管理控制平面组件以及 Kubernetes 的容器运行时间。RKE2 将控制平面组件作为静态 pod 启动&…

前端面试:【网络协议与性能优化】提升Web应用性能的策略

嗨&#xff0c;亲爱的Web开发者&#xff01;构建高性能的Web应用是每个开发者的梦想。本文将介绍一些性能优化策略&#xff0c;包括资源加载、懒加载和CDN等&#xff0c;以帮助你提升Web应用的性能。 1. 性能优化策略&#xff1a; 压缩资源&#xff1a; 使用Gzip或Brotli等压缩…

Vue使用Element的表格Table显示树形数据,多选框全选无法选中全部节点

使用Element的组件Table表格&#xff0c;当使用树形数据再配合上多选框&#xff0c;如下&#xff1a; 会出现一种问题&#xff0c;点击左上方全选&#xff0c;只能够选中一级树节点&#xff0c;子节点无法被选中&#xff0c;如图所示&#xff1a; 想要实现点击全选就选中所有的…

IDEA中导出Javadoc遇到的GBK编码错误的解决思路和应用

IDEA中导出Javadoc遇到的GBK编码错误的解决思路和应用 ​ 当我们在导出自己写的项目的api文档的时候呢&#xff0c;有的时候会出现以下问题&#xff1a;也就是GBK编码错误不可导出 错误描述&#xff1a;编码GBK的不可映射字符无法导出&#xff0c;可以看出这是我们自己写的中文…

Ansible学习笔记(二)

3.ansible的使用示例&#xff08;playbook&#xff09; 1.创建mysql 账户和mysql 组的 playbook ---#create mysql user and group - hosts: allremote_user: roottasks:- name: create groupgroup: namemysql systemyes gid306- name: create useruser: namemysql systemyes…

vue 复制文本

一个常用的库就是 clipboard.js&#xff0c;它可以帮助您实现跨浏览器的复制到剪贴板功能 首先&#xff0c;安装 clipboard.js&#xff1a; cnpm install clipboard 创建一个 Vue 组件并使用 clipboard.js&#xff1a; <template><div><input v-model"…

webpack 从入门到放弃!

webpack webpack于2012年3月10号诞生&#xff0c;作者是Tobias(德国)。参考GWT(Google Web Toolkit)的code splitting功能在webpack中进行实现。然后在2014年Instagram团队分享性能优化时&#xff0c;提出使用webpack的code splitting特性从而大火。 现在webpack的出现模糊了任…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床&#xff1a; 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

drools8尝试(加单元测试)

drools8的maven模板项目里没有单元测试, 相比而言drools7有个非常好的test senorios 那就自己弄一个 文件是.http后缀的,写了个简单的例子如下 //测试交通违章 POST http://localhost:8080/Traffic Violation accept: application/json Content-Type: application/json{&q…

LeetCode两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

前端面试:【Redux】状态管理的精髓

嘿&#xff0c;亲爱的Redux探险家&#xff01;在前端开发的旅程中&#xff0c;有一个强大的状态管理工具&#xff0c;那就是Redux。Redux是一个状态容器&#xff0c;它以一种可预测的方式管理应用的状态&#xff0c;通过Store、Action、Reducer、中间件和异步处理等核心概念&am…

C++系列-类对象作为类成员

类对象作为类成员 类中的成员可以是另一个类的对象。该成员成为对象成员当其它类的对现作为本类的成员&#xff0c;先构造其它类对象&#xff0c;再构造本身。当其它类的对现作为本类的成员&#xff0c;先析构自身&#xff0c;再析构其它类对象。 code:#include<iostream&g…

玩转单元测试之cppmockfree

引言 前文我们已经讲解了gmock的基本语法,但是gmock只能mock虚函数,如果要mock非虚成员函数、静态成员函数、全局函数、重载函数、模板函数以及其他依赖库的函数时,gmock就很难实现。而cppmockfree可以支持这些函数的mock。 快速入门 1. mock样例 1.1 全局函数 // gloa…

代码pytorch-adda-master跑通记录

前言 最近在学习迁移学习&#xff0c;ADDA算法&#xff0c;由于嫌自己写麻烦&#xff0c;准备先跑通别人的代码。 代码名称&#xff1a;pytorch-adda-master 博客&#xff1a;https://www.cnblogs.com/BlairGrowing/p/17020378.html github地址&#xff1a;https://github.com…

数据备份(手动备份与自动备份)

目录 1. 手动备份 1.使用Windows ServerBackup管理控制台手动备份 2.使用命令行工具手动备份 2. 自动备份 3 备份设置 1.普通备份性能 2.快速备份性能 3.自定义 1. 手动备份 案例9.1某公司有一台WindowsServer2016文件服务器&#xff0c;公司的很多重要文件都保存在新加卷…

恢复NuGet包_解决:System.BadImageFormatException:无法加载文件或程序集

C#工程 主要是开发了一个 web api接口&#xff0c;这个工程源码去年还可以的&#xff0c;今年换了一个电脑打开工程就报错。 错误提示如下&#xff1a; 在 Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args) Test1 System.BadImageFormatEx…

一、数据库基础

数据库 一、数据库基础 1、一些概念 数据库&#xff1a;数据库&#xff08;DataBase &#xff0c;简称DB&#xff09;&#xff0c;就是信息的集合。数据库是由数据库管理系统管理的数据的集合&#xff1b;数据库管理系统&#xff1a;简称DBMS 。是一种操纵和管理数据库的大型…

android核绑定cpuset配置与检测进程所在核cpuset方法

一、开机阶段 开机有如下阶段。抛开开机动画需要的audio、surfaceflinger等进程&#xff0c;大部分android程序是在/data分区加载完整以后开始加载。所以cpuset的配置可以在 post-fs-data之后。注意&#xff0c;init.rc的不同阶段脚本都可能覆盖前面配置的cpuset。配置好检查与…

【附安装包】Tecplot 360 EX2022安装教程

软件下载 软件&#xff1a;Tecplot 360版本&#xff1a;2022语言&#xff1a;英文大小&#xff1a;388.97M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baid…

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

Ctfshow 命令执行 web29 pregmatch是正则匹配函数&#xff0c;匹配是否包含flag&#xff0c;if(!preg_match("/flag/i", $c))&#xff0c;/i忽略大小写 可以利用system来间接执行系统命令 flag采用f*绕过&#xff0c;或者mv fl?g.php 1.txt修改文件名&#xff0c…