一个用c++编的程序,有点问题想请大家指点,提前说声谢谢了
struct person{
char name[40]; //姓名
char unit[40]; //寝室号
long num; //电话号码
};
#include<iostream>
#include "sqlist.h"
#include "string.h"
#include "fstream"
#include "windows.h"
using namespace std;
struct person
{
char name[40]; //姓名
char unit[40]; //寝室号
long num; //电话号码
};
typedef person T;
void main()
{
int i;
int j;
T e;
char x[20];
long y;
sqlist<person> s(20);
上面是主函数的一部分,
我用一个顺序表来存联系人的信息,下面是类的定义
template<class T>
class sqlist
{
private:
T *elem;
int length;
int listsize;
public:
sqlist(int m);
~sqlist();
void createlist(int n); //输入
void Delete(); //删除
void name_search(char e[]);//按姓名查找
void unit_search(char e[]);//按寝室号查找
void num_search(long e); //按电话号码查找
void insert(int i,T e); //插入
void move(int a,int b); //移动:移动记录在通讯录中的存储位置
void change(int a); //修改:提供修改某条记录的功能
void display(); //显示
void save();
void read();
我第一次执行程序,建了一个通讯录,在主函数中调用下面程序,保存了信息到person.txt中,
template <class T>
void sqlist<T>::save()
{
ofstream fout("person.txt", ios::out);
if (!fout)
{
cout <<endl <<"对不起!!!打开文件失败!!!!" <<endl ;
system("pause");
return;
}
for(int i=0;i<length;i++)
{
fout<<"第"<<i+1<<"张名片"<<'\t';
fout<<elem[i].name<<'\t';
fout<<elem[i].unit<<'\t';
fout<<elem[i].num<<'\t';
fout<<endl;
}
fout.close();
}
我想等以后再次运行程序时,能把之前的信息打开并作出删除操作,但是怎么也弄不好,下面的程序段中把文件打开了,但是怎么把里面的数据弄到顺序表中呢?,要不然删除操作就实现不了
template<class T>
void sqlist<T>::Delete()
//void sqlist<T>::Delete(int i)
{
ifstream fin("person.txt", ios::in);
if (!fin)
{
cout <<endl <<"对不起!!!打开文件失败!!!!" <<endl ;
system("pause");
return;
}
//char str[40];
// for(int i=0;i<length;i++)
//{
int k;
cout<<"输入要删除位置:";
cin>>k;
T x;
if(length==0)cout<<"表空\n";
if(k<1||k>length)cout<<"删除位置异常\n";
x=elem[i-1];
for(int j=length-1;j>=k;j--)
{
elem[j-1]=elem[j];
}
length--;
fin.close();
}