标题:一个用c++编的程序,有点问题想请大家指点,提前说声谢谢了
只看楼主
石头123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-12-8
结帖率:50%
 问题点数:0 回复次数:0 
一个用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();

 
}

搜索更多相关主题的帖子: 联系人 person include long 
2012-12-22 13:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-392945-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042310 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved