简单介绍:程序设计B作业,一个版本用数组写的,另一个版本用STL里面的map写的。
数组版本:
#include <iostream>
#include <string.h>
using namespace std;
//我实在是没想到怎么用动态数组
class Person {
public:
Person(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) :
nums(a_nums), name(a_name), dianhua(a_dianhua), qq(a_qq), vx(a_vx), address(a_address) {};
Person() {};
void show();
void set(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
nums = a_nums;
name = a_name;
dianhua = a_dianhua;
qq = a_qq;
vx = a_vx;
address = a_address;
}
long long get_nums();
string get_name();
private:
long long nums;
string name;
string dianhua;
long long qq;
string vx;
string address;
};
void Person::show() {
cout << "身份证号:" << nums << "\t" << "姓名:" << name << "\t" << "电话:" << dianhua << "\t" << "QQ:" << qq << "\t" << "VX:" << vx << "\t" << "地址:" << address << endl;
}
long long Person::get_nums() {
return nums;
}
string Person::get_name() {
return name;
}
class tongxulu {
public:
tongxulu() { len = 0; };
//从尾部插入元素
void zengjia(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
str[len].set(a_nums, a_name, a_dianhua, a_qq, a_vx, a_address);
len++;
}
//输出
void shuchu();
//按身份证查找
void nums_sreach(long long a_nums);
//修改联系人
void xiugai(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address);
//删除联系人
void erase(long long a_nums);
//按姓进行查找
void name_search(string s);
private:
//数组长度
int len;
//数组容量
Person str[2000];
};
void tongxulu::shuchu() {
for (int i = 0; i < len; i++) {
str[i].show();
}
}
void tongxulu::nums_sreach(long long a_nums) {
int flag = 0;
for (int i = 0; i < len; i++) {
if (str[i].get_nums() == a_nums) {
flag = 1;
str[i].show();
}
}
if (flag == 0) {
return;
}
}
void tongxulu::xiugai(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
int flag = 0;
for (int i = 0; i < len; i++) {
if (str[i].get_nums() == a_nums) {
flag = 1;
str[i].set(a_nums, a_name, a_dianhua, a_qq, a_vx, a_address);
}
}
if (flag == 0) {
return;
}
}
void tongxulu::erase(long long a_nums) {
int flag = 0;
int step = 0;
for (int i = 0; i < len; i++) {
if (str[i].get_nums() == a_nums) {
flag = 1;
step = i;
break;
}
}
if (flag == 0) {
return;
}
for (int i = step; i < len; i++) {
str[i] = str[i + 1];
}
len--;
}
void tongxulu::name_search(string s) {
int flag = 0;
int n = s.size();
for (int i = 0; i < len; i++) {
flag = 0;
for (int j = 0; j <n; j++) {
if (str[i].get_name()[j] != s[j]) {
flag = 1;
return;
}
}
if (flag == 0) {
str[i].show();
}
}
}
int main()
{
//数据类函数调用
Person a;
a.set(101010110, "钟一淼", "15095150785", 879458785, "ZYWJSYG", "山东省");
cout << a.get_name() << endl;
cout << a.get_nums() << endl;
cout << endl;
//操作类函数调用
tongxulu arr;
//插入
arr.zengjia(3707214588, "李湘", "1509878985", 87878787, "8585!85858", "山东省济南市");
arr.zengjia(3789654541, "李萧", "1509878888", 25252525, "7777!85858", "山东省泰安市");
arr.zengjia(3707812777, "钟一淼", "1666666666", 777777777, "7777!!!!!", "山东省潍坊市");
arr.zengjia(3507662777, "乐乐", "1666666666", 777777777, "7777!!!!!", "福建省三明市");
//输出
arr.shuchu();
//按身份证号查找
cout << endl;
arr.nums_sreach(3789654541);
cout << endl;
//按姓查找
arr.name_search("李");
cout << endl;
//修改
arr.xiugai(3789654541, "钟洋", "1509878888", 28282828, "7777!85858", "山东省泰安市");
//删除
arr.erase(3707812777);
//输出
arr.shuchu();
}
STL版本:
#include <iostream>
#include <string.h>
#include <set>
#include <map>
using namespace std;
//暂时尝试一下用STL的map来写。
class tongxulu {
public:
tongxulu() { };
//从尾部插入元素
void zengjia(long long nums, string name, string dianhua, long long qq, string vx, string address);
//输出全部元素
void shuchu();
//按身份证查找
void nums_sreach(long long nums);
//修改联系人
void xiugai(long long nums, string name, string dianhua, long long qq, string vx, string address);
//删除联系人
void erase(long long nums);
//按姓名查找信息
void name_search1(string s);
//按姓进行查找(输出所有这个姓的人)
void name_search2(string s);
private:
struct Person {
long long a_nums;
string a_name;
string a_dianhua;
long long a_qq;
string a_vx;
string a_address;
};
map<long long, Person>v;
};
void tongxulu::zengjia(long long nums, string name, string dianhua, long long qq, string vx, string address) {
Person p;
p.a_address = address;
p.a_dianhua = dianhua;
p.a_name = name;
p.a_qq = qq;
p.a_nums = nums;
p.a_vx = vx;
v[nums] = p;
}
void tongxulu::shuchu() {
map<long long, Person>::iterator it;
for (it = v.begin(); it != v.end(); it++) {
Person p = it->second;
cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;
}
}
//按身份证查找
void tongxulu::nums_sreach(long long nums) {
map<long long, Person>::iterator it = v.find(nums);
if (it == v.end()) {
cout << "该联系人不存在。" << endl;
return;
}
cout << "身份证号:" << v[nums].a_nums << "\t" << "姓名:" << v[nums].a_name << "\t" << "电话:" << v[nums].a_dianhua << "\t" << "QQ:" << v[nums].a_qq << "\t" << "VX:" << v[nums].a_vx << "\t" << "地址:" << v[nums].a_address << endl;
}
//修改联系人
void tongxulu::xiugai(long long nums, string name, string dianhua, long long qq, string vx, string address) {
Person p;
p.a_name = name;
p.a_nums = nums;
p.a_dianhua = dianhua;
p.a_qq = qq;
p.a_vx = vx;
p.a_address = address;
v[nums] = p;
}
//删除联系人
void tongxulu::erase(long long nums) {
map<long long, Person>::iterator it = v.find(nums);
if (it == v.end()) {
cout << "该联系人不存在。" << endl;
return;
}
v.erase(it);
cout << "联系人已经删除" << endl;
}
//按姓名查找信息
void tongxulu::name_search1(string s) {
int flag = 0;
map<long long, Person>::iterator it;
for (it = v.begin(); it != v.end(); it++) {
Person p = it->second;
if (s == p.a_name) {
flag = 1;
cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;
}
}
if (flag == 0) {
cout << "该联系人不存在。" << endl;
}
}
//按姓进行查找(输出所有这个姓的人)
void tongxulu::name_search2(string s) {
int len = s.size();
int cnt = 0;
map<long long, Person>::iterator it;
for (it = v.begin(); it != v.end(); it++) {
int flag = 0;
Person p = it->second;
for (int i = 0; i < s.size(); i++) {
if (p.a_name[i] != s[i]) {
flag = 1;
break;
}
}
if (flag == 0) {
cnt++;
cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;
}
}
if (cnt == 0) {
cout << "您要查找的姓的人不存在" << endl;
}
}
int main()
{
tongxulu arr;
//插入
arr.zengjia(3707214588, "李湘", "1509878985", 87878787, "8585!85858", "山东省济南市");
arr.zengjia(3789654541, "李萧", "1509878888", 25252525, "7777!85858", "山东省泰安市");
arr.zengjia(3707812777, "钟一淼", "1666666666", 777777777, "7777!!!!!", "山东省潍坊市");
arr.zengjia(3507662777, "乐乐", "1666666666", 777777777, "7777!!!!!", "福建省三明市");
//输出
arr.shuchu();
//按身份证号查找
cout << endl;
arr.nums_sreach(3789654541);
//修改联系人
arr.xiugai(3789654541, "李响", "1509878888", 333333333, "7777!85858", "山东省菏泽市");
//删除联系人
arr.erase(3707812777);
//按姓名查找信息
arr.name_search1("乐乐");
cout << endl;
//按姓进行查找(输出所有这个姓的人)
arr.name_search2("李");
//最后输出
cout << endl;
arr.shuchu();
}
撒花,困死了,睡觉觉!