资源简介

完成功能: (1)从文件读取职工信息 (2)能插入新员工的信息并保存到原来的文件中 (3)能从键盘输入员工信息并将其与原有的信息合并(把产品数相加)存储到原文件中 (4)能从键盘输入所有职工信息并将其与原有的信息合并(产品数相加)将结果输出到屏幕的同时保存到原文件中去。 (5)输出所有员工的排名:系统按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。

资源截图

代码片段和文件信息

#include
#include
#include
#include 
using namespace std;
struct Node
 {int    num;
  string name;
  char   sex;
  int    product;
  Node   *next;
 };
typedef Node* NodePtr;
int main()
{char n; 
 do{ 
    struct Node *IN_PUT(); //用于从文件内读出数据
void New_producter(struct Node *head); //用于建立并输入新来员工信息并将结果输出到文件
    void IN_PUT_INFORM(struct Node *head); //用于输入员工工作量并将结果输出到文件
    void SCANF_INFORM(struct Node *head); //输入员工信息并浏览所有员工信息
    void RANKING(struct Node *head); // 将员工按产品数从大到小(若产品数相等时按工号从小到大排)排,并输出名次,同一名次的输出人数
    NodePtr heada;
    int x; 
    
    head=IN_PUT();
    cout<<“当前文件中职工的信息为:“<    a=head;
    do{cout<num<<“  “;
      cout<name;
      cout<<“  “<sex<<“  “<product<      a=a->next;
       }while(a!=NULL);  

     cout<<“a.新来职工信息登记请按1.\n“
         <<“b.职工工作量信息输入请按2.\n“
         <<“c.职工信息输入并浏览请按3.\n“
         <<“d.查看职工排名请按4.“<     cin>>x;
     switch(x)
        { case 1:New_producter(head);break;
          case 2: IN_PUT_INFORM(head);break;
          case 3:SCANF_INFORM(head);break;
          case 4:RANKING(head);break;
          default:break;
        }
     cout<<“是否继续其他操作?继续(y/Y)退出按任意键!“ <     cin>>n; 
   }while(n==‘y‘||n==‘Y‘); 
  return 0;
}

struct Node *IN_PUT() //从文件读入数据进入链表
      { NodePtr PtrPQheadR;
       ifstream in_stream; 
       head=new Node;
       head->next=NULL;
       P=Q=head;
       int  i;      //i控制数组变量
       char NAME[30];
       for(i=0;i<30;i++){NAME[i]=‘ ‘;} NAME[--i]=‘\0‘; //数组结束必须是以“\0”结尾
       i=0;
       in_stream.open(“in_file.txt“);
       if(in_stream.fail())
          {cout<<“Input file opening failed.“<           exit(1);
          }
       in_stream>>head->num;
        
        in_stream>>NAME[i];   //输入姓名-
       while(NAME[i]!=‘ ‘)
           { i++;
             in_stream.get(NAME[i]); //用get()函数可以读取空格等字符
           } //while
          
       head->name=NAME;
      
       in_stream>>head->sex>>head->product;
      if(head->product<0) 
          { cout<<“文件中有的产品数不能为负数!“<        exit(0);
           }       
 
        
        do{ Ptr=new Node;
             Ptr->next=NULL;
             in_stream>>Ptr->num;
             
        for(i=0;i<30;i++){NAME[i]=‘ ‘;}//从新对数组进行初始化,把上次在数组中的内容去掉
        NAME[--i]=‘\0‘; //数组结束必须是以“\0”结尾
        i=0;
        in_stream>>NAME[i];   //输入姓名-
       while(NAME[i]!=‘ ‘)
           { i++;
             in_stream.get(NAME[i]);
           } //while
        
       Ptr->name=NAME;
             
             in_stream>>Ptr->sex>>Ptr->product;
             if(Ptr->product<0&&(!in_stream.eof()))              // ------------------------------------------------
                {cout<<“文件中产品数不能为负数!“<            exit(0);
                } 
             do{if(Ptr->num==Q->num)
                 {cout<<“文件中职工号重复!“<                  exit(0);
             

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     395776  2009-09-24 13:22  职工工作量统计实验报告.doc

     文件        126  2009-09-22 16:12  in_file.txt

     文件      21166  2009-09-23 12:09  职工工作量统计.cpp

----------- ---------  ---------- -----  ----

               417068                    3


评论

共有 条评论