热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

C++利用多态实现职工管理系统(项目开发)

这篇文章主要介绍了C++利用多态实现职工管理系统(项目开发),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

分析

首先看一下这个项目的文件:

主要分为两部分:

主体部分:
main.cpp和workManager.h,workManager.cpp职工部分(这里采用多态的方式编写):
主要是worker.h和worker.cpp
三种职位:boss,employee,manager

经过分析是否大概知道了其中各部分的意思呢?

看起来这里面有很多,但是正是这种多个文件编写才时代码更加简洁。

所以在正式写项目之前一定要先考虑好整体架构,在进行编写。

项目整体架构:

这个项目的难度并不大,主要是要学会这个项目整体架构是怎样安排的。

左边是主体部分。

主要是整个项目的功能,将主界面的所有功能通过代码和右边的不同人之间进行实现。

包含了上面几个功能函数,还有一些没有写出来

右边则是三种职工的信息。

每个人都有自己的姓名,编号,职位,然后包含两个函数,显示个人信息和获取岗位信息。

主要是通过数组进行存储的

其它的也没什么需要过多介绍的,主要是要理解上面的整体架构图,详细的代码编写并不算复杂

部分运行截图

代码

main.cpp

#include "workManager.h"
 
//构造函数
WorkerManage::WorkerManage()
{
	ifstream ifs;
	ifs.open(FILENAME, ios::in); //读文件
 
	//1,文件不存在
	if (!ifs.is_open())
	{
		cout <<"文件不存在" <m_EmpNum = 0;
		//初始化数组指针
		this->m_EmpArray = NULL;
		//初始化文件是否为空
		this->m_FileIsEmpty = true;
		ifs.close();
		return;
	}
 
	//2,文件存在,数据为空
	char ch;
	ifs >> ch;
	if (ifs.eof())
	{
		//文件为空
		cout <<"文件为空!" <m_EmpNum = 0;
		//初始化数组指针
		this->m_EmpArray = NULL;
		//初始化文件是否为空
		this->m_FileIsEmpty = true;
		ifs.close();
		return;
	}
 
	//3,文件存在,并且记录数据
	int num = this->get_EmpNum();
	//cout <<"职工人数为:" <m_EmpNum = num;
 
	//开辟空间
	this->m_EmpArray = new Worker *[this->m_EmpNum];
	//将文件中数据,存到数组中
	this->init_Emp();
 
}
 
//展示菜单
void WorkerManage::Show_Menu()
{
	cout <<"*********************************" <> addNum;
 
	if (addNum > 0)
	{
		//添加
		//计算添加新空间大小
		int newSize = this->m_EmpNum + addNum; //新空间人数 = 原来记录人数+新增人数
 
		//开辟新空间
		Worker ** newSpace = new Worker*[newSize];
 
		//将原来空间下数据,拷贝到新空间下
		if (this->m_EmpArray != NULL)
		{
			for (int i = 0; i m_EmpNum; i++)
			{
				newSpace[i] = this->m_EmpArray[i];
			}
		}
 
		//添加新数据
		for (int i = 0; i > id;
 
			cout <<"请输入第" <> name;
 
			cout <<"请选择该职工岗位:" <> dSelect;
 
			Worker *worker = NULL;
			switch (dSelect)
			{
			case 1:
				worker = new Employee(id, name, 1);
				break;
			case 2:
				worker = new Manager(id, name, 2);
				break;
			case 3:
				worker = new Boss(id, name, 3);
				break;
			default:
				break;
			}
 
			//将创建职工职责,保存到数组中
			newSpace[this->m_EmpNum++] = worker;
		}
 
		//释放原有的空间
		delete[] this->m_EmpArray;
 
		//更改新空间指向
		this->m_EmpArray = newSpace;
 
		//更新新的职工人数
		this->m_EmpNum = newSize;
 
		//更新职工不为空标志
		this->m_FileIsEmpty = false;
 
		//添加成功
		cout <<"成功添加" <save();
	}
	else
	{
		cout <<"输入数据有误" <m_EmpNum; i++)
	{
		ofs <m_EmpArray[i]->m_Id <<" "
			<m_EmpArray[i]->m_Name <<" "
			<m_EmpArray[i]->m_DeptId <> id&& ifs >> name && ifs >> dId)
	{
		num++;
	}
 
	return num;
}
 
//初始化职工
void WorkerManage::init_Emp()
{
	ifstream ifs;
	ifs.open(FILENAME, ios::in); //打开文件 读
 
	int id;
	string name;
	int dId;
 
	int index = 0;
	//读数据
	while (ifs >> id&& ifs >> name && ifs >> dId)
	{
		Worker *worker = NULL;
 
		switch (dId)
		{
			case 1:
				worker = new Employee(id, name, dId);
				break;
			case 2:
				worker = new Manager(id, name, dId);
				break;
			case 3:
				worker = new Boss(id, name, dId);
				break;
			default:
				break;
		}
 
		this->m_EmpArray[index] = worker;
		index++;
	}
 
	this->m_FileIsEmpty = false;
	//关闭文件
	ifs.close();
}
 
//显示职工
void WorkerManage::show_Emp()
{
	//判断文件是否为空
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或者记录为空" <m_EmpArray[i]->showInfo();
		}
	}
 
	//按任意键后清屏
	system("pause");
	system("cls");
}
 
//删除职工
void WorkerManage::Del_Emp()
{
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或者记录为空" <> id;
 
		int index = this->IsExist(id);
		if (index != -1)
		{
			//数据前移
			for (int i = index; i m_EmpNum; i++)
			{
				this->m_EmpArray[i] = this->m_EmpArray[i + 1];
			}
			this->m_EmpNum--; //更新数组中记录人员个数
 
			//数据更新到文件中
			this->save();
 
			cout <<"删除成功" <m_EmpNum; i++)
	{
		if (this->m_EmpArray[i]->m_Id == id)
		{
			//找到职工
			index = i;
 
			break;
		}
	}
	return index;
}
 
//修改职工
void WorkerManage::Mod_Emp()
{
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空" <> id;
 
		int ret = this->IsExist(id);
		if (ret != -1)
		{
			//查找到编号的职工
			delete this->m_EmpArray[ret];
 
			int newId = 0;
			string newName = "";
			int dSelect = 0;
 
			cout <<"查到:" <> newId;
 
			cout <<"请输入新名字:" <> newName;
 
			cout <<"请输入岗位:" <> dSelect;
 
			Worker *worker = NULL;
			switch (dSelect)
			{
			case 1:
				worker = new Employee(newId, newName, dSelect);
				break;
			case 2:
				worker = new Manager(newId, newName, dSelect);
				break;
			case 3:
				worker = new Boss(newId, newName, dSelect);
				break;
			default:
				break;
			}
 
			//更新数据 到数组中
			this->m_EmpArray[ret] = worker;
 
			cout <<"修改成功!" <save();
		}
		else
		{
			cout <<"修改失败,查无此人" <m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空!" <> select;
		if (select == 1)
		{
			//按照编号查
			int id;
			cout <<"请输入查找的职工编号:" <> id;
 
			int ret = IsExist(id);
			if (ret != -1)
			{
				//找到职工
				cout <<"查找成功!该职工信息如下!" <m_EmpArray[ret]->showInfo();
			}
			else
			{
				cout <<"查无此人" <> name;
 
			//加入是否查到标志
			bool flag = false; //默认未找到
 
			for (int i = 0; i m_EmpArray[i]->m_Name == name)
				{
					cout <<"查找成功,职工编号为:"
						<m_EmpArray[i]->m_Id
						<<"号职工信息如下:" <m_EmpArray[i]->showInfo();
				}
			}
 
			if (flag == false)
			{
				cout <<"查无此人" <m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空!" <> select;
		for (int i = 0; i m_EmpNum; j++)
			{
				if (select == 1) //升序
				{
					if (this->m_EmpArray[minOrMax]->m_Id > this->m_EmpArray[j]->m_Id)
					{
						minOrMax = j;
					}
				}
				else //降序
				{
					if (this->m_EmpArray[minOrMax]->m_Id m_EmpArray[j]->m_Id)
					{
						minOrMax = j;
					}
				}
			}
			//判断一开始认定的最大值或最小值
			if (i != minOrMax)
			{
				Worker * temp = this->m_EmpArray[i];
				this->m_EmpArray[i] = this->m_EmpArray[minOrMax];
				this->m_EmpArray[minOrMax] = temp;
			}
		}
		cout <<"排序成功!" <save(); //排序结果保存
		this->show_Emp();
	}
}
 
//清空文件
void WorkerManage::Clean_File()
{
	cout <<"确定清空?" <> select;
 
	if (select == 1)
	{
		//清空文件
		ofstream ofs(FILENAME, ios::trunc); //删除文件后重新创建
		ofs.close();
 
		if (this->m_EmpArray != NULL)
		{
			//删除堆区的每个职工对象
			for (int i = 0; i m_EmpNum; i++)
			{
				delete this->m_EmpArray[i];
				this->m_EmpArray[i] = NULL;
			}
 
			//删除堆区数组指针
			delete[] this->m_EmpArray;
			this->m_EmpArray = NULL;
			this->m_EmpNum = 0;
			this->m_FileIsEmpty = true;
		}
 
		cout <<"清空成功" <

workManager.h

#include
#include
using namespace std;
 
#include"worker.h"
#include"employee.h"
#include"manager.h"
#include"boss.h"
 
#define FILENAME "empFile.txt"
 
class WorkerManage
{
public:
	//构造函数
	WorkerManage();
	
	//展示菜单
	void Show_Menu();
 
	//退出系统
	void ExitSystem();
 
	//记录职工人数
	int m_EmpNum;
	
	//职工数组指针
	Worker ** m_EmpArray;
 
	//添加职工
	void Add_Emp();
 
	//保存文件
	void save();
 
	//判断文件是否为空
	bool m_FileIsEmpty;
 
	//统计文件人数
	int get_EmpNum();
 
	//初始化职工
	void init_Emp();
 
	//显示职工
	void show_Emp();
 
	//删除职工
	void Del_Emp();
 
	//判断职工是否存在,如果存在返回职工所在数组中的位置,不存在返回-1
	int IsExist(int id);
 
	//修改职工
	void Mod_Emp();
 
	//查找职工
	void Find_Emp();
 
	//按照编号排序
	void Sort_Emp();
 
	//清空文件
	void Clean_File();
 
	//析构函数
	~WorkerManage();
};

workManager.cpp

#include "workManager.h"
 
//构造函数
WorkerManage::WorkerManage()
{
	ifstream ifs;
	ifs.open(FILENAME, ios::in); //读文件
 
	//1,文件不存在
	if (!ifs.is_open())
	{
		cout <<"文件不存在" <m_EmpNum = 0;
		//初始化数组指针
		this->m_EmpArray = NULL;
		//初始化文件是否为空
		this->m_FileIsEmpty = true;
		ifs.close();
		return;
	}
 
	//2,文件存在,数据为空
	char ch;
	ifs >> ch;
	if (ifs.eof())
	{
		//文件为空
		cout <<"文件为空!" <m_EmpNum = 0;
		//初始化数组指针
		this->m_EmpArray = NULL;
		//初始化文件是否为空
		this->m_FileIsEmpty = true;
		ifs.close();
		return;
	}
 
	//3,文件存在,并且记录数据
	int num = this->get_EmpNum();
	//cout <<"职工人数为:" <m_EmpNum = num;
 
	//开辟空间
	this->m_EmpArray = new Worker *[this->m_EmpNum];
	//将文件中数据,存到数组中
	this->init_Emp();
 
}
 
//展示菜单
void WorkerManage::Show_Menu()
{
	cout <<"*********************************" <> addNum;
 
	if (addNum > 0)
	{
		//添加
		//计算添加新空间大小
		int newSize = this->m_EmpNum + addNum; //新空间人数 = 原来记录人数+新增人数
 
		//开辟新空间
		Worker ** newSpace = new Worker*[newSize];
 
		//将原来空间下数据,拷贝到新空间下
		if (this->m_EmpArray != NULL)
		{
			for (int i = 0; i m_EmpNum; i++)
			{
				newSpace[i] = this->m_EmpArray[i];
			}
		}
 
		//添加新数据
		for (int i = 0; i > id;
 
			cout <<"请输入第" <> name;
 
			cout <<"请选择该职工岗位:" <> dSelect;
 
			Worker *worker = NULL;
			switch (dSelect)
			{
			case 1:
				worker = new Employee(id, name, 1);
				break;
			case 2:
				worker = new Manager(id, name, 2);
				break;
			case 3:
				worker = new Boss(id, name, 3);
				break;
			default:
				break;
			}
 
			//将创建职工职责,保存到数组中
			newSpace[this->m_EmpNum++] = worker;
		}
 
		//释放原有的空间
		delete[] this->m_EmpArray;
 
		//更改新空间指向
		this->m_EmpArray = newSpace;
 
		//更新新的职工人数
		this->m_EmpNum = newSize;
 
		//更新职工不为空标志
		this->m_FileIsEmpty = false;
 
		//添加成功
		cout <<"成功添加" <save();
	}
	else
	{
		cout <<"输入数据有误" <m_EmpNum; i++)
	{
		ofs <m_EmpArray[i]->m_Id <<" "
			<m_EmpArray[i]->m_Name <<" "
			<m_EmpArray[i]->m_DeptId <> id&& ifs >> name && ifs >> dId)
	{
		num++;
	}
 
	return num;
}
 
//初始化职工
void WorkerManage::init_Emp()
{
	ifstream ifs;
	ifs.open(FILENAME, ios::in); //打开文件 读
 
	int id;
	string name;
	int dId;
 
	int index = 0;
	//读数据
	while (ifs >> id&& ifs >> name && ifs >> dId)
	{
		Worker *worker = NULL;
 
		switch (dId)
		{
			case 1:
				worker = new Employee(id, name, dId);
				break;
			case 2:
				worker = new Manager(id, name, dId);
				break;
			case 3:
				worker = new Boss(id, name, dId);
				break;
			default:
				break;
		}
 
		this->m_EmpArray[index] = worker;
		index++;
	}
 
	this->m_FileIsEmpty = false;
	//关闭文件
	ifs.close();
}
 
//显示职工
void WorkerManage::show_Emp()
{
	//判断文件是否为空
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或者记录为空" <m_EmpArray[i]->showInfo();
		}
	}
 
	//按任意键后清屏
	system("pause");
	system("cls");
}
 
//删除职工
void WorkerManage::Del_Emp()
{
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或者记录为空" <> id;
 
		int index = this->IsExist(id);
		if (index != -1)
		{
			//数据前移
			for (int i = index; i m_EmpNum; i++)
			{
				this->m_EmpArray[i] = this->m_EmpArray[i + 1];
			}
			this->m_EmpNum--; //更新数组中记录人员个数
 
			//数据更新到文件中
			this->save();
 
			cout <<"删除成功" <m_EmpNum; i++)
	{
		if (this->m_EmpArray[i]->m_Id == id)
		{
			//找到职工
			index = i;
 
			break;
		}
	}
	return index;
}
 
//修改职工
void WorkerManage::Mod_Emp()
{
	if (this->m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空" <> id;
 
		int ret = this->IsExist(id);
		if (ret != -1)
		{
			//查找到编号的职工
			delete this->m_EmpArray[ret];
 
			int newId = 0;
			string newName = "";
			int dSelect = 0;
 
			cout <<"查到:" <> newId;
 
			cout <<"请输入新名字:" <> newName;
 
			cout <<"请输入岗位:" <> dSelect;
 
			Worker *worker = NULL;
			switch (dSelect)
			{
			case 1:
				worker = new Employee(newId, newName, dSelect);
				break;
			case 2:
				worker = new Manager(newId, newName, dSelect);
				break;
			case 3:
				worker = new Boss(newId, newName, dSelect);
				break;
			default:
				break;
			}
 
			//更新数据 到数组中
			this->m_EmpArray[ret] = worker;
 
			cout <<"修改成功!" <save();
		}
		else
		{
			cout <<"修改失败,查无此人" <m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空!" <> select;
		if (select == 1)
		{
			//按照编号查
			int id;
			cout <<"请输入查找的职工编号:" <> id;
 
			int ret = IsExist(id);
			if (ret != -1)
			{
				//找到职工
				cout <<"查找成功!该职工信息如下!" <m_EmpArray[ret]->showInfo();
			}
			else
			{
				cout <<"查无此人" <> name;
 
			//加入是否查到标志
			bool flag = false; //默认未找到
 
			for (int i = 0; i m_EmpArray[i]->m_Name == name)
				{
					cout <<"查找成功,职工编号为:"
						<m_EmpArray[i]->m_Id
						<<"号职工信息如下:" <m_EmpArray[i]->showInfo();
				}
			}
 
			if (flag == false)
			{
				cout <<"查无此人" <m_FileIsEmpty)
	{
		cout <<"文件不存在或记录为空!" <> select;
		for (int i = 0; i m_EmpNum; j++)
			{
				if (select == 1) //升序
				{
					if (this->m_EmpArray[minOrMax]->m_Id > this->m_EmpArray[j]->m_Id)
					{
						minOrMax = j;
					}
				}
				else //降序
				{
					if (this->m_EmpArray[minOrMax]->m_Id m_EmpArray[j]->m_Id)
					{
						minOrMax = j;
					}
				}
			}
			//判断一开始认定的最大值或最小值
			if (i != minOrMax)
			{
				Worker * temp = this->m_EmpArray[i];
				this->m_EmpArray[i] = this->m_EmpArray[minOrMax];
				this->m_EmpArray[minOrMax] = temp;
			}
		}
		cout <<"排序成功!" <save(); //排序结果保存
		this->show_Emp();
	}
}
 
//清空文件
void WorkerManage::Clean_File()
{
	cout <<"确定清空?" <> select;
 
	if (select == 1)
	{
		//清空文件
		ofstream ofs(FILENAME, ios::trunc); //删除文件后重新创建
		ofs.close();
 
		if (this->m_EmpArray != NULL)
		{
			//删除堆区的每个职工对象
			for (int i = 0; i m_EmpNum; i++)
			{
				delete this->m_EmpArray[i];
				this->m_EmpArray[i] = NULL;
			}
 
			//删除堆区数组指针
			delete[] this->m_EmpArray;
			this->m_EmpArray = NULL;
			this->m_EmpNum = 0;
			this->m_FileIsEmpty = true;
		}
 
		cout <<"清空成功" <

worker.h

#pragma once
#include
using namespace std;
#include
 
//职工抽象类
class Worker
{
public:
	//显示个人信息
	virtual void showInfo() = 0;
 
	//获取岗位名称
	virtual string getDeptName() = 0;
 
	//职工编号
	int m_Id;
	//职工姓名
	string m_Name;
	//部门编号
	int m_DeptId;
};

boss.h

#pragma once
#include 
using namespace std;
#include"worker.h";
 
class Boss :public Worker
{
public:
 
	Boss(int id, string name, int dId);
 
	//显示个人信息
	virtual void showInfo();
 
	//获取岗位名称
	virtual string getDeptName();
};

boss.cpp

#include"boss.h"
 
//构造函数
Boss::Boss(int id, string name, int dId)
{
	this->m_Id = id;
	this->m_Name = name;
	this->m_DeptId = dId;
}
 
//显示个人信息
void Boss::showInfo()
{
	cout <<"职工编号:" <m_Id
		<<"\t职工姓名:" <m_Name
		<<"\t岗位:" <getDeptName()
		<<"\t岗位职责:管理公司所有事物" <

employee.h

//普通员工文件
#pragma once
#include
#include"worker.h"
using namespace std;
 
class Employee:public Worker
{
public:
	Employee(int id,string name,int dId);
 
	//显示个人信息
	virtual void showInfo();
 
	//获取岗位名称
	virtual string getDeptName();
};

employee.cpp

#include"employee.h"
 
//构造函数
Employee::Employee(int id, string name, int dId)
{
	this->m_Id = id;
	this->m_Name = name;
	this->m_DeptId = dId;
}
 
//显示个人信息
void Employee::showInfo()
{
	cout <<"职工编号:" <m_Id
		<<"\t职工姓名:" <m_Name
		<<"\t岗位:" <getDeptName()
		<<"\t岗位职责:完成经理交给的任务"<

manager.h

#pragma once
#include 
using namespace std;
#include"worker.h";
 
class Manager :public Worker
{
public:
 
	Manager(int id, string name, int dId);
 
	//显示个人信息
	virtual void showInfo();
 
	//获取岗位名称
	virtual string getDeptName();
};

manager.cpp

#include"manager.h"
 
//构造函数
Manager::Manager(int id, string name, int dId)
{
	this->m_Id = id;
	this->m_Name = name;
	this->m_DeptId = dId;
}
 
//显示个人信息
void Manager::showInfo()
{
	cout <<"职工编号:" <m_Id
		<<"\t职工姓名:" <m_Name
		<<"\t岗位:" <getDeptName()
		<<"\t岗位职责:完成老板交给的任务,并且发任务给员工" <

到此这篇关于C++利用多态实现职工管理系统(项目开发)的文章就介绍到这了,更多相关C++职工管理系统内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 如何在PHPcms网站中添加广告
    本文详细介绍了在PHPcms网站后台添加广告的方法,涵盖多种常见的广告形式,如百度广告和Google广告,并提供了相关设置的步骤。同时,文章还探讨了优化网站流量的SEO策略。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • C++: 实现基于类的四面体体积计算
    本文介绍如何使用C++编程语言,通过定义类和方法来计算由四个三维坐标点构成的四面体体积。文中详细解释了四面体体积的数学公式,并提供了两种不同的实现方式。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 如何优化2060显卡设置以提升《Apex英雄》游戏体验
    《Apex英雄》作为一款热门的战术竞技游戏,吸引了大量玩家。本文将探讨如何通过优化GeForce RTX 2060显卡设置,确保在《Apex英雄》中获得最佳性能和流畅的游戏体验。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文将详细介绍在Windows 7环境下,检查U盘启动盘是否制作成功的多种方法,包括通过BIOS设置和使用模拟启动工具。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
author-avatar
舞动青春的迪斯科舞厅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有