请各位大神帮忙查看一下程序有什么错误

炸鸡叔GUS 2015-01-11 03:50:26
/////////////////////////////////////////////////////头文件定义类和结构体/////////////////////////////////////////
#ifndef tongxunlu_h
#define tongxunlu_H
#include <iostream>
#include <iomanip>
using namespace std;

struct Bir
{
int year;
int month;
int day;
};

struct Stu
{
char *name;
char *sex;
char *address;
int code;
int age;
int number;
int QQ;
char *wechat;
struct Bir birthday;
};

template <class DT>
struct Node
{
DT data;
Node<DT> *next;//*piror;
};

template <class DT>
class Student
{
private:
int length;
Node<DT> *first;
public:
Student();
void Init(); //输入n个学生数据
void Insert(); //在表中s的位置插入x
void Find_Loc(); //在表中查找序号为i的元素
void Find_Val(); //在表中查找值与x相等的元素
void Del(); //在表中删除序号为s的元素
void Destroy(); //删除成绩表
void Show(); //把表中所有元素打印出来
void Choice_menu();

};

#endif

///////////////////////////////////////////定义成员函数///////////////////////////////////////
#include "tongxunlu.h"
#include <iostream>
#include <iomanip>
using namespace std;


template <class DT>
Student<DT>::Student()
{
first = new Node<DT>;
first->next = NULL;
length = 0;
}

template <class DT>
void Student<DT>::Init()
{
cout << "\n欢迎来到输入记录界面\n" << endl;
int n = 0;
Node<DT> *p, *q;
q = first;
if (first->next != NULL)
first->next = NULL;
cout << "请设置你要输入的同学的数目:";
cin >> n;
for (int i = 0; i < n; i++)
{

p = new Node<DT>;
cout << "\n请输入第" << i + 1 << "位同学的信息:"<<endl;
cout<<"名字 性别 住址 邮编 年龄 电话 QQ 微信 生日:"<<endl;
cin >> p->data.name>>p->data.sex>>p->data.address>>p->data.code>>p->data.age>>p->data.number>>p->data.QQ>>p->data.wechat>>p->data.birthday.year>>p->data.birthday.month>>p->data.birthday.day;
q->next = p;
q = p;
q->next = NULL;
length++;
}
cout << "\n同学信息输入完毕." << endl;
cout << "\n";
this->Show();
system("pause"); //暂停
system("cls"); //清屏
}

template <class DT>
void Student<DT>::Insert()
{
cout << "\n欢迎来到插入记录界面\n" << endl;
this->Show();
int s;
Node<DT> *p, *t;
p = first;
cout << "请输入你想要插入同学记录的位置:";
cin >>s;
while (s <= 0 || s > length + 1)
{
cout << "\n插入的位置不正确,请重新输入一个正确的位置:";
cin >> s;
}
for (int i = 0; i < s - 1; i++)
p = p->next;
t = new Node<DT>;
cout << "\n请输入你想插入的同学信息(用空格号隔开):";
cin>> p->data.name>>p->data.sex>>p->data.address>>p->data.code>>p->data.age>>p->data.number>>p->data.QQ>>p->data.wechat>>p->data.birthday.year>>p->data.birthday.month>>p->data.birthday.day;
t->next = p->next;
p->next = t;
length++;
cout << "\n同学记录插入完毕." << endl;
cout << "\n";
this->Show();
system("pause");
system("cls");
}

template <class T>
void Student<T>::Find_Loc()
{
cout << "\n欢迎来到按系统默认编号查找界面\n" << endl;
this->Show();
int s;
Node<T> *p;
p = first;
cout << "请输入你想要查找的同学记录的位置:";
cin >> s;
while (s <= 0 || s > length)
{
cout << "\n你输入的编号有误,请重新输入一个正确的编号:";
cin >> s;
}
for (int i = 0; i < s; i++)
p = p->next;
cout << "\n你想要查找的同学信息为:";
cout <<p->data.name<<setw(6)<< endl;
cout << "查找完毕." << endl;
system("pause");
system("cls");

}

template <class DT>
void Student<DT>::Find_Val()
{
cout << "\n欢迎来到按同学信息查找界面\n" << endl;
bool t = false;
int i = 1;
Node<DT> *p;
p = first->next;
int x;
cout << "请输入想要查找的号码:";
cin >> x;
while (p != NULL)
{
if (x == p->data.number)
{
cout << "\n你查找的号码的同学名为:" << p->data.name << endl;
t = true;
}
p = p->next;
i++;
}
if (t == false)
cout << "\n没有符合条件的同学记录." << endl;
system("pause");
system("cls");
}

template <class DT>
void Student<DT>::Del()
{
cout << "\n欢迎来到删除记录界面\n" << endl;
this->Show();
int s;
Node<DT> *p, *q;
p = first;
cout << "请输入你想要删除的同学的位置为:";
cin >> s;
while (s <= 0 || s > length)
{
cout << "\n你输入的同学位置有误,请重新输入一个正确的同学位置:";
cin >> s;
}
for (int i = 0; i < s - 1; i++)
p = p->next;
q = p->next;
p->next = q->next;
cout << "\n你删除的同学为:";
cout << q->data.name<<setw(6)<< endl;
delete q;
length--;
cout << "\n删除完毕." << endl;
cout << "\n";
this->Show();
system("pause");
system("cls");
}

template <class DT>
void Student<DT>::Destroy()
{
Node<DT> *p, *q;
p = first;
q = p;
for (int i = 0; i < length; i++)
{
q = q->next;
delete p;
p = q;
}
length = 0;
cout << "\n记录表清空完毕.\n" << endl;

}


template <class DT>
void Student<DT>::Show()
{
if (first->next == NULL)
{
cout << "\n记录表里数据为空,显示操作失败!!";
return;
}


Node<DT> *p;

p = first->next;
cout << "\n记录表中同学信息为:" << endl;
while (p != NULL)
{
cout<<"同学名字:"<<p->data.name<<setw(10)<< "号码:"<< p->data.number<<endl;
p = p->next;
}
cout << endl;
cout << "\n\n";
}


template <class DT>
void Student<DT>::Choice_menu()
{
int ch;
cout << " ";
cout << " ";
cout << " 同学信息管理 ";
cout << " ";
cout << " ";
cout << " 1. 输 入 记 录 ";
cout << " 2. 插 入 记 录 ";
cout << " 3. 按系统默认编号查找 ";
cout << " 4. 按同学号码查找 ";
cout << " 5. 删 除 记 录 ";
cout << " 6. 清 空 记 录 ";
cout << " 0. 退 出 ";
cout << " ";
cout << " ";
cout << " ";
cout << " ";
cout << " ";
cout << "请选择你要执行的选项:";
cin >> ch;
while (ch != 1 && ch != 2 && ch != 3 && ch != 4 &&ch != 5 &&ch != 6 &&ch != 0)
{
cout << "\n没有该选项,请重新选择." << endl;
cout << "\n请选择你要执行的选项:";
cin >> ch;
}
switch (ch)
{
case 1:
system("cls");
this->Init();
break;
case 2:
system("cls");
this->Insert();
break;
case 3:
system("cls");
this->Find_Loc();
break;
case 4:
system("cls");
this->Find_Val();
break;
case 5:
system("cls");
this->Del();
break;
case 6:
system("cls");
this->Destroy();
break;
case 0:
cout << "\n 感谢您的使用!\n" << endl;
exit(EXIT_FAILURE); //用于退出操作
}
}

//////////////////////////////////////////////////主函数////////////////////////////////////
#include "tongxunlu.cpp"
#include <iostream>
using namespace std;

int main()
{
Student<Stu> ss;
while(1)
ss.Choice_menu();
return 0;
}

调试发现程序没有问题,但总是运行后出现appcrash的错误,到底是怎么回事呢??
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
12304108 2015-03-31
  • 打赏
  • 举报
回复
及时结贴啊。。。
jacksonfan 2015-01-12
  • 打赏
  • 举报
回复
论坛首页-左边“我的论坛”-“我的未结帖子”
炸鸡叔GUS 2015-01-12
  • 打赏
  • 举报
回复
楼上是正确的,请问怎么采纳答案?
jacksonfan 2015-01-11
  • 打赏
  • 举报
回复

void Student<DT>::Init()  
{  
	cout << "\n欢迎来到输入记录界面\n" << endl;  
	int n = 0;  
	Node<DT> *p, *q;  
	q = first;  
	if (first->next != NULL)  
		first->next = NULL;  
	cout << "请设置你要输入的同学的数目:";  
	cin >> n;  
	for (int i = 0; i < n; i++)  
	{  
		p = new Node<DT>;
		p->data.name = new char[20];//结构体中的指针都要初始化

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧