菜鸟的课设源码~做课设的菜鸟伤不起

本文将介绍如何使用C++实现一个员工工资管理系统,包括手动输入、文件读取、展示信息、更新信息、计算总工资和平均工资、删除员工信息以及增加员工信息等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工资管理系统

#include<iostream>
#include<cstdio>
#include<windows.h>
#include<fstream>
#include<iomanip>
#include<string>
#define OK 1//宏定义 
#define ERROR 0
#define MAX_SIZE 100
using namespace std;
//=========================
struct employee
{
int age;
char name[15];
double salary;
char tel[15];
char add[15];

};
//11=========================
void display(employee company[],int n)//展示所有员工信息
{
int t=1;
if(n==0)
cout<<"没有任何员工信息"<<endl;
else
{
 for(int i=0;i<n;i++)
 {
  if(company[i].age)
  {
  cout<<"-----------------------------"<<endl;
     cout<<"NO."<<t<<endl; 
  cout<<"姓名:"<<company[i].name<<endl;
  cout<<"年龄:"<<company[i].age<<endl;
  cout<<"电话:"<<company[i].tel<<endl;
  cout<<"住址:"<<company[i].add<<endl;
   cout<<"工资:"<<company[i].salary<<endl;
   cout<<"-----------------------------"<<endl;
   t++;
  }
 }
  //system("pause");
  }
}
//22===================================
int read(employee company[])//手动输入员工信息
{
int n;
ofstream outfile("company.txt",ios::out|ios::binary);
if(! outfile)
{
cerr<<"open error!"<<endl;
abort();
}
cout<<"你选择手动输入\n";
cout<<"请输入员工人数:\n";
cin>>n;
outfile.seekp(0,ios::beg);
for(int i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"个员工姓名、年龄、电话、住址、工资:\n";
cin>>company[i].name>>company[i].age>>company[i].tel>>company[i].add>>company[i].salary;
outfile.write((char*)&company[i],sizeof(company[i]));

outfile.close();
display(company,n);
system("pause");
return n;
}
//33===================================
int readfile(employee company[],int n)//从文件中读入所有员工信息
{
int a;
    cout<<"请输入需要输入的人数:";
    scanf("%d",&a);
fstream all("company.txt",ios::in|ios::binary);
    if(!all)
    {
        cerr<<"文件打开失败!"<<endl;
        abort();
    }
    all.seekg(0,ios::beg);//到文件头
    for(int i=0;i<a;i++)
    all.read((char *)&company[i],sizeof(company[i]));
    display(company,a);
    all.close();
    system("pause");
//cout<<"你选择文件输入:\n";
return a;
}
//44===================================================
int Delete(employee company[],int n)//删除员工信息
{
    char name[30];
int i;
    cout<<"请输入要删除的人的名字:";
    cin>>name;
    for(i=0;i<n;i++)
   {
       if(strcmp(company[i].name,name)==0)
       {
         strcpy(company[i].name,"\0");
         company[i].age=0;
         company[i].salary=0;
         strcpy(company[i].tel,"\0");
         strcpy(company[i].add,"\0");
 printf("删除成功\n"); 
       }                   
   }
   //
   system("pause");
   return 1;
}


//55===================================================
int update(employee company[],int n)//更新某个员工信息
{
char _name[15];
int temp,j,i;
cout<<"请输入员工姓名:\n";
cin>>_name;
ifstream iofile("company.txt",ios::in|ios::out|ios::binary);
   if(! iofile)
   {
  cerr<<"文件打开失败!"<<endl;
      abort();
   }
        iofile.seekg(0,ios::beg);
   for(i=0;i<n;i++)
   {
       iofile.read((char *)&company[i],sizeof(company[i]));
       if(strcmp(company[i].name,_name)==0)
       {
 j=1;
         temp=i;
       }
   }
   if(j!=1)
   {
       cout<<"对不起,没找到你要的信息!"<<endl<<endl ;
   }
        iofile.close();
  if(temp!=-1)
  {
      ofstream iofile("company.txt",ios::in|ios::out|ios::binary);
      if(! iofile)
      {
          cerr<<"文件打开失败!"<<endl;
          abort();
      }
      cout<<"确定修改吗?[y/n]"<<endl;
      char c;
  cin>>c;
  for(int i=0;i<n;i++)
  {
 if(strcmp(company[i].name,_name)==0)
 {
cout<<"============"<<endl; 
cout<<"姓名:";
     cout<<company[i].name<<endl;
     cout<<"年龄:";
          cout<<company[i].age<<endl; 
     cout<<"电话:";
     cout<<company[i].tel<<endl;
     cout<<"住址:";
     cout<<company[i].add<<endl;
     cout<<"工资:";
     cout<<company[i].salary<<endl;
     cout<<"============"<<endl; 
cout<<"请输入修改后员工的姓名,年龄,电话,地址,工资:\n";
cin>>company[i].name>>company[i].age>>company[i].salary>>company[i].tel>>company[i].add;
iofile.seekp(temp*sizeof(company[temp]),ios::beg);
           iofile.write((char *)&company[temp],sizeof(company[temp]));
           cout<<"已经成功修改!"<<endl;
return OK;
}
 }
  }
//cout<<"找不到这个员工的信息!\n";
return ERROR;
}
//66====================================================
double total(employee company[],int n,int agestart=0,int ageend=100)
{//计算某个年龄段的员工的总工资,返回值为总工资
   cout<<"请输入所查询的年龄段:\n";
   cin>>agestart>>ageend;
   double sum=0;
   for(int i=0;i<n;i++)
   {
    if(company[i].age>=agestart&&company[i].age<=ageend)
    sum=sum+company[i].salary;
   }
   cout<<"年龄段:"<<agestart<<"~"<<ageend<<endl;
   cout<<"人数为:"<<n<<endl;
   cout<<"总工资:"<<sum<<endl;
   return sum;
}
//77===============================================
double mean(employee company[],int n,int agestart=0,int ageend=100)
{//计算某个年龄段的员工平均工资,返回值为平均工资 
cout<<"请输入起始年龄:\n";
   cin>>agestart;
   cout<<"请输入结束年龄:\n";
   cin>>ageend;
   double sum=0;
   int num=0;
   for(int i=0;i<n;i++)
   {
    if(company[i].age>=agestart&&company[i].age<=ageend)
    {
  sum=sum+company[i].salary;
      num++;
    }
   }
   cout<<"年龄段:"<<agestart<<"~"<<ageend<<endl;
   cout<<"人数为"<<n<<",\n平均工资:"<<sum/num<<endl;
   return sum/num;
}
//88=====================================
void add(employee company[],int n)
{
system("cls");
int i,m;
m=0;
char y;
employee _company[20];
cout<<"请输入要添加的:"<<endl;
for(i=0;i<20;i++)   //先录入到结构数组
{
cout<<"请输入修改后员工的姓名,年龄,电话,地址,工资:\n";
cin>>_company[i].name>>_company[i].age>>_company[i].salary>>_company[i].tel>>_company[i].add;
fstream iofile("company.txt",ios::in|ios::out|ios::binary);
if(! iofile)
{
cerr<<"文件打开失败!"<<endl;
exit(1);
}
iofile.seekp(0,ios::end);  //找到文件末尾,具体用法见课本270
iofile.write((char *)&company[i],sizeof(company[i]));  //把结构数组(学生)信息添加到文件末尾处
iofile.close();
cout<<"继续(y/n)\n";
cin>>y;
if(y=='n')
i=19;   //用break亦可
system("cls");
}
}
//=======================================
int main()
{
int slct;//选择读入方式
int n=0;
employee company[MAX_SIZE] ;//定义员工信息表
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
cout <<"请稍等……" << endl; 
Sleep(2000);
system("cls");
cout<<"请选择:\n";
cout<<"◇1.手动读取员工信息:\n";
cout<<"◇2.文件读取员工信息:\n";
cin>>slct; 
if(slct==1)n=read(company);
else if(slct==2)n=readfile(company,n);
cout <<"请稍等……" << endl; 
Sleep(2000);
for(int choice;;)//无限循环,输入0退出
{
system("cls");//实现清屏 
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_GREEN );
cout<<"                ★★★★★★★★★★★★★★★★★★★★★\n";
cout<<"                  ★★★ 欢迎使用员工工资管理系统 ★★★\n";
cout<<"                   ★★★★★★★★★★★★★★★★★★\n";
cout<<"                    ※※※※※※※※※※※※※※※※※\n";
cout<<"                    ※      请选择需要的操作:       ※\n";
cout<<"                    ※      1.查看员工的基本信息;   ※\n";
cout<<"                    ※      2.更新员工信息;         ※\n";
cout<<"                    ※      3.计算员工总工资;       ※\n";
cout<<"                    ※      4.计算员工平均工资;     ※\n";
cout<<"                    ※      5.删除员工信息;         ※\n";
cout<<"                    ※      6.增加员工信息;         ※\n";
cout<<"                    ※      0.退出工资管理系统;     ※\n";
cout<<"                    ※※※※※※※※※※※※※※※※※\n"<<endl;
cin>>choice;
if(!cin)continue;
switch(choice)
{
case 1:display(company,n);break;
case 2:update(company,n);break;
case 3:total(company,n);break;
case 4:mean(company,n);break;
case 5:Delete(company,n);break;
case 6:add(company,n);break;
case 0:exit(0);

system("pause");

return 0;
}


做课设的菜鸟伤不起啊!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值