You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

802 lines
30 KiB

#include <iostream>
#include <cstring>
#include <iomanip>
#include <vector>
#include<fstream>
using namespace std;
class item {
private:
string itemname;
int intnum{ 0 }, strnum{ 0 };
vector<int> intentry;
vector<string> strentry;
friend class kind;
friend class handbook;
public:
item(const item &_item) {
itemname = _item.itemname;
intnum = _item.intnum;
strnum = _item.strnum;
intentry = _item.intentry;
strentry = _item.strentry;
}
item() {
}
~item() {
}
};
class kind {
public:
string kindname;
int intnum{0};
vector<string> intname;
int strnum{0};
vector<string> strname;
vector<item> itemlist;
kind(vector<item> _itemlist) {
this->itemlist = _itemlist;
}
kind() {
}
~kind(){}
};
class handbook {
public:
vector<kind> kindlist;
int password{ 123456 };
handbook(vector<kind> _kindlist) {
this->kindlist = _kindlist;
}
handbook() {
}
~handbook() {
}
void kindprint(int n) {
cout << "\n种类名" << kindlist[n].kindname;
for (int i{ 0 }; i < kindlist[n].intnum; i++) {
cout << "\n第" << i + 1 << "个词条:" << kindlist[n].intname[i];
}
for (int i{ 0 }; i <= kindlist[n].strnum; i++) {
cout << "\n第" << kindlist[n].intnum + i + 1 << "个词条:" << kindlist[n].strname[i];
}
}
void itemprint(int n0, int n1) {
cout << "\n物品名" << kindlist[n0].itemlist[n1].itemname;
for (int i{ 0 }; i < kindlist[n0].intnum; i++) {
cout << "\n" << kindlist[n0].intname[i] << ":" << kindlist[n0].itemlist[n1].intentry[i];
}
for (int i{ 0 }; i <= kindlist[n0].strnum; i++) {
cout << "\n" << kindlist[n0].strname[i] << ":" << kindlist[n0].itemlist[n1].strentry[i];
}
}
void myregister() {
cout << "请选择你的登录方式: 1.管理员登录 2.游客登录\n";
cout << "请输入你的选择(输入方式前的序号后按回车):";
int sel, password0{1};
while (cin >> sel) {
if (sel != 1 && sel != 2) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel == 1) {
cout << "请输入管理员密钥(输入1进入游客模式):";
while (cin >> password0) {
if (password0 != password && password0!=1) {
cout << "密码错误!\n" << "请重新输入你的密码输入1进入游客模式";
}
else break;
}
}
if (password0 == 1)sel = 2;
menu(sel);
}
void menu(int sel) {
system("cls");
string sel1;
if (sel == 1) {
cout << "\t\t\t**********欢迎来到学生成绩管理系统**********" << endl;
cout << "\t\t\t你可以进行以下操作:" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 1 信息创建(种类/物品) |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 2 信息删除(种类/物品) |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 3 信息修改(种类/物品) |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 4 物品清单查看 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 5 物品信息查找 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 6 物品数据分析 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 7 清空系统数据 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 0 退出 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t请选择【0-7】";
while (cin >> sel1) {
if (sel1 != "1" && sel1 != "2" && sel1 != "3" && sel1!="4" && sel1!="5" && sel1!="6" && sel1!="7" && sel1!="0") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel1 == "1") {
system("cls");
cout << "请选择你要创建的类别: 1.种类 2.物品\n";
cout << "请输入你的选择(输入方式前的序号后按回车):";
string sel2;
while (cin >> sel2) {
if (sel2 != "1" && sel2 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel2 == "1")
kindcreate();
else
itemcreate();
}
else if (sel1 == "2") {
system("cls");
cout << "请选择你要删除的类别: 1.种类 2.物品\n";
cout << "请输入你的选择(输入方式前的序号后按回车):";
string sel2;
while (cin >> sel2) {
if (sel2 != "1" && sel2 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel2 == "1")
kinddelete();
else
itemdelete();
}
else if (sel1 == "3") {
system("cls");
cout << "请选择你要修改的类别: 1.种类 2.物品\n";
cout << "请输入你的选择(输入方式前的序号后按回车):";
string sel2;
while (cin >> sel2) {
if (sel2 != "1" && sel2 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel2 == "1")
kindamend();
else
itemamend();
}
else if (sel1 == "4") {
inventory();
}
else if (sel1 == "5") {
search();
}
else if (sel1 == "6") {
}
else if (sel1 == "7") {
system("cls");
cout << "是否确定要清空数据? 1.清空 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1") {
password = 123456;
kindlist.clear();
cout << "\n已清空系统数据";
string sel;
cout << "\n输入任意字符后按回车即可返回菜单";
cin >> sel;
menu(1);
}
else {
menu(1);
}
}
else {
system("cls");
cout << "是否保存数据? 1.保存 2.直接退出";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1") {
writefile();
cout << "已保存系统数据";
string sel;
cout << "\n输入任意字符后按回车即可退出";
cin >> sel;
}
}
}
else {
cout << "\t\t\t**********欢迎来到学生成绩管理系统**********" << endl;
cout << "\t\t\t你可以进行以下操作:" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 1 物品清单查看 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 2 物品信息查找 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 3 物品数据分析 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t| 0 退出 |" << endl;
cout << "\t\t\t|------------------------------------------|" << endl;
cout << "\t\t\t请选择【0-3】";
while (cin >> sel1) {
if (sel1 != "1" && sel1 != "2" && sel1 != "3" && sel1 != "0") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel1 == "1") {
inventory();
}
else if (sel1 == "2") {
search();
}
else if (sel1 == "3") {
}
else {
}
}
}
void kindcreate() {
kind kind0;
system("cls");
cout << "请输入你要添加的种类名:";
cin>> kind0.kindname;
cout << "请输入你要创建的数字型词条数:";
cin >> kind0.intnum;
for(int i{0};i< kind0.intnum;i++){
cout << "请输入你要创建的第" << i + 1 << "个数字型词条名:";
string name;
cin >> name;
kind0.intname.push_back(name);
}
cout << "请输入你要创建的文字型词条数:";
cin >> kind0.strnum;
for (int i{ 0 }; i < kind0.strnum; i++) {
cout << "请输入你要创建的第" << i + 1 << "个文字型词条名:";
string name;
cin >> name;
kind0.strname.push_back(name);
}
kind0.strname.push_back("备注");
kindlist.push_back(kind0);
system("cls");
cout << "创建成功!\n";
int n = kindlist.size()-1;
kindprint(n);
cout << "\n是否继续创建 1.继续创建 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel2;
while (cin >> sel2) {
if (sel2 != "1" && sel2 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel2 == "1")
kindcreate();
else
menu(1);
}
void itemcreate() {
system("cls");
cout << "请选择你要创建的位置:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
cout << i + 1 << "." << kindlist[i].kindname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel2;
while (cin >> sel2) {
if (sel2 < 1 || sel2 >kindlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
item item0;
system("cls");
cout << "请输入你要添加的物品名:";
cin >> item0.itemname;
item0.intnum=kindlist[sel2-1].intnum;
for (int i{ 0 }; i < item0.intnum; i++) {
cout << "请输入你要创建物品的“" << kindlist[sel2-1].intname[i] << "”词条内容:";
int entry;
cin >> entry;
item0.intentry.push_back(entry);
}
item0.strnum = kindlist[sel2-1].strnum;
for (int i{ 0 }; i <= item0.strnum; i++) {
cout << "请输入你要创建物品的“" << kindlist[sel2-1].strname[i] << "”词条内容:";
string name;
cin >> name;
item0.strentry.push_back(name);
}
kindlist[sel2-1].itemlist.push_back(item0);
system("cls");
cout << "创建成功!\n";
int n = kindlist[sel2 - 1].itemlist.size()-1;
itemprint(sel2 - 1, n);
cout << "\n是否继续创建 1.继续创建 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
itemcreate();
else
menu(1);
}
void kinddelete() {
system("cls");
cout << "请选择你要删除的种类:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
cout << i + 1 << "." << kindlist[i].kindname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel2;
while (cin >> sel2) {
if (sel2 < 1 || sel2 >kindlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
vector<kind>::iterator it=kindlist.begin();
for (int i{ 1 }; i < sel2; i++)
it++;
kindlist.erase(it);
system("cls");
cout << "删除成功!\n";
cout << "\n是否继续删除 1.继续删除 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
kinddelete();
else
menu(1);
}
void itemdelete() {
system("cls");
cout << "请选择你要删除的物品所属的种类:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
cout << i + 1 << "." << kindlist[i].kindname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel2;
while (cin >> sel2) {
if (sel2 < 1 || sel2 >kindlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
cout << "请选择你要删除的物品:\n";
for (int i{ 0 }; i < kindlist[sel2-1].itemlist.size(); i++) {
cout << i + 1 << "." << kindlist[sel2-1].itemlist[i].itemname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel1;
while (cin >> sel1) {
if (sel1 < 1 || sel1 >kindlist[sel2-1].itemlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
vector<item>::iterator it = kindlist[sel2-1].itemlist.begin();
for (int i{ 1 }; i < sel1; i++)
it++;
kindlist[sel2-1].itemlist.erase(it);
system("cls");
cout << "删除成功!\n";
cout << "\n是否继续删除 1.继续删除 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
kinddelete();
else
menu(1);
}
void kindamend() {
system("cls");
cout << "请选择你要修改的种类:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
cout << i + 1 << "." << kindlist[i].kindname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel2;
while (cin >> sel2) {
if (sel2 < 1 || sel2 >kindlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
int j{ 1 };
cout << "1."<<kindlist[sel2-1].kindname << "\t";
for (int i{ 0 }; i < kindlist[sel2-1].intnum; i++) {
j++;
cout << j << "." << kindlist[sel2 - 1].intname[i] << "\t\t ";
}
for (int i{ 0 }; i <= kindlist[sel2-1].strnum; i++) {
j++;
cout << j << "." << kindlist[sel2 - 1].strname[i] << "\t\t ";
}
cout << endl;
cout << "请选择你要修改的内容:\n";
cout << "\n请输入你的选择输入内容前的序号后按回车";
int sel1;
while (cin >> sel1) {
if (sel1 < 1 || sel1 >kindlist[sel2-1].intnum+kindlist[sel2-1].strnum+2) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel1 == 1)
{
cout << "你想将“" << kindlist[sel2 - 1].kindname << "”修改为:";
cin >> kindlist[sel2-1].kindname;
}
else if (sel1 > 1 && sel1 < kindlist[sel2 - 1].intnum + 2)
{
cout << "你想将“" << kindlist[sel2 - 1].intname[sel1 - 2] << "”修改为:";
cin >> kindlist[sel2 - 1].intname[sel1 - 2];
}
else
{
cout << "你想将“" << kindlist[sel2 - 1].strname[sel1 - kindlist[sel2 - 1].intnum - 2] << "”修改为:";
cin >> kindlist[sel2 - 1].strname[sel1 - kindlist[sel2 - 1].intnum - 2];
}
system("cls");
cout << "修改成功!";
kindprint(sel2 - 1);
cout << "\n是否继续修改 1.继续修改 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
kindamend();
else
menu(1);
}
void itemamend() {
system("cls");
cout << "请选择你要修改的种类:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
cout << i + 1 << "." << kindlist[i].kindname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel1;
while (cin >> sel1) {
if (sel1 < 1 || sel1 >kindlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
cout << "请选择你要修改的物品:\n";
for (int i{ 0 }; i < kindlist[sel1-1].itemlist.size(); i++) {
cout << i + 1 << "." << kindlist[sel1-1].itemlist[i].itemname << " ";
}
cout << "\n请输入你的选择输入方式前的序号后按回车";
int sel2;
while (cin >> sel2) {
if (sel2 < 1 || sel2 >kindlist[sel1-1].itemlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
int j{ 1 };
cout << "1." << kindlist[sel1 - 1].itemlist[sel2-1].itemname << "\t";
for (int i{ 0 }; i < kindlist[sel1 - 1].intnum; i++) {
j++;
cout << j << "." << kindlist[sel1 - 1].itemlist[sel2-1].intentry[i] << "\t\t ";
}
for (int i{ 0 }; i <= kindlist[sel1 - 1].strnum; i++) {
j++;
cout << j << "." << kindlist[sel1 - 1].itemlist[sel2-1].strentry[i] << "\t\t ";
}
cout << endl;
cout << "请选择你要修改的内容:\n";
cout << "\n请输入你的选择输入内容前的序号后按回车";
int sel;
while (cin >> sel) {
if (sel < 1 || sel >kindlist[sel1 - 1].intnum + kindlist[sel1 - 1].strnum + 2) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel == 1)
{
cout << "你想将“" << kindlist[sel1 - 1].itemlist[sel2-1].itemname << "”修改为:";
cin >> kindlist[sel1 - 1].itemlist[sel2 - 1].itemname;
}
else if (sel > 1 && sel < kindlist[sel1 - 1].intnum + 2)
{
cout << "你想将“" << kindlist[sel1 - 1].itemlist[sel2 - 1].intentry[sel - 2] << "”修改为:";
cin >> kindlist[sel1 - 1].itemlist[sel2 - 1].intentry[sel - 2];
}
else
{
cout << "你想将“" << kindlist[sel1 - 1].itemlist[sel2-1].strentry[sel - kindlist[sel1 - 1].intnum - 2] << "”修改为:";
cin >> kindlist[sel1 - 1].itemlist[sel2 - 1].strentry[sel - kindlist[sel1 - 1].intnum - 2];
}
system("cls");
cout << "修改成功!";
itemprint(sel1 - 1,sel2-1);
cout << "\n是否继续修改 1.继续修改 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
itemamend();
else
menu(1);
}
void inventory() {
system("cls");
cout << "请选择你要查看的清单范围:\n";
cout << "1.全部\t";
for (int i{ 0 }; i < kindlist.size(); i++)
cout << i + 2 << "." << kindlist[i].kindname << "\t";
cout << "\n请输入你的选择输入选择前的序号后按回车";
int sel1;
while (cin >> sel1) {
if (sel1 < 1 || sel1 >kindlist.size()+1) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel1 == 1) {
int j{ 0 };
vector<int>jx,jy;
cout << "全部:\n";
for (int i{ 0 }; i < kindlist.size(); i++) {
for (int k{ 0 }; k < kindlist[i].itemlist.size(); k++) {
j++;
cout << " " << j << "." << kindlist[i].itemlist[k].itemname<<endl;
jx.push_back(i);
jy.push_back(k);
}
}
int sel;
system("cls");
cout << "请选择你要查看的物品\n" << "请输入你的选择(输入要查看物品前的序号):";
while (cin >> sel) {
if (sel < 1 || sel >j) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
itemprint(jx[j], jy[j]);
}
else{
cout << kindlist[sel1 - 2].kindname<<":\n";
for (int i{ 0 }; i < kindlist[sel1 - 2].itemlist.size(); i++) {
cout << " " << i + 1 << "." << kindlist[sel1 - 2].itemlist[i].itemname << endl;
}
int sel;
cout << "请选择你要查看的物品\n" << "请输入你的选择(输入要查看物品前的序号):";
while (cin >> sel) {
if (sel < 1 || sel >kindlist[sel1 - 2].itemlist.size()) {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
system("cls");
itemprint(sel1 - 2, sel - 1);
}
cout << "\n是否继续查看 1.继续查看 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
inventory();
else
menu(1);
}
void search() {
system("cls");
cout << "请输入你要查找的物品名:";
string name;
bool a = 0;
cin >> name;
for (int i = 0; i < kindlist.size(); i++) {
for (int j = 0; j < kindlist[i].itemlist.size(); j++) {
if (name == kindlist[i].itemlist[j].itemname) {
a = 1;
itemprint(i, j);
}
}
}
if (a == 0) {
cout << "\n未查找到输入的物品名";
}
cout << "\n是否继续查找 1.继续查找 2.返回菜单";
cout << "\n请输入你的选择输入方式前的序号后按回车";
string sel3;
while (cin >> sel3) {
if (sel3 != "1" && sel3 != "2") {
cout << "输入字符不合法,请重新输入你的选择:";
}
else break;
}
if (sel3 == "1")
search();
else
menu(1);
}
void readfile() {
ifstream kind12;
kind12.open("myfile.txt",ios::in);
kind12 >> password;
int kindnum;
kind12 >> kindnum;
for (int i = 0; i < kindnum; i++)
{
kind kind0;
int itemnum0;
kind12 >> itemnum0;
kind12 >> kind0.intnum;
kind12 >> kind0.strnum;
kind12 >> kind0.kindname;
for (int a = 0; a < kind0.intnum; a++)
{
string intname0;
kind12 >> intname0;
kind0.intname.push_back(intname0);
}
for (int b = 0; b <= kind0.strnum; b++)
{
string strname0;
kind12 >> strname0;
kind0.strname.push_back(strname0);
}
for (int j = 0; j < itemnum0; j++)
{
item item0;
kind12 >> item0.itemname;
for (int k{ 0 }; k < kind0.intnum; k++)
{
int intentry0;
kind12 >> intentry0;
item0.intentry.push_back(intentry0);
}
for (int h{ 0 }; h <= kind0.strnum; h++)
{
string strentry0;
kind12 >> strentry0;
item0.strentry.push_back(strentry0);
}
kind0.itemlist.push_back(item0);
}
kindlist.push_back(kind0);
}
kind12.close();
}
void writefile() {
ofstream kind22;
kind22.open("myfile.txt", ios::out);
kind22 << password << endl;
kind22 << kindlist.size()<<endl;
for (int i = 0; i < kindlist.size(); i++)
{
kind22 << kindlist[i].itemlist.size()<<endl;
kind22 << kindlist[i].intnum<<endl;
kind22 << kindlist[i].strnum<<endl;
}
for (int i = 0; i < kindlist.size(); i++)
{
kind22 << kindlist[i].kindname << endl;
for (int m = 0; m < kindlist[i].intnum; m++)
{
kind22 << kindlist[i].intname[m]<<endl;
}
for (int w = 0; w <= kindlist[i].strnum; w++)
{
kind22 << kindlist[i].strname[w]<<endl;
}
for (int j = 0; j < kindlist[i].itemlist.size(); j++)
{
kind22 << kindlist[i].itemlist[j].itemname << endl ;
for (int k{ 0 }; k < kindlist[i].intnum; k++)
{
kind22 << kindlist[i].itemlist[j].intentry[k] << endl;
}
for (int h{ 0 }; h <= kindlist[i].strnum; h++)
{
kind22 << kindlist[i].itemlist[j].strentry[h] << endl;
}
}
}
kind22.close();
}
};
int main()
{
handbook _handbook;
_handbook.readfile();
_handbook.myregister();
return 0;
}