c++程序设计中文件输入输出流知识点
生活随笔
收集整理的這篇文章主要介紹了
c++程序设计中文件输入输出流知识点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一.前言
如上
二.內(nèi)容
題目:
編寫程序?qū)崿F(xiàn)以下功能:
(1)按職工號由小到大的順序?qū)?個(gè)員工的數(shù)據(jù)(包括號碼、姓名、年齡、工資)輸出到磁盤文件中保存。
(2)從鍵盤輸入兩個(gè)員工的數(shù)據(jù)(職工號大于已有的職工號),增加到文件的末尾。
(3)輸出文件中全部職工的數(shù)據(jù)。
(4)從鍵盤輸入一個(gè)號碼,在文件中查找有無此職工號,如有則顯示此職工是第幾個(gè)
職工,以及此職工的全部數(shù)據(jù)。如沒有,就輸出“無此人”。可以反復(fù)多次查詢,如果輸入
查找的職工號為0,就結(jié)束查詢。
三.代碼
#include<iostream> #include<fstream> #include<string> #include<stdlib.h> using namespace std; typedef struct{int num;//職工號long tel;//號碼string name;//姓名int age;//年齡double wage;//工資 } Staff; //將5個(gè)員工從小到大排序,輸出到磁盤文件保存 void sort_save_file1(Staff staffs[],int n){int i;//循環(huán)變量int j;//循環(huán)變量 // int k;Staff temp;for(i=0;i<n-1;i++){//用選擇法進(jìn)行排序 for(j=i+1;j<n;j++){if(staffs[i].num>staffs[j].num){temp=staffs[i];staffs[i]=staffs[j];staffs[j]=temp; }}} ofstream outfile("C:\\Users\\17604\\Desktop\\file.data",ios::out|ios::binary);if(!outfile){cerr<<"open error!"<<endl;exit(1);}for(i=0;i<5;i++){outfile.write((char*)&staffs[i],sizeof(staffs[i]));}outfile.close(); }//輸入兩個(gè)員工數(shù)據(jù),添加到文件的末尾 void in_app_file(){Staff staffs[2];int i;//循環(huán)變量for(i=0;i<2;i++){cout<<"請輸入第"<<i+1<<"個(gè)要追加的員工的數(shù)據(jù):"<<endl;cout<<"num:"<<endl; cin>>staffs[i].num;cout<<"tel:"<<endl;cin>>staffs[i].tel ;cout<<"name:"<<endl;cin>>staffs[i].name ;cout<<"age:"<<endl;cin>>staffs[i].age ;cout<<"wage:"<<endl;cin>>staffs[i].wage ;cout<<endl; }ofstream outfile("C:\\Users\\17604\\Desktop\\file.data",ios::app|ios::binary);if(!outfile){cerr<<"open error!"<<endl;exit(1);}outfile.seekp(0,ios::end); //定位到文件末尾 for(i=0;i<2;i++){outfile.write((char*)&staffs[i],sizeof(staffs[i]));} outfile.close(); }//輸出文件中全部職工的數(shù)據(jù) void out_file(){Staff staffs[8];int i;//循環(huán)變量 ifstream infile("C:\\Users\\17604\\Desktop\\file.data",ios::in|ios::binary);if(!infile){cerr<<"open error!"<<endl;exit(1);}infile.seekg(0,ios::beg); for(i=0;i<7;i++){infile.read((char*)&staffs[i],sizeof(staffs[i]));}infile.close() ;for(i=0;i<7;i++){cout<<"NO."<<i+1<<endl;cout<<"num: "<<staffs[i].num<<endl;cout<<"tel: "<<staffs[i].tel<<endl;cout<<"name: "<<staffs[i].name<<endl ;cout<<"age: "<<staffs[i].age<<endl ;cout<<"wage: "<<staffs[i].wage<<endl ;cout<<endl;} } void query(char *filename){Staff staffs[8];int i;//循環(huán)變量 int key;//要查找的職工號 int f;//首部 int l;//尾部 int mid;//中間 bool flag=false;//查找標(biāo)志位 ifstream infile(filename,ios::in|ios::binary);if(!infile){cerr<<"open error!"<<endl;exit(1);}for(i=0;i<7;i++){infile.read((char*)&staffs[i],sizeof(staffs[i]));}infile.close() ;cout<<"你要查找第幾個(gè)職工的信息:(輸入0結(jié)束查詢):"<<endl;cin>>key;while(key!=0){//輸入0結(jié)束查詢//使用二分查找f=0;l=6;while(f<=l){mid=(f+l)/2;if(staffs[mid].num ==key){cout<<"查找成功!"<<endl;flag=true; // cout<<"NO."<<i+1<<endl;cout<<"num: "<<staffs[mid].num<<endl;cout<<"tel: "<<staffs[mid].tel<<endl;cout<<"name: "<<staffs[mid].name<<endl ;cout<<"age: "<<staffs[mid].age<<endl ;cout<<"wage: "<<staffs[mid].wage<<endl ;cout<<endl;break;}else if(key<staffs[mid].num){l=mid-1;} else{f=mid+1;}} if(flag==true){}else{cout<<"無此人!!"<<endl;}flag=false;cout<<"你要查找第幾個(gè)職工的信息:"<<endl;cin>>key;} }int main(){Staff staffs[5];int i;//循環(huán)變量 char *p="C:\\Users\\17604\\Desktop\\file.data";for(i=0;i<5;i++){cout<<"請輸入第"<<i+1<<"個(gè)員工的數(shù)據(jù):"<<endl;cout<<"num:"<<endl; cin>>staffs[i].num;cout<<"tel:"<<endl;cin>>staffs[i].tel ;cout<<"name:"<<endl;cin>>staffs[i].name ;cout<<"age:"<<endl;cin>>staffs[i].age ;cout<<"wage:"<<endl;cin>>staffs[i].wage ;cout<<endl; }sort_save_file1(staffs,5);in_app_file();out_file();query(p);return 0; }總結(jié)
以上是生活随笔為你收集整理的c++程序设计中文件输入输出流知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NVisionXR_iOS教程三 ——
- 下一篇: scrapy-redis使用以及剖析