forked from p59qpvlxt/tongxun
Compare commits
31 Commits
Author | SHA1 | Date |
---|---|---|
贺志豪 | 375439d2c1 | 11 months ago |
贺志豪 | 7c55d86ea4 | 11 months ago |
贺志豪 | 09a9bbefa3 | 11 months ago |
贺志豪 | 0ed90e3e06 | 11 months ago |
贺志豪 | a448bdbe7a | 11 months ago |
贺志豪 | 3996dc3992 | 12 months ago |
贺志豪 | b691364c86 | 12 months ago |
贺志豪 | ccbc14f0d3 | 1 year ago |
liujun | c3c8389041 | 1 year ago |
柊叶 | 289271cdb8 | 1 year ago |
柊叶 | 16c1094222 | 1 year ago |
李平科 | 72b1af3373 | 1 year ago |
李平科 | ce1ae244b6 | 1 year ago |
柊叶 | 0d47ccc0a5 | 1 year ago |
李平科 | a177c79f67 | 1 year ago |
guyuming | 410356d8ac | 1 year ago |
zhuhao | 36cbd7fa39 | 1 year ago |
柊叶 | e19cd67b79 | 1 year ago |
p59qpvlxt | 09788760ce | 1 year ago |
p59qpvlxt | 7d05178fe9 | 1 year ago |
p59qpvlxt | 7e3f154158 | 1 year ago |
p59qpvlxt | e349049451 | 1 year ago |
p59qpvlxt | 6c8979a8e2 | 1 year ago |
李平科 | cecaa44373 | 1 year ago |
贺志豪 | 04c2f91688 | 1 year ago |
guyuming | 11f9f38f78 | 1 year ago |
柊叶 | f607150570 | 1 year ago |
zhuhao | 1df9091936 | 1 year ago |
YangHong | 5f64500d62 | 1 year ago |
liujun | 9f8bcffb02 | 1 year ago |
Qiang-志 | 4ce305a938 | 1 year ago |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,135 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<VCProjectVersion>17.0</VCProjectVersion>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<ProjectGuid>{dde1957c-ab2a-4b80-9928-5904dad85fe3}</ProjectGuid>
|
|
||||||
<RootNamespace>My20231023</RootNamespace>
|
|
||||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="Shared">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="源.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="源文件">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="头文件">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="资源文件">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="源.cpp">
|
|
||||||
<Filter>源文件</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup />
|
|
||||||
</Project>
|
|
Binary file not shown.
@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project>
|
|
||||||
<ProjectOutputs>
|
|
||||||
<ProjectOutput>
|
|
||||||
<FullPath>D:\vs代码\2023-10-23\x64\Debug\2023-10-23.exe</FullPath>
|
|
||||||
</ProjectOutput>
|
|
||||||
</ProjectOutputs>
|
|
||||||
<ContentFiles />
|
|
||||||
<SatelliteDlls />
|
|
||||||
<NonRecipeFileRefs />
|
|
||||||
</Project>
|
|
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.37.32822:TargetPlatformVersion=10.0.22621.0:
|
|
||||||
Debug|x64|D:\vs代码\2023-10-23\|
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
D:\vs代码\2023-10-23\源.cpp;D:\vs代码\2023-10-23\x64\Debug\源.obj
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
D:\vs代码\2023-10-23\x64\Debug\2023-10-23.exe
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,247 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include <queue>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <cmath>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
struct TreeNode {
|
|
||||||
int val;
|
|
||||||
struct TreeNode *left;
|
|
||||||
struct TreeNode *right;
|
|
||||||
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class IsBalanced_Solution_Node {
|
|
||||||
public:
|
|
||||||
IsBalanced_Solution_Node(int min=INT_MAX,int max=INT_MIN,int high = 0,bool is_balance=true)
|
|
||||||
:_min(min),_max(max),_high(high),_is_balance(is_balance)
|
|
||||||
{}
|
|
||||||
int _min;
|
|
||||||
int _max;
|
|
||||||
int _high;
|
|
||||||
bool _is_balance;
|
|
||||||
};
|
|
||||||
|
|
||||||
IsBalanced_Solution_Node my_IsBalanced_Solution(TreeNode* root) {
|
|
||||||
//对于nullptr我们要不要呢
|
|
||||||
if (root == nullptr) {
|
|
||||||
return IsBalanced_Solution_Node();
|
|
||||||
}
|
|
||||||
IsBalanced_Solution_Node left = my_IsBalanced_Solution(root->left);
|
|
||||||
IsBalanced_Solution_Node right = my_IsBalanced_Solution(root->right);
|
|
||||||
int min = root->val;
|
|
||||||
int max = root->val;
|
|
||||||
int high = 1;
|
|
||||||
bool is_balance = true;
|
|
||||||
if (left._is_balance == false || right._is_balance == false
|
|
||||||
|| std::abs(left._high - right._high) > 1) {
|
|
||||||
is_balance = false;
|
|
||||||
}
|
|
||||||
if (left._high != 0) {
|
|
||||||
min = left._min < min ? left._min : ( min);
|
|
||||||
}
|
|
||||||
if (right._high != 0) {
|
|
||||||
max = right._max > max ? right._max : (max);
|
|
||||||
}
|
|
||||||
high = std::max(left._high, right._high) + 1;
|
|
||||||
return IsBalanced_Solution_Node(min, max, high, is_balance);
|
|
||||||
}
|
|
||||||
// 判断是不是平衡二叉树
|
|
||||||
bool IsBalanced_Solution(TreeNode* pRoot) {
|
|
||||||
// write code here
|
|
||||||
if (pRoot == nullptr) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return my_IsBalanced_Solution(pRoot)._is_balance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class lowestCommonAncestor_Node {
|
|
||||||
public:
|
|
||||||
lowestCommonAncestor_Node(TreeNode*root = nullptr)
|
|
||||||
:node(root){}
|
|
||||||
TreeNode* node;
|
|
||||||
|
|
||||||
};
|
|
||||||
TreeNode* sum_node = nullptr;
|
|
||||||
lowestCommonAncestor_Node my_lowestCommonAncestor(TreeNode* root, int p, int q) {
|
|
||||||
if (root == nullptr) {
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
lowestCommonAncestor_Node left = my_lowestCommonAncestor(root->left,p,q);
|
|
||||||
lowestCommonAncestor_Node right = my_lowestCommonAncestor(root->right, p, q);
|
|
||||||
//当前的接点有四种可能,
|
|
||||||
//当前的节点是p
|
|
||||||
//当前的节点是q
|
|
||||||
//当前的节点什么都不是,并且是公共的父节点
|
|
||||||
//当前的节点什么也不是
|
|
||||||
TreeNode* re = nullptr;
|
|
||||||
if (left.node == nullptr && right.node == nullptr) {
|
|
||||||
if (root->val == q || root->val == p) {
|
|
||||||
return lowestCommonAncestor_Node(root);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (left.node != nullptr && right.node != nullptr) {
|
|
||||||
sum_node = root;
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
if (left.node != nullptr) {
|
|
||||||
if (root->val == p && left.node->val == q) {
|
|
||||||
sum_node = root;
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
if (root->val == q && left.node->val == p) {
|
|
||||||
sum_node = root;
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
re = left.node;
|
|
||||||
}
|
|
||||||
if (right.node != nullptr) {
|
|
||||||
if (root->val == p && right.node->val == q) {
|
|
||||||
sum_node = root;
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
if (root->val == q && right.node->val == p) {
|
|
||||||
sum_node = root;
|
|
||||||
return lowestCommonAncestor_Node();
|
|
||||||
}
|
|
||||||
re = right.node;
|
|
||||||
}
|
|
||||||
return lowestCommonAncestor_Node(re);
|
|
||||||
}
|
|
||||||
//二叉搜索树的最近公共祖先
|
|
||||||
int aalowestCommonAncestor(TreeNode* root, int p, int q) {
|
|
||||||
// write code here
|
|
||||||
//给定一颗二叉树,和两个节点,返回最近的那个公共的节点
|
|
||||||
//有两种方法可以求出这个答案,一个是直接递归求解出我们所需要的答案,
|
|
||||||
// 另一个就是采用并查集进行求解操作
|
|
||||||
//当我们先采用递归的方式求出公共的节点,再采用并查集的操作解出答案
|
|
||||||
sum_node = nullptr;
|
|
||||||
my_lowestCommonAncestor(root, p, q);
|
|
||||||
return sum_node->val;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Union {
|
|
||||||
public:
|
|
||||||
void put(int father, int child) {
|
|
||||||
if (get_father(father) == -1) {
|
|
||||||
father_map[father] = father;
|
|
||||||
}
|
|
||||||
if (get_father(child) == -1) {
|
|
||||||
father_map[child] = child;
|
|
||||||
}
|
|
||||||
father_map[child] = get_father(father);
|
|
||||||
}
|
|
||||||
int get_father(int child) {
|
|
||||||
if (father_map.count(child) == 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
queue<int>qu;
|
|
||||||
int father = child;
|
|
||||||
qu.push(father);
|
|
||||||
while (father != father_map[father]) {
|
|
||||||
father = father_map[father];
|
|
||||||
qu.push(father);
|
|
||||||
}
|
|
||||||
while (!qu.empty()) {
|
|
||||||
father_map[qu.front()] = father;
|
|
||||||
qu.pop();
|
|
||||||
}
|
|
||||||
return father;
|
|
||||||
}
|
|
||||||
unordered_map<int, int>father_map;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
int re = -1;
|
|
||||||
Union un;
|
|
||||||
void my_union_lowestCommonAncestor(TreeNode* root, int p, int q) {
|
|
||||||
if (re != -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (root != nullptr) {
|
|
||||||
//每次只有在递归完左树之后,就进行右树的操作,
|
|
||||||
//右树递归完之后就将左右树和当前节点合并
|
|
||||||
my_union_lowestCommonAncestor(root->left, q, p);
|
|
||||||
if (root->left != nullptr) {
|
|
||||||
un.put(root->val, root->left->val);
|
|
||||||
}
|
|
||||||
if (root->val == q && un.get_father(p) != -1) {
|
|
||||||
re = un.get_father(p);
|
|
||||||
}
|
|
||||||
if(root->val == p && un.get_father(q) != -1) {
|
|
||||||
re = un.get_father(q);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
my_union_lowestCommonAncestor(root->right, q, p);
|
|
||||||
if (root->right != nullptr) {
|
|
||||||
un.put(root->val, root->right->val);
|
|
||||||
}
|
|
||||||
if (root->val == q && un.get_father(p) != -1) {
|
|
||||||
re = un.get_father(p);
|
|
||||||
}
|
|
||||||
if(root->val == p && un.get_father(q) != -1) {
|
|
||||||
re = un.get_father(q);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//采用并查集的方式进行操作
|
|
||||||
//二叉搜索树的最近公共祖先
|
|
||||||
int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
|
|
||||||
// write code here
|
|
||||||
my_union_lowestCommonAncestor(root, o1, o2);
|
|
||||||
return re;
|
|
||||||
}
|
|
||||||
|
|
||||||
void my_Serialize(TreeNode* root, string& str) {
|
|
||||||
if (root == nullptr) {
|
|
||||||
str.append("#");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
str.append('{'+ to_string(root->val) + '}');
|
|
||||||
my_Serialize(root->left, str);
|
|
||||||
my_Serialize(root->right, str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//序列化二叉树
|
|
||||||
char* Serialize(TreeNode* root) {
|
|
||||||
string str;
|
|
||||||
my_Serialize(root, str);
|
|
||||||
|
|
||||||
return const_cast<char*>(str.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
TreeNode* my_Deserialize( string& str, int& index) {
|
|
||||||
if (str[index] == '#') {
|
|
||||||
index++;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
index = str.find('{', index);
|
|
||||||
index = index + 1;
|
|
||||||
int next_index = str.find('}', index);
|
|
||||||
|
|
||||||
TreeNode* cur = new TreeNode(atoi(str.substr(index, next_index).c_str()));
|
|
||||||
index = next_index + 1;
|
|
||||||
cur->left = my_Deserialize(str, index);
|
|
||||||
cur->right = my_Deserialize(str, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
//反序列化二叉树
|
|
||||||
TreeNode* Deserialize(char* str) {
|
|
||||||
int index = 0;
|
|
||||||
string ss(str);
|
|
||||||
return my_Deserialize( ss,index);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
TreeNode* root = new TreeNode(1);
|
|
||||||
root->left = new TreeNode(2);
|
|
||||||
root->right = new TreeNode(3);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 99 KiB |
@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Title</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
This is 404 page
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,272 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>通讯录登入界面</title>
|
||||||
|
</head>
|
||||||
|
<style>
|
||||||
|
*{
|
||||||
|
margin:0px;
|
||||||
|
padding:0px;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
display:flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border:1px solide transparent;
|
||||||
|
background-color:ivory;
|
||||||
|
}
|
||||||
|
|
||||||
|
#account{
|
||||||
|
display:inline-block;
|
||||||
|
width:250px;
|
||||||
|
height:75px;
|
||||||
|
border:1px solid transparent;
|
||||||
|
margin-top:80px;
|
||||||
|
}
|
||||||
|
#account input{
|
||||||
|
height:25px;
|
||||||
|
}
|
||||||
|
#passwd{
|
||||||
|
display:inline-block;
|
||||||
|
width:250px;
|
||||||
|
height:75px;
|
||||||
|
border:1px solid transparent;
|
||||||
|
}
|
||||||
|
#passwd input{
|
||||||
|
height:25px;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
text-indent: 3em;
|
||||||
|
border:0.3px solid rgb(177, 161, 161);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0.5px 0.5px 0.5px 0.05px rgb(247, 194, 227) inset;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
input:focus{
|
||||||
|
outline:none;
|
||||||
|
}
|
||||||
|
#head{
|
||||||
|
text-align: center;
|
||||||
|
margin-top:50px;
|
||||||
|
font-size:5ch;
|
||||||
|
font-family: 'Courier New', Courier, monospace;
|
||||||
|
|
||||||
|
}
|
||||||
|
div i{
|
||||||
|
color:rgb(151, 235, 227);
|
||||||
|
}
|
||||||
|
|
||||||
|
#login{
|
||||||
|
width:350px;
|
||||||
|
height:400px;
|
||||||
|
border:black solid 1px;
|
||||||
|
border-radius:3%;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
box-shadow: 1px 1px 3px 2px rgb(247, 194, 227);
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
transition:1s;
|
||||||
|
position: absolute;
|
||||||
|
transform:translateX(100px);
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#button{
|
||||||
|
border: 1px solid rgb(223, 254, 252) ;
|
||||||
|
background-color: rgb(223, 254, 252);
|
||||||
|
height:35px;
|
||||||
|
width: 75px;
|
||||||
|
border-radius: 15%;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#context{
|
||||||
|
width: 250px;
|
||||||
|
height: 400px;
|
||||||
|
border: 1px solid black;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
box-shadow: 1px 1px 3px 2px rgb(247, 194, 227);
|
||||||
|
border-radius:3%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction:column;
|
||||||
|
transition: 1s;
|
||||||
|
position: absolute;
|
||||||
|
transform:translateX(-200px);
|
||||||
|
z-index: 2;
|
||||||
|
padding-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#context p{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 250px;
|
||||||
|
height: 75px;
|
||||||
|
font-family: 'Courier New', Courier, monospace ;
|
||||||
|
color: chartreuse;
|
||||||
|
font-size: 2.5ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
#registration{
|
||||||
|
width:350px;
|
||||||
|
height:400px;
|
||||||
|
border:black solid 1px;
|
||||||
|
border-radius:3%;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
box-shadow: 1px 1px 3px 2px rgb(247, 194, 227);
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
transition:1s;
|
||||||
|
position: absolute;
|
||||||
|
transform:translateX(100px);
|
||||||
|
}
|
||||||
|
#box{
|
||||||
|
width: 1000px;
|
||||||
|
height: 500px;
|
||||||
|
background-color: ivory;
|
||||||
|
margin-top: 5%;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="box">
|
||||||
|
<div id="context">
|
||||||
|
<p></p>
|
||||||
|
<p>注册</p>
|
||||||
|
</div>
|
||||||
|
<form id="login" th:action="@{/postProcessorLogin}" target="_self">
|
||||||
|
<div id="head">
|
||||||
|
<i>登录页面</i>
|
||||||
|
</div>
|
||||||
|
<div id="account">
|
||||||
|
<i>账号 : </i>
|
||||||
|
<input type="text" placeholder="请输入账号" name="account">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="passwd">
|
||||||
|
<i>密码 : </i>
|
||||||
|
<input type="password" placeholder="请输入密码" name="password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div><button id="button">登入</button></div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form id="registration" th:action="@{/postProcessorRegistration}" target="_self" >
|
||||||
|
<div id="head">
|
||||||
|
<i>注册页面</i>
|
||||||
|
</div>
|
||||||
|
<div id="account">
|
||||||
|
<i>账号 : </i>
|
||||||
|
<input type="text" placeholder="请输入账号" name="account">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="passwd">
|
||||||
|
<i>密码 : </i>
|
||||||
|
<input type="password" placeholder="请输入密码" name="password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div><button id="button">注册</button></div>
|
||||||
|
<form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script th:inline="javascript">
|
||||||
|
// 这里就写js代码 在我们点击上面的注册按钮之后就会转到注册界面上面
|
||||||
|
//注册完成之后就会显示 我们可以进行登录了,我们就在此点击登录按钮就可以了
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var p = document.querySelector("#context p:nth-child(2)");
|
||||||
|
p.addEventListener("click", function(){
|
||||||
|
//我们可以通过判断当前的内容是什么来劲判断操作
|
||||||
|
if( p.innerText === '注册'){
|
||||||
|
//也就是是在我们点击了这个按钮之后我们就要将我们的登陆界面消掉
|
||||||
|
//将我们的注册界面显示出来
|
||||||
|
var login = document.querySelector("#login");
|
||||||
|
login.style.opacity=0;
|
||||||
|
login.zIndex='0';
|
||||||
|
|
||||||
|
var context = document.querySelector("#context");
|
||||||
|
context.style.transform='translateX(200px)';
|
||||||
|
p.innerText = '登入';
|
||||||
|
|
||||||
|
var registration = document.querySelector("#registration");
|
||||||
|
registration.style.transform = 'translateX(-100px)';
|
||||||
|
registration.style.zIndex = 1;
|
||||||
|
registration.style.opacity = 1;
|
||||||
|
}
|
||||||
|
else if( p.innerText==='登入') {
|
||||||
|
var registration = document.querySelector("#registration");
|
||||||
|
registration.style.opacity = 0;
|
||||||
|
registration.zIndex = '0';
|
||||||
|
|
||||||
|
var context = document.querySelector("#context");
|
||||||
|
context.style.transform = 'translateX(-200px)';
|
||||||
|
p.innerText = '注册';
|
||||||
|
|
||||||
|
var login = document.querySelector("#login");
|
||||||
|
login.style.transform = 'translateX(100px)';
|
||||||
|
login.style.zIndex = 1;
|
||||||
|
login.style.opacity = 1;
|
||||||
|
}
|
||||||
|
//这个是将我们显示的 账号已有进行刷新的操作
|
||||||
|
var secondP = document.querySelector("#context p:first-child");
|
||||||
|
secondP.innerText = "";
|
||||||
|
});
|
||||||
|
|
||||||
|
//这个是判断当前是否已经发有了账号
|
||||||
|
//账号 在数据库里已经有了的不能使用相同的账号
|
||||||
|
var isHaveAccount = [[${isHaveAccount}]];
|
||||||
|
if(isHaveAccount != null){
|
||||||
|
if(isHaveAccount === "当前账号已有"){
|
||||||
|
p.innerText = '注册';
|
||||||
|
|
||||||
|
console.log("没有账号")
|
||||||
|
var login = document.querySelector("#login");
|
||||||
|
login.style.opacity=0;
|
||||||
|
login.zIndex='0';
|
||||||
|
|
||||||
|
|
||||||
|
var context = document.querySelector("#context");
|
||||||
|
context.style.transform='translateX(200px)';
|
||||||
|
p.innerText = '登入';
|
||||||
|
|
||||||
|
var registration = document.querySelector("#registration");
|
||||||
|
registration.style.transform = 'translateX(-100px)';
|
||||||
|
registration.style.zIndex = 1;
|
||||||
|
registration.style.opacity = 1;
|
||||||
|
//要输出已有
|
||||||
|
var secondP = document.querySelector("#context p:first-child");
|
||||||
|
secondP.innerText = isHaveAccount;
|
||||||
|
secondP.style.color="red";
|
||||||
|
|
||||||
|
}else if(isHaveAccount ===''){
|
||||||
|
console.log("没有账号")
|
||||||
|
}
|
||||||
|
console.log("还没有置为null " + isHaveAccount);
|
||||||
|
isHaveAccount=null;
|
||||||
|
console.log("值为null " + isHaveAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.webproject;
|
||||||
|
|
||||||
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||||
|
|
||||||
|
public class ServletInitializer extends SpringBootServletInitializer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
||||||
|
return application.sources(WebProjectApplication.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.example.webproject;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class WebProjectApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(WebProjectApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.example.webproject.com.Pojo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class account {
|
||||||
|
private String txl_account;
|
||||||
|
private String txl_password;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "account{" +
|
||||||
|
"txl_account='" + txl_account + '\'' +
|
||||||
|
", txl_password='" + txl_password + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.example.webproject.com.Mapper;
|
||||||
|
|
||||||
|
import com.example.webproject.com.Pojo.account;
|
||||||
|
import org.apache.ibatis.annotations.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface account_operator {
|
||||||
|
//查出所有的记录
|
||||||
|
// @Select("select * from account_table")
|
||||||
|
public List<account> findAll();
|
||||||
|
|
||||||
|
// @Select("select * from account_table where txl_account=#{account}")
|
||||||
|
public account findOne( @Param("txl_account") String txl_account);
|
||||||
|
|
||||||
|
//新增加一条记录
|
||||||
|
// @Insert("insert into account_table values(txl_account=#{account},txl_password=#{password})")
|
||||||
|
public Integer insertOne(@Param("account") account account);
|
||||||
|
// //删除一条记录
|
||||||
|
//// @Delete("delete from account_table where txl_account=#{account}")
|
||||||
|
public Integer deleteOne(String txl_account);
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.example.webproject.com.Mapper.account_operator">
|
||||||
|
<!-- @Select("select * from account_table")-->
|
||||||
|
<!-- public List<account> findAll();-->
|
||||||
|
<parameterMap id="param_account" type="com.example.webproject.com.Pojo.account"></parameterMap>
|
||||||
|
<resultMap id="result_account" type="com.example.webproject.com.Pojo.account"></resultMap>
|
||||||
|
<select id="findAll" resultMap="result_account">
|
||||||
|
select * from account_table
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- @Select("select * from account_table where txl_account=#{account}")-->
|
||||||
|
<!-- public account findOne(@Param("account")String account);-->
|
||||||
|
<select id="findOne" parameterType="String" resultMap="result_account">
|
||||||
|
select * from account_table where txl_account=#{txl_account}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- @Insert("insert into account_table values(txl_account=#{account},txl_password=#{password})")-->
|
||||||
|
<!-- public Integer insertOne(@Param("account") account account);-->
|
||||||
|
<insert id="insertOne" parameterMap="param_account">
|
||||||
|
insert into account_table values( #{account.txl_account}, #{account.txl_password})
|
||||||
|
</insert>
|
||||||
|
<!-- @Delete("delete from account_table where txl_account=#{account}")-->
|
||||||
|
<!-- public Integer deleteOne(@Param("account")String account);-->
|
||||||
|
<delete id="deleteOne" parameterType="String">
|
||||||
|
delete from account_table where txl_account=#{txl_account}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,148 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>添加联系人</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
border-radius: 15px;
|
||||||
|
width: 560px;
|
||||||
|
height: 700px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background-image: url(../static/bg2.jpg);
|
||||||
|
box-shadow: 10px 10px 10px 10px rgba(0, 0, 0, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
line-height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xinxi {
|
||||||
|
width: 560px;
|
||||||
|
height: 400px;
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
tr td {
|
||||||
|
height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name,
|
||||||
|
.php {
|
||||||
|
width: 249px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
width: 200px;
|
||||||
|
height: 30px;
|
||||||
|
color: aqua;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit:hover {
|
||||||
|
background-color: skyblue;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a:hover {
|
||||||
|
color: aqua;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section class="add">
|
||||||
|
<header class="title">
|
||||||
|
<h1>添加联系人</h1>
|
||||||
|
</header>
|
||||||
|
<div class="xinxi">
|
||||||
|
<form th:action="@{/add_user_data}" target="_self" >
|
||||||
|
<table width="600px">
|
||||||
|
<tr>
|
||||||
|
<td><label for="m">添加的联系人姓名:</label></td>
|
||||||
|
<td><input class="name" type="text" id="m" name="name" placeholder="请输入联系人姓名" required="required"></td>
|
||||||
|
</tr>
|
||||||
|
<!-- <tr>-->
|
||||||
|
<!-- <td>性别:</td>-->
|
||||||
|
<!-- <td><label for="nan">男</label><input type="radio" name="sex" id="nan"> -->
|
||||||
|
<!-- <label for="nv">女</label><input type="radio" name="sex" id="nv">-->
|
||||||
|
<!-- </td>-->
|
||||||
|
<!-- </tr>-->
|
||||||
|
<tr>
|
||||||
|
<td><label for="php">电话号码:</label></td>
|
||||||
|
<td><input class="php" type="password" id="php" name="contact_phone_number" placeholder="请输入电话号码" required="required">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><input class="submit" type="submit" value="确认添加" name="上传"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div id="message"><p></p></div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<a th:href="@{/data}">返回联系人列表</a>
|
||||||
|
</footer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var message = [[${message}]];
|
||||||
|
if(message != null){
|
||||||
|
var p = document.querySelector("p");
|
||||||
|
p.innerText = message;
|
||||||
|
p.style.color='red';
|
||||||
|
console.log(message);
|
||||||
|
}
|
||||||
|
console.log("message");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,16 @@
|
|||||||
|
server:
|
||||||
|
port: 8080
|
||||||
|
servlet:
|
||||||
|
context-path: /home
|
||||||
|
|
||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://127.0.0.1:3306/student?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
|
||||||
|
password: 123456
|
||||||
|
username: root
|
||||||
|
|
||||||
|
|
||||||
|
mybatis:
|
||||||
|
mapper-locations: classpath:MyBatis/*.xml
|
||||||
|
type-aliases-package: com.example.webproject.com.Pojo
|
@ -0,0 +1,120 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>查找联系人</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
border-radius: 15px;
|
||||||
|
width: 560px;
|
||||||
|
height: 700px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background-image: url(../static/bg2.jpg);
|
||||||
|
box-shadow: 10px 10px 10px 10px rgba(0, 0, 0, .1);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width: 560px;
|
||||||
|
height: 150px;
|
||||||
|
line-height: 150px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
position: relative;
|
||||||
|
width: 560px;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sousuo {
|
||||||
|
position: absolute;
|
||||||
|
left: 100px;
|
||||||
|
width: 246px;
|
||||||
|
height: 40px;
|
||||||
|
padding-left: 50px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.search input[type=submit] {
|
||||||
|
position: absolute;
|
||||||
|
left: 346px;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search input[type=submit]:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: skyblue;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a:hover {
|
||||||
|
color: aqua;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section>
|
||||||
|
<div class="title">
|
||||||
|
<h1>删除联系人</h1>
|
||||||
|
</div>
|
||||||
|
<form th:action="@{/delete_user_data}" target="_self" >
|
||||||
|
<div class="search">
|
||||||
|
<input class="sousuo" type="search" name="name" placeholder="请输入要删除的联系人姓名" required="required">
|
||||||
|
<input type="submit" value="确认删除">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div id="message"><p></p></div>
|
||||||
|
<footer>
|
||||||
|
<a th:href="@{/data}">返回联系人列表</a>
|
||||||
|
</footer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var message = [[${message}]];
|
||||||
|
if(message != null){
|
||||||
|
var p = document.querySelector("p");
|
||||||
|
p.style.color='red';
|
||||||
|
p.innerText = message;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Title</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
This is error page
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,120 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>查找联系人</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
border-radius: 15px;
|
||||||
|
width: 560px;
|
||||||
|
height: 700px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background-image: url("bg2.jpg}");
|
||||||
|
box-shadow: 10px 10px 10px 10px rgba(0, 0, 0, .1);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width: 560px;
|
||||||
|
height: 150px;
|
||||||
|
line-height: 150px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
position: relative;
|
||||||
|
width: 560px;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sousuo {
|
||||||
|
position: absolute;
|
||||||
|
left: 100px;
|
||||||
|
width: 246px;
|
||||||
|
height: 40px;
|
||||||
|
padding-left: 50px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.search input[type=submit] {
|
||||||
|
position: absolute;
|
||||||
|
left: 346px;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search input[type=submit]:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: skyblue;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
font-size: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 560px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a:hover {
|
||||||
|
color: aqua;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<section>
|
||||||
|
<div class="title">
|
||||||
|
<h1>查找联系人</h1>
|
||||||
|
</div>
|
||||||
|
<form th:action="@{/find_user_data}" target="_self" >
|
||||||
|
<div class="search">
|
||||||
|
<input class="sousuo" type="search" name="name" placeholder="请输入要查找的联系人姓名" required="required">
|
||||||
|
<input type="submit" value="确认查找">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div id="message"><p></p></div>
|
||||||
|
<footer>
|
||||||
|
<a th:href="@{/data}">返回联系人列表</a>
|
||||||
|
</footer>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var message = [[${message}]];
|
||||||
|
if(message != null){
|
||||||
|
var p = document.querySelector("p");
|
||||||
|
p.innerText = message;
|
||||||
|
p.style.color='red';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Binary file not shown.
@ -0,0 +1,40 @@
|
|||||||
|
package com.example.webproject.com.Pojo;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class user_data {
|
||||||
|
private String txl_account;
|
||||||
|
private String txl_name;
|
||||||
|
private String txl_contact_phone_number;
|
||||||
|
private String txl_email;
|
||||||
|
private String txl_address;
|
||||||
|
private String txl_social_media_account;
|
||||||
|
private String txl_company_name;
|
||||||
|
private String txl_position;
|
||||||
|
private String txl_remarks;
|
||||||
|
private String txl_birthday;
|
||||||
|
private String txl_hobbies;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "user_data{" +
|
||||||
|
"txl_account='" + txl_account + '\'' +
|
||||||
|
", txl_name='" + txl_name + '\'' +
|
||||||
|
", txl_contact_phone_number='" + txl_contact_phone_number + '\'' +
|
||||||
|
", txl_email='" + txl_email + '\'' +
|
||||||
|
", txl_address='" + txl_address + '\'' +
|
||||||
|
", txl_social_media_account='" + txl_social_media_account + '\'' +
|
||||||
|
", txl_company_name='" + txl_company_name + '\'' +
|
||||||
|
", txl_position='" + txl_position + '\'' +
|
||||||
|
", txl_remarks='" + txl_remarks + '\'' +
|
||||||
|
", txl_birthday='" + txl_birthday + '\'' +
|
||||||
|
", txl_hobbies='" + txl_hobbies + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.webproject.com.Mapper;
|
||||||
|
|
||||||
|
import com.example.webproject.com.Pojo.user_data;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface user_data_operator {
|
||||||
|
// @Select("select * from user_data_table")
|
||||||
|
public List<user_data> findAll();
|
||||||
|
|
||||||
|
public List<user_data> findOne(String txl_account);
|
||||||
|
|
||||||
|
public List<user_data> findOneByName(String txl_account,String txl_name);
|
||||||
|
|
||||||
|
public Integer deleteOne(String txl_account,String txl_name);
|
||||||
|
|
||||||
|
public Integer insertOne(String account,String name,String contact_phone_number);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.example.webproject.com.Mapper.user_data_operator">
|
||||||
|
<!-- // @Select("select * from user_data_table")-->
|
||||||
|
<!-- public List<user_data> findAll();-->
|
||||||
|
|
||||||
|
<resultMap id="result_user_data" type="com.example.webproject.com.Pojo.user_data">
|
||||||
|
</resultMap>
|
||||||
|
<parameterMap id="param_user_data" type="com.example.webproject.com.Pojo.user_data">
|
||||||
|
</parameterMap>
|
||||||
|
|
||||||
|
<select id="findAll" resultMap="result_user_data">
|
||||||
|
select * from user_data_table
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="findOne" resultMap="result_user_data" parameterType="string">
|
||||||
|
select * from user_data_table where txl_account=#{txl_account}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="findOneByName" resultMap="result_user_data" parameterType="string">
|
||||||
|
select * from user_data_table where txl_account=#{txl_account} and txl_name=#{txl_name}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<delete id="deleteOne" parameterType="string" >
|
||||||
|
delete from user_data_table where txl_account=#{txl_account} and txl_name=#{txl_name}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<insert id="insertOne" parameterType="string">
|
||||||
|
insert into user_data_table values(#{account},#{name},#{contact_phone_number},'','','','','','','','')
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
Loading…
Reference in new issue