資源簡介
完成功能:
(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
- 上一篇:NSG2及使用方法
- 下一篇:USB HUB usb分線器 電路原理圖
評論
共有 條評論