C++程序设计实习报告

时间:2024.4.20

目录

一、实习内容…………………………………………………………………………1

二、设计思路…………………………………………………………………………2

三、程序清单…………………………………………………………………………3

四、运行结果…………………………………………………………………………15

五、程序使用说明……………………………………………………………………20

六、总结及心得体会…………………………………………………………………21



一、实习内容

课程设计的题目:《小型公司工资管理系统》设计

设计说明:公司主要有四类人员:经理、技术员、销售员、销售经理。程序要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。并且应用程序中要求给出菜单,用于选择各项功能。

一、程序要求实现的功能即菜单目录有:

1、数据输入:输入各种数据;

2、数据统计:统计各销售经理下属销售员的销售额及销售额之和;销售经理工资进行冒泡排序;

3、数据打印:打印各类员工的数据信息;

4、数据备份:把各类员工的数据信息写入文件中保存;

5、退出:退出本系统,即结束程序的运行。

二、工资的计算方法

A:经理:固定月薪为8000元;B:技术员:工作时间*小时工资(100元/小时);C:销售员:销售额* 4%提成;D:销售经理:底薪(5000)+所辖部门销售额总额* 0.5%。

三、类的层次结构大体如下

雇员类

  ↑

技术员类          经理类          销售员类

销售经理类


二、设计思路

1.

(1)首先我们要搞清楚各类之间的继承关系,设置基类employee,其派生类manager,technician,salesman。再以manager类为基类,再派生一个salesmanager类,将各类的数据成员设计成protected,方便派生类对基类的继承;

(2)在public里编写数据输入的函数,在主函数中输出菜单并定义各类的对象,通过对象来调用数据输入函数;

2.

(1)在基类employee中补充几个返回各类数据的函数以用于返回输入的各类值;

(2)在主函数内用冒泡法对销售经理的工资进行排序,定义一个wage[]来将各销售经理下面的销售员的销售额进行储存,定义一个all用于计算销售经理的销售总额,以便于下面对其进行工资的计算 ;

(3)第2,3,4步都用大量的for循环进行输出,以实现表格的形成还有表格中数据的输入;在主函数内定义各类的对象,然后都是直接通过类的对象调用类内的函数,运用for循环进行打印,统计;

3.

备份参照课本格式,选择路径及格式,运用for循环备份;就是那个fstream之类的东西;、退出系统用exit(5)函数实现;

4.主函数运用switch语句,将上述功能编为case 1~5,每个case后添加break;

5.程序结束。

以上是我所认为的该程序的几个要点…………………………………..


三、程序清单

#include<iostream>

#include<string>

#include<cmath>

#include<iomanip>

#include<fstream>

using namespace std;

const N=2;

fstream outfile;

class employee    //基类,雇佣者

{

protected:      

       string name;

       char sex;

       int age;

public:

    virtual void display()

       {   cout<<"其姓名:";

              cin>>name;

              cout<<"性别(m/w):";

              cin>>sex;

              cout<<"年龄:";

           cin>>age;

       }

       string nam(){return name;}

       char se(){return sex;}

       int ag(){return age;}

};                                  //

class technician: public employee    //技术员类

{

public:

    int worktime;

       int number1;

public:

    void display1()

       {

              cout<<"技术员的编号:";

              cin>>number1;

              employee::display();

              cout<<"工作时间";

              cin>>worktime;

       }

       int time(){return worktime;}

       int numb1(){return number1;}

};                                 //

class manager : public employee    //经理类

{protected:

   int number2;

  public:

       void display2()

       {

              cout<<"经理的编号:";

              cin>>number2;

              employee::display();

       }

       int numb2(){return number2;}

};                                //

class salesman : public employee    //销售员类

{

protected:

    int total;

       int boss;

       int number3;

public:

       void display3()

       {

              cout<<"销售员的编号:";

              cin>>number3;

              employee::display();

           cout<<"销售额:";

              cin>>total;

              cout<<"所属销售经理的编号:";

              cin>>boss;

       }

       int hismanager(){return boss;}

       int xiaoshoue(){return total;}

       int numb3(){return number3;}

};                                //

class salesmanager : public manager    //销售经理类

{protected:

    int number4;

public:

       void display4()

       {

              cout<<"销售经理的编号:";

        cin>>number4;

              employee::display();

       }

       int numb4(){return number4;}

};                                //

void form()

{

cout<<"★★小型公司工资管理系统★★"<<endl;                //提示表格

cout<<"┌─────────────┐"<<endl;

cout<<"│     请选择您所需的操作   │"<<endl;

cout<<"│   数据输入:1,并按回车键 │"<<endl;

cout<<"│   数据统计:2,并按回车键 │"<<endl;

cout<<"│   数据打印:3,并按回车键 │"<<endl;

cout<<"│   数据备份:4,并按回车键 │"<<endl;

cout<<"│   退出系统:5,并按回车键 │"<<endl;

cout<<"└─────────────┘"<<endl;

cout<<"请选择一个操作:";

}

int main()

{ int i,j,k,g,m,all,t;

  char shuzi;

  int wage[N];

  technician t1[N];

  manager m1[N];

  salesman  s1[2*N],s2[2*N];

  salesmanager sm1[N],f;

for(t=1;;t++)

{

       form();

       cin>>shuzi;

       switch(shuzi)

       {

case '1':{  

                                 //功能1

    for(i=0;i<N;i++)

    t1[i].display1();

cout<<"......................................."<<endl;

    for(i=0;i<N;i++)

    m1[i].display2();

cout<<"......................................."<<endl;

    for(i=0;i<2*N;i++)

     s1[i].display3();

cout<<"......................................."<<endl;

   for(i=0;i<N;i++)

   sm1[i].display4();

cout<<"......................................."<<endl;

       break;}

case '2':                       //功能2

       for(i=0;i<N;i++)

       {wage[i]=5000;all=0;

       cout<<"职工号为"<<sm1[i].numb4()<<"销售经理"<<sm1[i].nam()<<"下属销售员的业绩为:"<<endl;

       cout<<"┌─────┬────┬─────┐"<<endl;

    cout<<"│职工号    │姓名    │销售额    │"<<endl;

       for(m=0;m<2*N;m++)

       {if(s1[m].hismanager()==sm1[i].numb4())

       {     wage[i]=wage[i]+0.005*(s1[m].xiaoshoue());all=all+s1[m].xiaoshoue();

      cout<<"├─────┼────┼─────┤"<<endl;

        cout<<"│"<<setw(10)<<s1[m].numb3()<<"│"<< setw(8)<<s1[m].nam()<<"│"<<setw(10)<<s1[m].xiaoshoue()<<"│"<<endl;

       }}

     cout<<"├─────┼────┴─────┤"<<endl;

        cout<<"│销售额总计│"<<setw(20)<<all<<"│"<<endl;

        cout<<"└─────┴──────────┘"<<endl;}

      

      

for(j=0;j<N;j++)

  for(k=0;k<N-j;k++)

    if(wage[k]<wage[k+1])

{t=wage[k];                                      //冒泡

 wage[k]=wage[k+1];

 wage[k+1]=t;

 f=sm1[k];

 sm1[k]=sm1[k+1];

sm1[k+1]=f;}

cout<<"销售经理按工资排序为:"<<endl;

cout<<"┌─────┬────┬────┬────┬────┐"<<endl;

cout<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

for(g=0;g<N;g++)

{

cout<<"├─────┼────┼────┼────┼────┤"<<endl;

cout<<"│"<<setw(10)<<sm1[g].numb4()<<"│"<<setw(8)<<sm1[g].nam()<<"│"<<setw(8)<<sm1[g].se()<<"│"<<setw(8)<<sm1[g].ag()<<"│"<<setw(8)<<wage[g]<<"│"<<endl;

}

cout<<"└─────┴────┴────┴────┴────┘"<<endl;

   break ;                          //功能3

case '3': cout<<"请等待............"<<endl;

              cout<<"职工基本情况一览表如下"<<endl;

              cout<<"技术员"<<endl;

        cout<<"┌─────┬────┬────┬────┬────┐"<<endl;

        cout<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(i=0;i<N;i++)

              {

              cout<<"├─────┼────┼────┼────┼────┤"<<endl;

              cout<<"│"<<setw(10)<<t1[i].numb1()<<"│"<<setw(8)<<t1[i].nam()<<"│"<<setw(8)<<t1[i].se()<<"│"<<setw(8)<<t1[i].ag()<<"│"<<setw(8)<<t1[i].time()*100<<"│"<<endl;

              }

              cout<<"└─────┴────┴────┴────┴────┘"<<endl; //技术员表

        cout<<"......................................................."<<endl;

              cout<<"经理"<<endl;

        cout<<"┌─────┬────┬────┬────┬────┐"<<endl;

        cout<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(i=0;i<N;i++)

              {

              cout<<"├─────┼────┼────┼────┼────┤"<<endl;

              cout<<"│"<<setw(10)<<m1[i].numb2()<<"│"<<setw(8)<<m1[i].nam()<<"│"<<setw(8)<<m1[i].se()<<"│"<<setw(8)<<m1[i].ag()<<"│"<<setw(8)<<"8000"<<"│"<<endl;       

              }

              cout<<"└─────┴────┴────┴────┴────┘"<<endl;      //经理表

              cout<<"......................................................."<<endl;

              cout<<"销售经理"<<endl;

        cout<<"┌─────┬────┬────┬────┬────┐"<<endl;

        cout<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(g=0;g<N;g++)

              {

        cout<<"├─────┼────┼────┼────┼────┤"<<endl;

        cout<<"│"<<setw(10)<<sm1[g].numb4()<<"│"<<setw(8)<<sm1[g].nam()<<"│"<<setw(8)<<sm1[g].se()<<"│"<<setw(8)<<sm1[g].ag()<<"│"<<setw(8)<<wage[g]<<"│"<<endl;

              }

        cout<<"└─────┴────┴────┴────┴────┘"<<endl;

              cout<<"......................................................."<<endl;     //销售经理表

              cout<<"销售员"<<endl;

        cout<<"┌─────┬────┬────┬────┬────┬────────┐"<<endl;

        cout<<"│职工号    │姓名    │性别    │年龄    │工资    │所属部门经理编号│"<<endl;

        for(i=0;i<(2*N);i++)

              {

              cout<<"├─────┼────┼────┼────┼────┼────────┤"<<endl;

              cout<<"│"<<setw(10)<<s1[i].numb3()<<"│"<<setw(8)<<s1[i].nam()<<"│"<<setw(8)<<s1[i].se()<<"│"<<setw(8)<<s1[i].ag()<<"│"<<setw(8)<<s1[i].xiaoshoue()*0.04<<"│"<<setw(16)<<s1[i].hismanager()<<"│"<<endl;             

              }

              cout<<"└─────┴────┴────┴────┴────┴────────┘"<<endl;      //经理表

              cout<<"..............................................................................."<<endl;

        break;

       case '4':

              cout<<"数据备份"<<endl;

        outfile.open("E:\\sjq.txt",ios::in|ios::out|ios::trunc);

        outfile<<"技术员"<<endl;

        outfile<<"┌─────┬────┬────┬────┬────┐"<<endl;

        outfile<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(i=0;i<N;i++)

              {

              outfile<<"├─────┼────┼────┼────┼────┤"<<endl;

              outfile<<"│"<<setw(10)<<t1[i].numb1()<<"│"<<setw(8)<<t1[i].nam()<<"│"<<setw(8)<<t1[i].se()<<"│"<<setw(8)<<t1[i].ag()<<"│"<<setw(8)<<t1[i].time()*100<<"│"<<endl;

              }

              outfile<<"└─────┴────┴────┴────┴────┘"<<endl; //技术员表

        outfile<<"......................................................."<<endl;

              outfile<<"经理"<<endl;

        outfile<<"┌─────┬────┬────┬────┬────┐"<<endl;

        outfile<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(i=0;i<N;i++)

              {

              outfile<<"├─────┼────┼────┼────┼────┤"<<endl;

              outfile<<"│"<<setw(10)<<m1[i].numb2()<<"│"<<setw(8)<<m1[i].nam()<<"│"<<setw(8)<<m1[i].se()<<"│"<<setw(8)<<m1[i].ag()<<"│"<<setw(8)<<"8000"<<"│"<<endl;       

              }

              outfile<<"└─────┴────┴────┴────┴────┘"<<endl;      //经理表

              outfile<<"......................................................."<<endl;

              outfile<<"销售经理"<<endl;

        outfile<<"┌─────┬────┬────┬────┬────┐"<<endl;

        outfile<<"│职工号    │姓名    │性别    │年龄    │工资    │"<<endl;

        for(g=0;g<N;g++)

              {

        outfile<<"├─────┼────┼────┼────┼────┤"<<endl;

        outfile<<"│"<<setw(10)<<sm1[g].numb4()<<"│"<<setw(8)<<sm1[g].nam()<<"│"<<setw(8)<<sm1[g].se()<<"│"<<setw(8)<<sm1[g].ag()<<"│"<<setw(8)<<wage[g]<<"│"<<endl;

              }

        outfile<<"└─────┴────┴────┴────┴────┘"<<endl;

              outfile<<"......................................................."<<endl;     //销售经理表

              outfile<<"销售员"<<endl;

        outfile<<"┌─────┬────┬────┬────┬────┬────────┐"<<endl;

        outfile<<"│职工号    │姓名    │性别    │年龄    │工资    │所属部门经理编号│"<<endl;

        for(i=0;i<(2*N);i++)

              {

              outfile<<"├─────┼────┼────┼────┼────┼────────┤"<<endl;

              outfile<<"│"<<setw(10)<<s1[i].numb3()<<"│"<<setw(8)<<s1[i].nam()<<"│"<<setw(8)<<s1[i].se()<<"│"<<setw(8)<<s1[i].ag()<<"│"<<setw(8)<<s1[i].xiaoshoue()*0.04<<"│"<<setw(16)<<s1[i].hismanager()<<"│"<<endl;             

              }

              outfile<<"└─────┴────┴────┴────┴────┴────────┘"<<endl;      //经理表

              outfile<<"..............................................................................."<<endl;

              outfile.close();

              break;

   case '5':cout<<"确定退出系统吗?"<<endl;

                     cout<<"是:1,    否:2"<<endl;

                     int a;

                     cin>>a;

                     if(a==1) exit(5);break;

   default :cout<<"error"<<endl;        

              }

}

return 0;

}


四、运行结果

数据备份内容…………………………………………….


五、程序的使用说明

1.从键盘输入1,按回车键,可进行各类数据的输入,此步骤必须执行;

2.从键盘输入2,按回车键,即可进行数据统计,得到统计列表;

3.从键盘输入3,按回车键,可打印出各类成员的基本信息;

4.从键盘输入4,按回车键,可进行数据备份;

5.从键盘输入5,按回车键,出现提示信息,若退出系统输入1否则输入2。


六、总结及心得体会

从9月2号,我们开始了为期一周的C++程序设计实习——《小型工资管理系统》,每天下午去机房调试程序,上午编写下一天的程序代码。

刚开始的时候,脑袋里一点思路都没有,因为以前没有接触过这么大的程序。所以刚开始的时候,心里只有一个字能形容就是怕。怕自己便不好,怕这门课程完成不了,很多很多。去做一件事情,最忌讳的就是这一点。失败者和成功者最大的区别就是面对困难时的心态,我深知这一点。所以,我沉下心来思考了很多。做一个程序,最重要的就是大体思路,得有全局的思考,我承认,这一点我做的不是很好,因为我第2天的程序做了大改动,也许是我基本功不扎实,但是我所能想到的就是大改动了,可能有其他简便的方法,所以这对于我而言,是一个重大的警告。在第二天的晚上,我花了一晚的时间来重新整理思路,以防止在接下来的几天里再出现那样的错误,那就很让人纠结了。第1天时完成数据的输入以及类的设计。这个还不是很难,就是定义一个基类employee,然后派生下来几个子类。然后在类内编写返回值的函数,以及数据输入的函数等等,数据成员都设置成protected。在类外在编几个数组,用来调用类内函数。

第2天是完成数据统计,排序功能。排序的话用冒泡法,用数组进行数据的排序。但是问题出现了,第一天我是把输入功能独立变成一个void函数在主函数前面的,但是我发现数据无法存储下来。所以第2天我就把第一步的内容全改了,搬到了类内,这样才解决了问题。

   第三天时完成数据的输出显示,这个地方的难点就是设计表格,这个就涉及到了那个输入内容宽度的设计,以及制表键盘的。然后数据的输出就是在主函数内定义类对象数组,以此来实现数据的调用。

   然后剩下的就是备份以及推出功能的实现了。这些都是在网上查了相关资料然后学会如何编写的,刚开始觉得很深奥,学了之后,就觉得,嗯,还行。所以其他的任务在半天内就完成了。看着自己编出的程序,真心觉得一切都值了,很有成就感的样子,我想这就是编程员的欢喜吧。

整个实习过程让我明白了几点:

1.设计一个程序时需要从整体考虑,不能分散到最后结合不到一起;

2.有些貌似简单的功能的实现其程序实现不一定简单,但也不能畏首畏尾,不敢尝试,要勇于挑战自己,相信自己一定可以;

3. 

1.需要具有刻苦钻研的精神,注意总结,遇到问题认真思考,力求得到结果;

2.同时也不能忽略团队的力量,遇到实在个人解决不了的问题可以通过与同学商量解决,并且结合别人和自己的观点,从多方面考虑,在众多方案中找出最优化的;

3.遇到一些问题时要有耐心进行更正,因为可能有时候一个很小的错误会导致整个程序运行失常。

我感觉这一周的实习非常充实,谢谢这一周给我指导的老师,以及各位同学的陪伴。

更多相关推荐:
C程序设计实验报告

C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的结果如果输入数比正确的结果要大提示猜大了如果输入数比正确的结果要小提示猜小了当猜...

C++程序设计实验报告

C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。2、掌握过程控制编程方法,正确编制多重循…

实验三最简单的C程序设计实验报告

实验三最简单的程序设计一实验目的1掌握语言中使用最多的一种语句赋值语句的使用方法2掌握各种类型数据的输入输出方法能正确使用各种格式输出符二实验内容和步骤掌握各种格式输出符的使用方法includeltstdioh...

C程序设计实验报告5

工学院工业设计专业10级20xx至20xx学年度第1学期学号2104021638姓名杨芹芹20xx年9月22日第34节综合楼325教室

C程序设计综合实验报告

华北科技学院计算机系综合性实验实验报告课程名称C程序设计实验学期20xx至20xx学年第二学期学生所在系部年级专业班级学生姓名学号任课教师孙改平实验成绩计算机系制华北科技学院计算机系综合性实验报告C程序设计课程...

C程序设计实验报告3-

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年10月8日第34节综合楼325教室

C程序设计综合性实验报告模版

C程序设计综合性实验实验报告题目学生成绩管理姓名班级学号指导教师完成时间一实验题目学生成绩管理二实验目的1掌握一维数组二维数组的使用方法2掌握结构体数组的定义和使用3综合应用数据文件的读写语句保存结构体数组中的...

C语言程序设计实验报告9

C语言程序设计实验报告九专业计算机科学与技术班级卓越工程师班日期20xx年12月23日实验组别第一组成绩第九次实验结构与联合实验指导教师李开学生姓名学号实验名称结构与联合实验一实验目的1熟悉和掌握结构的说明和引...

C语言程序设计实验报告(一)

C语言程序设计实验报告专业班级日期成绩实验组别第次实验指导教师学生姓名学号同组人姓名实验名称指针实验一实验目的1熟练掌握指针的说明赋值使用2掌握用指针引用数组的元素熟悉指向数组的指针的使用3熟练掌握字符数组与字...

C语言程序设计课程实验一实验报告

上海开放大学姓名学号实验日期20xx年4月8日实验名称实验一流程控制使用主要设备VC60实验目的1熟练掌握if语句和switch语句实现分支结构的方法2熟练掌握用whiledowhilefor语句实现循环的方法...

C程序设计_实验_文件_实验报告

贵州大学C程序设计实验实验报告实验名称文件专业班级姓名学号教师电子信息科学与技术贵州大学理学院20xx年第1页第2页第3页第4页第5页第6页第7页第8页第9页第10页第11页第12页第13页第14页20xx年月...

C程序设计上机实验报告6

C程序设计实验报告实验名称函数程序设计学时安排2学时实验类别上机操作型实验要求1人1组一实验目的1熟练掌握函数的定义和调用2熟练掌握使用函数编写程序3掌握函数的实参形参和返回值的概念及使用4掌握单步调试进入函数...

c++程序设计实验报告(33篇)