C++面向对象程序设计实践——任务与指导书(2)

实验3:类与对象(二)

  1. 目的
    (1)掌握类的概念和定义方法;
    (2)掌握对象的定义方法和类成员的表示方法;
    (3)加深理解构造函数和析构函数的概念、作用及构造方法;
    (4)加深理解静态数据成员与成员函数的概念及使用;
    (5)加深理解对象成员的概念及使用;
    (6)熟练掌握复杂程序的面向对象程序设计方法。
  2. 步骤
    对于任务中的每个问题,分析并设计解题思路,编制程序,通过观察和调试工具纠错,运行得到正确结果。
  3. 内容:

基本问题程序设计2
最小数量要求:题1必做,题2~题4选一。

3.1

电子时钟类:
设计编写一个电子时钟类ElectronicClock,包含年、月、日、时、分、秒等属性。电子时钟类由时间类和日期类组合而成,实现并测试这个类。
类中包括的成员函数(要完成操作)有:
(1)构造函数;
(2)析构函数;
(3)对时间与日期进行校验的函数,当不正确时进行纠正与改错;
(4)对年、月、日、时、分、秒等属性进行增加n个单位的函数。
提示:
(1)对年、月、日、时、分、秒等属性进行增加n个单位,要注意不要超出范围,进行进位;
(2)电子时钟类有日期类与时间类组合而成。

#include
using namespace std;
class date
{
     
public:
	int year,month,day;
	date(int a,int b,int c):year(a),month(b),day(c){
     }
	friend void data_check();
	friend void data_display();    //友元函数的作用就是提供直接访问对象的私有成员的接口 
	friend void data_add();        //由于显示,添加等功能都需要用到两个类的成员变量,所以使用友元函数 
};
class time
{
     
public:
	time(int x,int y,int z):hour(x),min(y),sec(z){
     }
	friend void data_check();
	friend void data_display();
	friend void data_add(int a1,int a2,int a3,int a4,int a5,int a6);
	int hour,min,sec;
};
void data_check(date &m,time &n)
{
     
	int c1,c2,c3,c4,c5;
	int max;
	while(c1||c2||c3||c4||c5)   //原理:如果在检查某项时出现了错误,继续循环 
	{
     
		if(n.sec>=60){
     n.sec-=60;n.min++;c1=1;}else{
     c1=0;}
		if(n.min>=60){
     n.min-=60;n.hour++;c2=1;}else{
     c2=0;}                                                                                                                                                                                                                                                                                       
		if(n.hour>=24){
     n.hour-=24;m.day++;c3=1;}else{
     c3=0;} 
		if(m.month>12){
     m.month-=12;m.year++;c4=1;}else{
     c4=0;} 
		switch(m.month)
		{
     
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:max=31;break;
		case 4:
		case 6:
		case 9:
		case 11:max=30;break;
		case 2:if(m.year%4!=0||(m.year/100)%4!=0){
     max=29;}else{
     max=28;}break;
	}
		if(m.day>max){
     m.day-=max;m.month++;c5=1;}
		else{
     c5=0;}	
	}
}
void data_display(date &m,time &n)
{
     
	cout<<"当前时间为:\n"<<m.year<<"-"<<m.month<<"-"<<m.day<<"\n"<<n.hour<<":"<<n.min<<":"<<n.sec<<endl;
}
void data_add(date &m,time &n,int a1,int a2,int a3,int a4,int a5,int a6)
{
     
	m.year+=a1;m.month+=a2;m.day+=a3;
	n.hour+=a4;n.min+=a5;n.sec+=a6;
	data_check(m,n);
}
int main()
{
     
	int p1,p2,p3,p4,p5,p6;
	int x1,x2,x3,x4,x5,x6;
	cout<<endl;
cout<<"    ._________________.    "<<endl
<<"    | _______________ |    "<<endl
<<"    | I             I |    "<<endl
<<"    | I    日历     I |    "<<endl
<<"    | I_____________I |    "<<endl
<<"    !_________________!    "<<endl
<<endl
<<"输入当前年-月-日  时:分:秒"<<endl;
	cin>>p1>>p2>>p3>>p4>>p5>>p6;
	date d(p1,p2,p3);
	time t(p4,p5,p6);
	data_check(d,t);
	data_display(d,t);
	while(1)
	{
     
		cout<<endl; 
		cout<<"输入添加量:年-月-日   时:分:秒"<<endl;
		cin>>x1>>x2>>x3>>x4>>x5>>x6;
		data_add(d,t,x1,x2,x3,x4,x5,x6);
		data_display(d,t);
	}
	return 0;
}	

3.2

图书管理系统
图书管理系统是对学生信息和图书信息进行管理,学生基本信息包括学号,姓名,院系,最大借阅图书数量属性,图书基本信息中包括图书号,书名,作者,出版社,图书数量属性,要求输入、输出、修改、查询、删除以上信息功能, 实现并测试这个类。
类中包括的成员函数(要完成操作)有:
(1)添加学生信息函数;
(2)修改学生信息函数;
(3)删除学生信息函数;
(4)查看学生信息函数;
(5)查看学生自己借阅的数目信息函数;
(6)添加图书信息函数;
(7)修改图书信息函数;
(8)删除图书信息函数;
(9)查看图书信息函数。
提示:
(1)如果某个学生退学,就要清除他的信息;
(2)查看学生的信息和查看图书的信息两个功能基本相似;
(3)必须包括构造函数和析构函数;
(4)学生和图书的编号从1开始自动排序,由系统自动获取(用静态成员实现);

#include
#include
#include  
using namespace std;
class student
{
     
protected:
    int num1,max;              
    static int number1;
    string name1,academy;
public:
    student()
    {
     
        num1=0;
        name1="z";
        academy="z";
        max=0;
    }
    void addstudent();              //添加 
    void changestudent();           //更改 
    void clearstudent();            //删除 
    void searchstudent();           //搜索 
    void searchmax();               //借阅数目 
};
int student::number1=1;
student *s[100];
int k=1;
void student::addstudent()        //添加学生 
{
     
    s[k]=new student;
    cout<<"输入学生姓名_院系_最大借阅图书数量"<<endl;
    s[k]->num1=number1;
    number1++;
    cin>>s[k]->name1>>s[k]->academy>>s[k]->max;
    k++;
}
void student::changestudent()       //修改学生 
{
     
    cout<<"输入学生学号:"<<endl;
    int i;
    cin>>i;
    cout<<"输入学生姓名_院系_最大借阅图书数量:"<<endl;
    cin>>s[i]->name1>>s[i]->academy>>s[i]->max;
}
void student::clearstudent()     //删除学生 
{
     
    cout<<"输入学生学号:"<<endl;
    int i;
    cin>>i;
    delete s[i];
}
void student::searchstudent()     //搜索学生 
{
     
    cout<<"输入学生学号:"<<endl;
    int i;
    cin>>i;
    cout<<"学号:"<<s[i]->num1<<endl;
    cout<<"姓名:"<<s[i]->name1<<endl;
    cout<<"院系:"<<s[i]->academy<<endl;
    cout<<"最大借阅图书数量:"<<s[i]->max<<endl;
}
void student::searchmax()         //借阅数目 
{
     
    cout<<"输入学生学号:"<<endl;
    int i;
    cin>>i;
    cout<<"剩余借阅量:"<<endl;
    cout<<s[i]->max<<endl;
}

class book
{
     
protected:
    int num2,sum;
    static int number2;
    string writer,name2,publish;
public:
    book()
    {
     
        num2=0;
        sum=0;
        writer="0";
        name2="0";
        publish="0";
    }
    void addbook();
    void changebook();
    void clearbook();
    void searchbook();
};
int book::number2=1;
int z=1;
book *a[100];
void book::addbook()                     //添加 
{
     
    a[z]=new book;
    cout<<"输入书名 作者 出版社 图书数量"<<endl;
    a[z]->num2=number2;
    number2++;
    cin>>a[z]->name2>>a[z]->writer>>a[z]->publish>>a[z]->sum;
    z++;
}
void book::changebook()                   //修改 
{
     
    int j;
    cout<<"输入图书号"<<endl;
    cin>>j;
    cout<<"输入书名 作者 出版社 图书数量"<<endl;
    cin>>a[j]->name2>>a[j]->writer>>a[j]->publish>>a[j]->sum;
}
void book::clearbook()       // 
{
     
    cout<<"输入图书号"<<endl;
    int j;
    cin>>j;
    delete a[j];
}
void book::searchbook()       //搜索 
{
     
    cout<<"输入图书号"<<endl;
    int j;
    cin>>j;
    cout<<"书名:"<<a[j]->name2<<endl;
    cout<<"作者:"<<a[j]->writer<<endl;
    cout<<"出版社:"<<a[j]->publish<<endl;
    cout<<"图书数量:"<<a[j]->sum<<endl;
}
    int main()
    {
     
        student s;
        book n;
        while(1)
        {
     
        int m;
cout<<endl;
cout<<"    ._________________.    "<<endl
<<"    | _______________ |    "<<endl
<<"    | I             I |    "<<endl
<<"    | I图书管理系统 I |    "<<endl
<<"    | I_____________I |    "<<endl
<<"    !_________________!    "<<endl
<<endl<<"   (1) 添加学生信息          "<<endl 
<<"   (2) 修改学生信息            "<<endl
<<"   (3) 删除学生信息            "<<endl
<<"   (4) 查看学生信息              "<<endl
<<"   (5) 查看学生借阅数目            "<<endl 
<<"   (6) 添加图书信息            "<<endl
<<"   (7) 修改图书信息            "<<endl
<<"   (8) 删除图书信息            "<<endl
<<"   (9) 查看图书信息            "<<endl
<<endl
<<"    选择 :" ;
        cin>>m;
        switch(m)
        {
     
        case 1:
        {
     
            s.addstudent();
            system("cls");                     //清屏操作 
            break;
        }
        case 2:
        {
     
            s.changestudent();
            break;
        }
        case 3:
        {
     
            s.clearstudent();
            break;
        }
        case 4:
        {
     
            s.searchstudent();
            break;
        }
        case 5:
            {
     
                s.searchmax();
                break;
            }
       case 6:
            {
     
                n.addbook();
                system("cls");                     //清屏操作 
                break;
            }
        case 7:
            {
     
                n.changebook();
                break;
            }
        case 8:
            {
     
                n.clearbook();
                cout<<"删除成功!"<<endl;
                break;
            }
        case 9:
            {
     
                n.searchbook();
                break;
          }  } }
    return 0;
}

3.3

学生成绩信息类
编写一个学生成绩信息类,包含的数据由学号、姓名、程序设计课程设计成绩、计算机网络课程成绩、数据库课程成绩。实现并测试这个类。
类中包括的成员函数(要完成操作)有:
(1)查询学生成绩函数;
(2)修改学生成绩函数;
(3)添加学生信息函数;
(4)删除学生信息函数;
提示:
(1)学生的学号从1开始自动排序,由系统自动获取(用静态成员实现);
(2)对系统进行测试,测试方法是输入5名学生的成绩信息,显示三门课程总分从高到低的排名和每门成绩都大于85分的学生名单。

#include
#include
#include
#include
#include
#include
using namespace std;
class stu
{
     
public:
    stu ();         //构造函数
    void show();        //显示学生信息
    char num[20];
    char name[20];
    char score1[10];
    char score2[10];
    char score3[10];
public:
    stu *next;
    static int Count ;  //记录创建个数
    int w ;             //存储创建次序
};  

int stu :: Count = 1 ;

stu::stu()              
{
     
    cout<<"请输入第"<<Count<<"个学生的信息:"<<endl;
    cout<<"姓名 =";
    cin>>name;
    cout<<"学号 = ";
    cin>>num;
    cout<<"程序设计成绩 =";
    cin>>score1; 
    cout<<"计算机成绩=";
	cin>>score2;
	cout<<"数据库成绩=" ;
	cin>>score3;
    w = Count;
    Count++;

}

void stu::show()
{
     
    cout<<"第"<<w<<"个学生的信息为:"<<endl;
    cout<<"姓名 ="<<name<<endl;
     cout<<"学号 ="<<num<<endl;
      cout<<"程序设计成绩 ="<<score1<<endl;
        cout<<"计算机成绩="<<score2<<endl;
		cout<<"数据库成绩="<<score3<<endl;

}

stu *create()                     //创建输入第一个信息
{
     
    stu *head, *tail, *New;
        cout<<"按任意键开始输入:"<<endl;
        getch();
        New = new stu;          
        head = tail = New;
        tail->next = 0;         
        system("cls");
        cout<<"录入完成!!!按任意键进入系统···"<<endl;
        getch();
        system("cls");
        return head;

}


stu *chazhao(stu *head)    //查找修改模块
{
     
    fflush(stdin);
    cout<<"(1)按学号查找\n(2)姓名查找 "<<endl
        <<"输入查找方式 :";
    int chance;
    cin>>chance;
    
switch (chance)
    {
     
    case 1:
        {
            char Num[20];
                int chance;
                cout<<"要查找学生的学号为:";
                cin>>Num;
                stu *p = head;
                for (p ; p ; p = p->next)
                {
     
                    if (strcmp(p->num , Num) == 0)
                    {
     
                        p->show();
                        cout<<endl;

                        cout<<"是否修改数据?Yes 1 No 0"<<endl;
                       
                        cin>>chance;

                        if (chance)
                        {
     
                            cout<<"新学号为:";
                            cin>>p->num;
                            cout<<"修改姓名为:";
                            cin>>p->name;
                            cout<<"修改成绩为:";
                            cin>>p->score1;
                            cout<<"修改成功!"<<endl;
                            cout<<"按任意键继续···"<<endl;
                            getch();
                            return head;
                        }
                        else
                        {
     
                            return head;
                        }
                    }               
                }
                return head;
         }
    case 2:     
        {
     
                char Name[20];
                int chance;
                cout<<"要查找学生的姓名为:";
                cin>>Name;
                stu *p = head;
                for ( ; p ; p = p->next)
                {
     
                    if (strcmp(p->name,Name) == 0)
                    {
     
                        p->show();
                        cout<<endl;

                        cout<<"是否修改数据?Yes 1 No 0"<<endl;

                        cin>>chance;

                        if (chance)
                        {
     
                            cout<<"新学号为:";
                            cin>>p->num;
                            cout<<"修改姓名为:";
                            cin>>p->name;
                            cout<<"修改成绩为:";
                            cin>>p->score1;
                            cout<<"修改成功!"<<endl;
                            cout<<"按任意键继续···"<<endl;
                            getch();
                            return head;
                        }
                        else
                        {
     
                            return head;
                        }
                    }
                }
            return head;
        }
    }

}


stu *bianli(stu *head)          //遍历信息
{
     
    stu *p = head; 
	int i = 1;
    for (i; i++ ; i =! p->next)
    {
     
        p->show();
        cout<<endl;
    }
    cout<<"按任意键继续···"<<endl;
    getch();
    return head;
}



stu *tianjia(stu *head)         //添加信息
{
     
    int flag;
    cout<<"插入到第几个位置:";
    fflush(stdin);
    cin>>flag;
    stu *p = head;
   
    if (flag == 1)
    {
            
        stu *New = new stu;
        New->next = head;
        cout<<"添加成功!!"<<endl;
        return New;
    }
    else
    {
     
        int i = 1;
        while(i < flag - 1)
        {
     
            p = p->next;
            ++i;
        }
        stu *New = new stu;
        New->next = p->next;
        p->next = New;
        cout<<"添加成功!!"<<endl;
        cout<<"按任意键继续···"<<endl;
        getch();
        return head;

    }       

        for ( int i = 1 ;i == (flag - 1);  p = p->next,++i)
        {
            
            stu *New = new stu;
            New->next = p->next;
            p->next = New;
            cout<<"添加成功!!"<<endl;
            cout<<"按任意键继续···"<<endl;
            getch();
            return head;        
        }
}

stu *shanchu(stu *head)             //删除模块
{
      
    int chance;
    system("cls");
    fflush(stdin);
    cout<<"删除操作:"<<endl
        <<"(1)按学号查找\n(2)姓名查找 "<<endl
        <<"输入查找方式 :";
        
    cin>>chance;
switch (chance)
    {
     
    case 1:
             {
     
                char Num[20];
                int chance;
                cout<<"要删除学生的学号为:";
                cin>>Num;
                stu *p = head;
                int count = 1;
                for (p ; p ;p = p->next, count++)
                {
      
                    if (strcmp(p->num , Num) == 0)
                    {
     
                        p->show();
                        cout<<endl;

                        cout<<"是否删除数据?Yes 1,No 0"<<endl;
                        cin>>chance;

                        if (chance)
                        {
     
                            if (p->next == 0)       //删除的为最后一个节点
                            {
     
                                int i = 1;
                                p= head;                
                                while (i < count - 1)
                                {
     
                                    p = p->next;
                                    i++;
                                }
                            //  delete p->next; 
                                p->next = NULL;
                                stu::Count--;
                                cout<<"删除成功!最后一个"<<endl;
                                cout<<"按任意键继续···"<<endl;
                                getch();
                                return head;
                            }
                            else if (p == head)         //删除的第一个节点
                            {
     
                                stu *node = p->next;
                                delete p;
                                stu::Count--;
                                cout<<"删除成功!第一个节点"<<endl;
                                cout<<"按任意键继续···"<<endl;
                                getch();
                                return node;
                            }
                            else                    //删除中间节点
                            {
     
                                stu *node = p->next;
                                strcpy(p->num ,node->num);
                                strcpy(p->name ,node->name);
                                strcpy(p->score1,node->score1);
                                p->w =node->w;

                                p->next = node->next;
                                delete node;
                                stu::Count--;
                                cout<<"删除成功!中间节点"<<endl;
                                cout<<"按任意键继续···"<<endl;
                                getch();
                                return head;

                            }
                        }
                        else
                        {
     
                            return head;
                        }
                    }               
                }
                return head;
             }
    case 2:
        {
     
        char Name[20];
        cout<<"要删除学生的学生姓名为:";
        cin>>Name;
        stu *p = head;
        int count = 1;
        for (p ; p ; p = p->next, count++)
        {
     
            if (strcmp(p->name ,Name) == 0)
            {
     
                p->show();
                cout<<endl;

                cout<<"是否删除数据?Yes 1,No 0"<<endl;

                int chance;
                cin>>chance;

                if (chance)
                {
     
                    if (p->next == 0)       //删除的为最后一个节点
                    {
     
                        int i = 1;
                        p= head;                
                        while (i < count - 1)
                        {
     
                            p = p->next;
                            i++;
                        }
                    //  delete p->next; 
                        p->next = NULL;
                        stu::Count--;
                        cout<<"删除成功!最后一个"<<endl;
                        cout<<"按任意键继续···"<<endl;
                        getch();
                        return head;
                    }
                    else if (p == head)         //删除的第一个节点
                    {
     
                        stu *node = p->next;
                        delete p;
                        stu::Count--;
                        cout<<"删除成功!第一个节点"<<endl;
                        cout<<"按任意键继续···"<<endl;
                        getch();
                        return node;
                    }
                    else                    //删除中间节点
                    {
     
                        stu *node = p->next;
                        strcpy(p->num ,node->num);
                        strcpy(p->name ,node->name);
                        strcpy(p->score1,node->score1);

                        p->next = node->next;
                        delete node;
                        stu::Count--;
                        cout<<"删除成功!中间节点"<<endl;
                        cout<<"按任意键继续···"<<endl;
                        getch();
                        return head;

                    }
                }
                else
                {
     
                    return head;
                }
            }               
        }
        return head;
        }
    }
}

int main()                 //主函数
{
     
    stu *Head ;
    int begin;  
    cout<<endl
        <<"#学生查询系统#"<<endl
		<<"按任意键进入"<<endl;
    int y = getch();
    system("cls");

    while(1)
    {
       int y = getch();
            system("cls");
	
	cout<<endl;
cout<<"    ._________________.    "<<endl
<<"    | _______________ |    "<<endl
<<"    | I             I |    "<<endl
<<"    | I 学生查询系统I |    "<<endl
<<"    | I_____________I |    "<<endl
<<"    !_________________!    "<<endl
<<"   (0) 添加                "<<endl 
<<"   (1) 查询&修改           "<<endl 
<<"   (2) 添加插入信息        "<<endl
<<"   (3) 删除信息            "<<endl
<<"   (4) 遍历学生信息        "<<endl
<<"   (5) 统计学生总个数      "<<endl 
<<"   (6) 退出系统            "<<endl
<<endl
<<"    选择 :" ;
int x;
        cin>>x;
        fflush(stdin);
        switch(x)
        {
     
        case 0:
            Head = create();break;
        case 1:
            Head = chazhao(Head);
            break;
        case 2:
            Head = tianjia(Head);
            break;
        case 3:
            Head = shanchu(Head);
            break;
        case 4:
            Head = bianli(Head);
            break;
        case 5:
            cout<<"学生个数为:"<<stu::Count-1<<endl;
            break;
        case 6:
        	cout<<"bye"<<endl;
            return 0;
        }}
    system("pause");
}

3.4

银行账户管理系统
设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码等。
类中包括的成员函数(要完成操作有):
(1)用户进行开户函数;
(2)用户进行销户函数;
(3)用户进行存款函数;
(4)用户进行取款函数;
(5)用户进行转账函数;
(6)用户进行查询函数。
提示:
(1)程序运行时,可以由用户选择任何操作;
(2)开户即为创建一个新的账号对象,要求输入用户信息后自动获取账号;
(3)销户即删除一个对象,用户销户后账号被收回,并且该账号可以继续分配给其他用户;
(4)不允许用户透支(余额不能为负);
(5)根据账号和姓名可以进行用户信息查询;
(6)可定义一个账号类存放账号信息以及执行相应的操作。

#include 
#include 
#include 
#include  
using namespace std;
class banker
{
     
	private:
		string _name;
		string _id;
		string _account;
		int _money;
	public:
		void display(){
         //显示/查询 
			cout<<"您的姓名是:"<<_name<<endl
			<<"您的身份证号码是:"<<_id<<endl
			<<"您的账户是:"<<_account<<endl
			<<"账户余额是:"<<_money<<endl; 
		}	
		void add_banker()
		{
     
			cout<<"请输入新账户的信息:"<<endl;
			cout<<"您的姓名是:";
			cin>>_name;cout<<"您的身份证号码是:";
			cin>>_id;
			cout<<"您的账户是:";
			cin>>_account;cout<<"您的余额为:";
			cin>>_money;
			save_new();
			system("pause");
		}
		void delete_banker()
		{
     
			string sign,str,str1;
			bool flag=true;
			cout<<"输入您想注销的姓名或账户信息:";cin>>sign;
			ofstream outData("temp.txt", ios::out);    //磁盘文件的输出 
			ifstream inData("account.txt", ios::in);     //输入 
			while(inData>>_name>>_id>>_account>>_money)
			{
     	
				getline(inData,str);                           //接收一个字符串
				if ((sign==_name)||(sign==_account))
				{
     
					cout<<"您想删除的账户是:"<<endl;
					display();          //左对齐 
					flag=false;
					break;
				}
				outData<<setiosflags(ios::left)<<_name<<" " <<_id<<" "<<_account<<endl;
			}	
		if (flag)
		{
     
			cout <<endl <<"该账户不存在!" <<endl<<endl;
		}
		else
		{
     
			while (getline(inData,str))
			{
     
				outData<<str<<endl;
			}
			outData.close();
			inData.close();
			ofstream out("account.txt", ios::out);
			ifstream in("temp.txt", ios::in);
			while (getline(in, str))
			{
     out<<str<<endl;}
			out.close();                //文件流关闭 
			in.close();
			cout<<"账户已经成功删除!"<<endl;
		}}
		void search_banker()
		{
     
			string sign,str,str1;
			bool flag=true;
			cout<<"输入账户或姓名:";
			cin>>sign;
			ifstream inData("account.txt", ios::in);     //输入 
			while(inData>>_name>>_id>>_account>>_money)
			{
     	
				getline(inData,str);                           //接收一个字符串
				if ((sign==_name)||(sign==_account))
				{
     
					cout<<"检索账户成功!"<<endl;
					display(); 
					flag=false;    //左对齐 
					break;
				}
			}
			if(flag)
			{
     
				cout <<endl <<"该账户不存在!" <<endl<<endl;
			}
		}
		void deposit(int k)
		{
     
			string str;
			search_banker();
			int money=_money;
			money+=k;
			ofstream outData("temp.txt", ios::out);
			ifstream inData("account.txt", ios::in); 
			outData<<setiosflags(ios::left)<<_name<<" " <<_id<<" "<<_account<<" "<<money<<endl;
			while (getline(inData, str))
			{
     
				outData<<str<<endl;
			}
			outData.close();
			inData.close();
			ofstream out("account.txt", ios::out);
			ifstream in("temp.txt", ios::in);
			while (getline(in, str))
			{
     
				out <<str<<endl;
			}
			out.close();
			in.close();
			cout<<"已写入!"<<endl;			
		}
		void draw(int k)
		{
     			
			string str;
			search_banker();
			int money=_money;
			money-=k;
			if(money<0)
			{
     cout<<"您的账户余额不足!"<<endl;return;}
			ofstream outData("temp.txt", ios::out);
			ifstream inData("account.txt", ios::in); 
			outData<<setiosflags(ios::left)<<_name<<" " <<_id<<" "<<_account<<" "<<money<<endl;
			outData.close();
			inData.close();
			ofstream out("account.txt", ios::out);
			ifstream in("temp.txt", ios::in);
			while (getline(in, str))
			{
     
				out<<str<<endl;
			}
			out.close();
			in.close();
			cout<<"存款写入成功!!!"<<endl;	
		}
		void transfer(int k)
		{
     
			cout<<"您要转出的账户是: -";
			deposit(k);
			cout<<"收款方的账户是: -";
			draw(k);
			cout<<"转账已成功!!"<<endl;
		}
		void save_new();
};
int main()
{
     
	banker b;
	int k;
	int temp;

	while(1)
	{
     
cout<<endl;
cout<<"    ._________________.    "<<endl
<<"    | _______________ |    "<<endl
<<"    | I             I |    "<<endl
<<"    | I  银行系统   I |    "<<endl
<<"    | I_____________I |    "<<endl
<<"    !_________________!    "<<endl
<<endl
<<"   (1) 开户          "<<endl 
<<"   (2) 注销帐户      "<<endl
<<"   (3) 搜索账户      "<<endl
<<"   (4) 存款          "<<endl
<<"   (5) 取款          "<<endl 
<<"   (6) 汇款/转账     "<<endl
<<"   (0) 退出          "<<endl
<<endl
<<"    选择 :" ;
		cin>>k;switch(k)
		{
     
			case 1:b.add_banker();system("cls"); break;
			case 2:b.delete_banker();break;
			case 3:b.search_banker();break;
			case 4:cout<<"输入您想要存款的数额:"<<endl;cin>>temp;b.deposit(temp);system("pause");break;
			case 5:cout<<"输入您想要写入的:"<<endl;cin>>temp;b.draw(temp);break;
			case 6:cout<<"输入您想要转账的数额:"<<endl;cin>>temp;b.transfer(temp);break;
			case 0:return 0;
		}
		cout<<"------------------------------------"<<endl;
	}
}

void banker::save_new()                       //类外定义保存联系人函数
{
     
	ofstream outData("account.txt", ios::app);
	if(!outData)
	{
     
		cout <<"失败!"<<endl;
		system("pause");
		return;
	}
	outData<<setiosflags(ios::left)<<_name<<" "<<_id<<" "<<_account<<" "<<_money<<endl;
	outData.close();
	cout<<"账户已设立!"<<endl;
}

你可能感兴趣的:(课程设计,c++,编程语言)