| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:C++ 数构 关于编写人事档案遇到的问题
只看楼主 加入收藏
问问。问
Rank: 1
来 自:三明
等 级:新手上路
帖 子:12
专家分:4
注 册:2011-10-24
结帖率:100%
收藏
 问题点数:0 回复次数:0 
C++ 数构 关于编写人事档案遇到的问题
题目为:人才市场中有大量的人事档案,档案号从1开始。暂时没有找到就业岗位的毕业生档案要放入这里,从单位辞职的人档案要放入这里。就业后,档案就要调到单位所在的人才管理处。管理档案的主要操作是:
L:当前有多少档案;
Q N:查询档案是N的人是否有档案在,有输入他的信息;没有就输出“Can‘t  find”
G M:取走M号人的档案;
I M:插入M号人的档案;
O:输出档案库的信息。
Input
先输入一个正整数T表示有T个地方的人事档案。每处的档案输入第一行是一个正整数k表示现有k个人的档案,接着K行,每行是一个人的信息No、Name、Sex、University、Major,分别表示档案号、姓名、性别、毕业学校、专业。然后输入一个正整数m表示有m个问题,这些问题就上面列的L、Q、G、I、O。假设档案号是从小到大排列。

我遇到的问题是:
程序执行时插入5组数据,删除一个数据,又插入了个数据,长度应该是5,但是运行结果长度是4,输出时我最后插入的那组数据也没有显示出来,请大家帮忙看下是哪里出错了,谢谢!


#include <iostream>
using namespace std;

class People
{
public:
  int  no;
  char sex;
  char name[10];
  char university[20];
  char major[20];
};

template <class T>
class LinearList
{
public:
    virtual int  Search(T x)const=0;
    virtual bool Insert(int i,T x)=0;
    virtual bool Insert(T x)=0;
    virtual bool Delete(T x)=0;
    virtual int  Length()const=0;
    virtual void Output(ostream & out)const =0;
protected:
    int n;
};

template <class T>
class SeqList:public LinearList<T>
{
public:
    SeqList(int msize);
    ~SeqList();
    int  Length()const;
    int  Search(T x)const;
    bool Delete(T x);
    bool Insert(T x);
    bool Insert(int i,T x);
    void Output(ostream & out)const;
private:
    int maxLength;
    T *elements;
};


template <class T>
SeqList<T>::SeqList(int msize)
{
 maxLength=msize;
 elements=new T[maxLength];
 n=0;
}

template <class T>
SeqList<T>::~SeqList()
{
 delete []elements;
}

template <class T>
bool SeqList<T>:: Delete(T x)
{
  if(!n)
  {
   return false;
  }
  for(int i=0;i<n;i++)
  {
   if(elements[i].no==x.no)
   {
       break;
   }
  }
  if(i<0||i>n-1)
  {
   return false;
  }
  for(int j=i+1;j<n;j++)
  {
   elements[j-1]=elements[j];
  }
   n--;
   return true;  
}

template <class T>
SeqList<T>::Length()const
{
 return n;
}


template <class T>
bool SeqList<T>::Insert(T x)
{   
    for(int i=0;i<n;i++)
    {
      if(elements[i].no<=x.no)
      {
        i++;
        break;
      }
    }
    if(i<-1||i>n - 1)
    {
       return false;
    }
    if(n==maxLength)
    {
       return false;
    }
    for(int j=n-1;j>i;j--)
    {
       elements[j+1]=elements[j];
    }
     elements[i+1]=x;
     n++;
     return true;
}

template <class T>
bool SeqList<T>::Insert(int i,T x)
{
  if(i<-1 ||i>n-1)
  {
    return false;
  }
  if(n==maxLength)
  {
   return false;
  }
  for(int j=n-1;j>i;j--)
  {
   elements[j+1]=elements[j];
  }

  elements[i+1]=x;
  n++;
  return true;

}

template <class T>
int SeqList<T>::Search(T x)const
{

    int s;
  for(int j=0;j<n;j++)
  {
   if(elements[j].no==x.no)
   {
       s=1;
      break;
   }
  }
  if(s!=1)
  {
   cout<<"Can't find"<<" "<<elements[j].no<<endl;
  }
  else
       cout<<elements[j].no<<" "<<elements[j].name<<" "<<elements[j].sex<<" "<<elements[j].university<<" "<<elements[j].major<<endl;
  return 0;

}


template <class T>
void SeqList<T>:: Output(ostream & out)const
{out<<"Show All Files:"<<endl;
 for(int i=0;i<n;i++)
 {
     
  out<<elements[i].no<<" "<<elements[i].name<<" "<<elements[i].sex<<" "<<elements[i].university<<" "<<elements[i].major<<endl;
 }
}


const int SIZE=20;

void main()
{
 SeqList<People> LA(SIZE);
 People p[SIZE],p1;

 int t;
  while(cin>>t)
 {
     int k,h;
     cin>>k;
     for(int z=0;z<k;z++)
     {
      cin>>p[z].no>>p[z].name>>p[z].sex>>p[z].university>>p[z].major;
     }
     for(int i=0;i<k;i++)
     {
        LA.Insert(i-1,p[i]);
     }
     cin>>h;
     cout<<"Case "<<t<<":"<<endl;
     for(int j=0;j<h;j++)
     {
      char m;
     cin>>m;
     
       switch(m)
       {
       case'L':cout<<"L="<<LA.Length()<<endl;break;
       case'Q':cin>>p1.no;LA.Search(p1);break;
       case'G':cin>>p1.no;LA.Delete(p1);break;
       case'I':cin>>p1.no>>p1.name>>p1.sex>>p1.university>>p1.major;LA.Insert(p1);break;
       case'O':LA.Output(cout);break;
       default:cout<<"error"<<endl;
       }
     }
 }
}
搜索更多相关主题的帖子: 人事 信息 毕业生 正整数 
2011-11-13 17:19
快速回复:C++ 数构 关于编写人事档案遇到的问题
数据加载中...
 
   



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

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