当前位置:首页 » 课程大全 » 课程设计统计工资

课程设计统计工资

发布时间: 2021-02-12 09:36:13

1. 课程设计教职工工资程序

认识你,我给你!

2. 统计工资 C++ 课程设计 有高手帮做吗

//=================================================
//文件名:Wage.cpp
//文件描述:这个文件描述了公司职员工资统计
//编译环境:C-Free4.1 MingGW32 && Microsoft Visual Studio 2008
//作者:无敌队长(effor)
//完成日期:2008-11-2
//保留所有权利(c)东北大学秦皇岛分校,2008.
//=================================================
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#define OK 1
#define ERROR 0
#define MAX_SIZE 100
using namespace std;
//-------------------------------------------------
typedef int Status;
struct employee
{
int age;
char name[15];
double salary;
};//-----------------------------------------------
void display(employee company[],int N)//展示所有员工作息
{
if(N==0){cout<<"没有任何员工信息;\n";return;}
cout<<"===================="<<endl
<<"姓名 年龄 工资\n";
for(int i=0;i<N;i++)
{
cout<<setiosflags(ios::left)<<setw(7)<<company[i].name<<" "
<<setw(4)<<company[i].age<<" "
<<setw(10)<<company[i].salary<<endl;
}
cout<<"====================\n";
system("pause");
}//------------------------------------------------
int readfile(employee company[])//从文件读入所有员工作息
{
int N=0;
ifstream in("incompany.txt");//读入文件,文件名为incompany.txt
for(int i=0;;i++,N++)
{
in>>company[i].name>>company[i].age>>company[i].salary;
if(!in) break;
}
cout<<"你选择了文件输入:\n";
display(company,N);
return N;
}//---------------------------------------------------
void savefile(employee company[],int N)//将所有员工信息写入文件
{
for(int i=0;i<N;i++)
{
cout<<company[i].name<<" "
<<company[i].age<<" "
<<company[i].salary<<endl;
}
cout<<"保存成功!\n";
}//----------------------------------------------------
Status update(employee company[],int N)//更新某个员工信息
{
char eName[15];
cout<<"请输入员工姓名:\n";
cin>>eName;
for(int i=0;i<N;i++)
{
if(strcmp(company[i].name,eName)==0)
{
cout<<setw(7)<<company[i].name<<" "
<<setw(4)<<company[i].age<<" "
<<setw(10)<<company[i].salary<<endl
<<"请输入修改后员工的姓名,年龄,工资.\n";
cin>>company[i].name>>company[i].age>>company[i].salary;
return OK;
}
}
cout<<"找不到这个员工的信息!\n";
return ERROR;
}//-------------------------------------------------
int read(employee company[])//手动输入员工信息,并打印出来
{
int N;
cout<<"你选择了手动输入\n";
cout<<"请输入员工人数:\n";
cin>>N;
for(int i=0;i<N;i++)
{
cout<<"输入第"<<i+1<<"个员工姓名:\n";
cin>>company[i].name;
cout<<"输入第"<<i+1<<"个员工年龄:\n";
cin>>company[i].age;
cout<<"输入第"<<i+1<<"工资:\n";
cin>>company[i].salary;
}
display(company,N);
return N;
}//-----------------------------------------------
double total(employee company[],int N,int AgeStart=0,int AgeEnd=100)
{//计算某个年龄段的员工总工资,返回值为总工资
cout<<"请输入起始年龄:\n";
cin>>AgeStart;
cout<<"请输出结束年龄\n";
cin>>AgeEnd;

double sum=0;
for(int i=0;i<N;i++)
{
if(company[i].age>=AgeStart&&company[i].age<=AgeEnd)
sum+=company[i].salary;
}
cout<<"年龄段:"<<AgeStart<<"~"<<AgeEnd<<";\n";
cout<<"人数为"<<N<<",\n总工资:"<<sum<<endl;
return sum;
}//-----------------------------------------------
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+=company[i].salary;
num++;
}
}
cout<<"年龄段:"<<AgeStart<<"~"<<AgeEnd<<";\n";
cout<<"人数为"<<N<<",\n平均工资:"<<sum/num<<endl;
return sum/num;
}//-----------------------------------------------
int main()
{
int slct;//选择读入方式
int N=0;
employee company[MAX_SIZE];//定义员工信息表
cout<<"请选择:\n"
<<"1.文件读取员工信息;\n"
<<"2.手动输入员工信息;\n";
cin>>slct;
if(slct==1) N=readfile(company);
else if(slct==2) N=read(company);
else N=0;
for(int choice;;)//无限循环,输入0退出
{
system("cls");
cout<<"================================\n"
<<" 欢迎使用员工工资管理系统\n"
<<"================================\n"
<<"请选择:\n"
<<"1.更新员工信息;\n"
<<"2.计算员工总工资;\n"
<<"3.计算员工平均工资;\n"
<<"4.保存员工信息到文件;\n"
<<"0.退出!\n"
<<"================================\n";
cin>>choice;
if(!cin) continue;
switch(choice)
{
case 1:update(company,N);break;
case 2:total(company,N);break;
case 3:mean(company,N);break;
case 4:savefile(company,N);break;
case 0:exit(0);
}
system("pause");
}
return 0;
}//主函数结束

以下是incompany.txt文件内容(分隔线内(不函分隔线))
---------------------------------
Selina 27 130000
Ella 27 140000
Hebe 25 120000
---------------------------------
PS:这是学习C/C++非常简单的题目,要经常编才行.
由于网络知道回答过滤多余空格,要源文件给留下你的Email吧.

3. C语言课程设计-员工工资统计

使用C的结构指针数组?
看来只是为了使用而使用了

4. 课程设计,工资管理系统完整源代码

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define MONTH_NUM 5 /* 最多的月份 */

struct worker
{
int number; /* 每个工人的工号 */
char name[15]; /* 每个工人的姓名 */
int salary[MONTH_NUM]; /* 每个工人M月的工资 */
int sum; /* 每个工人的总工资 */
float average; /* 每个工人的平均工资 */
struct worker *next;
};
typedef struct worker STU;

char Menu(void);
int Ascending(int a, int b);
int Descending(int a, int b);
void IntSwap(int *pt1, int *pt2);
void CharSwap(char *pt1, char *pt2);
void FloatSwap(float *pt1, float *pt2);
STU *AppendNode(STU *head, const int m);
STU *DeleteNode(STU *head, int nodeNum);
STU *ModifyNode(STU *head, int nodeNum, const int m);
STU *SearchNode(STU *head, int nodeNum);
STU *Appendsalary(STU *head, const int m);
void Totalsalary(STU *head, const int m);
void Printsalary(STU *head, const int m);
STU *Deletesalary(STU *head, const int m);
void Modifysalary(STU *head, const int m);
void Sortsalary(STU *head, const int m, int (*compare)(int a, int b));
void Searchsalary(STU *head, const int m);
void DeleteMemory(STU *head);

main()
{
char ch;
int m;
STU *head = NULL;

printf("输入要记录的月份(m<10):");
scanf("%d", &m);
while (1)
{
ch = Menu();
switch (ch)
{
case'1':head = Appendsalary(head, m);
Totalsalary(head, m);
break;
case'2':Printsalary(head, m);
break;
case'3':head = Deletesalary(head, m);
printf("\nAfter deleted\n");
Printsalary(head, m);
break;
case'4':Modifysalary(head, m);
Totalsalary(head, m);
printf("\nAfter modified\n");
Printsalary(head, m);
break;
case'5':Searchsalary(head, m);
break;
case'6':Sortsalary(head, m, Descending);
printf("\nsorted in descending order by sum\n");
Printsalary(head, m);
break;
case'7':Sortsalary(head, m, Ascending);
printf("\nsorted in ascending order by sum\n");
Printsalary(head, m);
break;
case'0':exit(0);
DeleteMemory(head);
printf("End of program!");
break;
default:printf("Input error!");
break;
}
}
}

char Menu(void)
{
char ch;

printf("\n管理工人的工资\n");
printf(" 1.添加记录\n");
printf(" 2.列出记录\n");
printf(" 3.删除记录\n");
printf(" 4.修改记录\n");
printf(" 5.查找记录\n");
printf(" 6.降序排列\n");
printf(" 7.升序排列\n");
printf(" 0.退出\n");
printf("请输入你的选择:");
scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/
return ch;
}

STU *Appendsalary(STU *head, const int m)
{
int i = 0;
char c;

do{
head = AppendNode(head, m); /*向链表末尾添加一个节点*/
printf("你想添加一个新的记录吗(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d new nodes have been apended!\n", i);
return head;
}

STU *Deletesalary(STU *head, const int m)
{
int i = 0, nodeNum;
char c;

do{
printf("请输入你想删除的记录编号:");
scanf("%d", &nodeNum);
head = DeleteNode(head, nodeNum); /*删除工号为nodeNum的工人信息*/
Printsalary(head, m); /*显示当前链表中的各节点信息*/
printf("Do you want to delete a node(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d nodes have been deleted!\n", i);
return head;
}

void Modifysalary(STU *head, const int m)
{
int i = 0, nodeNum;
char c;

do{
printf("请输入你想修改的记录编号:");
scanf("%d", &nodeNum);
head = ModifyNode(head, nodeNum, m); /*修改工号为nodeNum的节点*/
printf("Do you want to modify a node(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d nodes have been modified!\n", i);
}

void Totalsalary(STU *head, const int m)
{
STU *p = head;
int i;

while (p != NULL) /*若不是表尾,则循环*/
{
p->sum = 0;
for (i=0; i<m; i++)
{
p->sum += p->salary[i];
}
p->average = (float)p->sum / m;
p = p->next; /*让p指向下一个节点*/
}
}

void Sortsalary(STU *head, const int m, int (*compare)(int a, int b))
{
STU *pt;
int flag = 0, i;

do{
flag = 0 ;
pt = head;
/*若后一个节点的总工资比前一个节点的总工资高,则交换两个节点中的数据
注意只交换节点数据,而节点顺序不变,即节点next指针内容不进行交换*/
while (pt->next != NULL)
{
if ((*compare)(pt->next->sum, pt->sum))
{
IntSwap(&pt->number, &pt->next->number);
CharSwap(pt->name, pt->next->name);
for (i=0; i<m; i++)
{
IntSwap(&pt->salary[i], &pt->next->salary[i]);
}
IntSwap(&pt->sum, &pt->next->sum);
FloatSwap(&pt->average, &pt->next->average);

flag = 1;
}
pt = pt->next;
}
}while(flag);
}

/*交换两个整型数*/
void IntSwap(int *pt1, int *pt2)
{
int temp;

temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}

/*交换两个实型数*/
void FloatSwap(float *pt1, float *pt2)
{
float temp;

temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}

/*交换两个字符串*/
void CharSwap(char *pt1, char *pt2)
{
char temp[15];

strcpy(temp, pt1);
strcpy(pt1, pt2);
strcpy(pt2, temp);
}

/*决定数据是否按升序排序,a<b为真,则按升序排序*/
int Ascending(int a, int b)
{
return a < b;
}

/* 决定数据是否按降序排序,a>b为真,则按降序排序 */
int Descending(int a, int b)
{
return a > b;
}

void Searchsalary(STU *head, const int m)
{
int number, i;
STU *findNode;

printf("请输入你想查找的记录编号:");
scanf("%d", &number);
findNode = SearchNode(head, number);
if (findNode == NULL)
{
printf("Not found!\n");
}
else
{
printf("\nNo.%3d%8s", findNode->number, findNode->name);
for (i=0; i<m; i++)
{
printf("%7d", findNode->salary[i]);
}
printf("%9d%9.2f\n", findNode->sum, findNode->average);
}
}

void Printsalary(STU *head, const int m)
{
STU *p = head;
char str[100] = {'\0'}, temp[3];
int i, j = 1;

strcat(str, "Number Name ");
for (i=1; i<=m; i++)
{
strcat(str, "salary");
itoa(i,temp, 10);
strcat(str, temp);
strcat(str, " ");
}
strcat(str," sum average");

printf("%s", str); /* 打印表头 */
while (p != NULL) /*若不是表尾,则循环打印*/
{
printf("\nNo.%3d%15s", p->number, p->name);
for (i=0; i<m; i++)
{
printf("%7d", p->salary[i]);
}
printf("%9d%9.2f", p->sum, p->average);
p = p->next; /*让p指向下一个节点*/
j++;
}
printf("\n");
}

STU *AppendNode(STU *head, const int m)
{
STU *p = NULL;
STU *pr = head;
int j;

p = (STU *)malloc(sizeof(STU)); /*为新添加的节点申请内存*/
if (p == NULL) /*若申请内存失败,则打印错误信息,退出程序*/
{
printf("No enough memory to alloc");
exit(0);
}

if (head == NULL) /*若原链表为空表,则将新建节点置为首节点*/
{
head = p;
}
else /*若原链表为非空,则将新建节点添加到表尾*/
{
/*若未到表尾,则继续移动指针pr,直到pr指向表尾*/
while (pr->next != NULL)
{
pr = pr->next;
}
pr->next = p; /*将新建节点添加到链表的末尾*/
}
pr = p; /*让pr指向新建节点*/
printf("Input node data......");
printf("\nInput number:");
scanf("%d", &p->number);
printf("Input name:");
scanf("%s", p->name);
for (j=0; j<m; j++)
{
printf("Input salary%d:", j+1);
scanf("%d", p->salary+j);
}

pr->next = NULL; /*将新建节点置为表尾*/
return head; /*返回添加节点后的链表的头节点指针*/
}

STU *ModifyNode(STU *head, int nodeNum, const int m)
{
int j;
STU *newNode;

newNode = SearchNode(head, nodeNum);
if (newNode == NULL)
{
printf("Not found!\n");
}
else
{
printf("Input the new node data:\n");
printf("Input name:");
scanf("%s", newNode->name);
for (j=0; j<m; j++)
{
printf("Input salary%d:", j+1);
scanf("%d", newNode->salary+j);
}
}
return head;
}

STU *DeleteNode(STU *head, int nodeNum)
{
STU *p = head, *pr = head;

if (head == NULL) /*链表为空,没有节点,无法删除节点*/
{
printf("No Linked Table!\n");
return(head);
}
/*若没找到节点nodeNum且未到表尾,则继续找*/
while (nodeNum != p->number && p->next != NULL)
{
pr = p;
p = p->next;
}
if (nodeNum == p->number) /*若找到节点nodeNum,则删除该节点*/
{
if (p == head) /*若待删节点为首节点,则让head指向第2个节点*/
{
head = p->next;
}
else /*若待删节点非首节点,则将前一节点指针指向当前节点的下一节点*/
{
pr->next = p->next;
}

free(p); /*释放为已删除节点分配的内存*/
}
else /*没有找到待删除节点*/
{
printf("This Node has not been found!\n");
}
return head; /*返回删除节点后的链表的头节点指针*/
}

STU *SearchNode(STU *head, int nodeNum)
{
STU *p = head;
int j = 1;

while (p != NULL) /*若不是表尾,则循环*/
{
if (p->number == nodeNum) return p;
p = p->next; /*让p指向下一个节点*/
j++;
}
return NULL;
}

void DeleteMemory(STU *head)
{
STU *p = head, *pr = NULL;

while (p != NULL) /*若不是表尾,则释放节点占用的内存*/
{
pr = p; /*在pr中保存当前节点的指针*/
p = p->next; /*让p指向下一个节点*/
free(pr); /*释放pr指向的当前节点占用的内存*/
}
}
凑合着用吧,一些缺少的功能自己加上去就行了。。。

5. 帮忙下c语言课程设计 统计工资

csdn 是个网站,上面的东西比较牛逼

6. 求C语言课程设计—职工工资统计部分的编程

1:数据结构抄设计
typedef struct member
{
int id ; //key
char name [64];
unsigned int age ;
int salary ;
};
2: 程序结构设计
a) 输入职工的基本信息
b) 查找(可根据姓名,ID, 年龄, 薪水)
c)统计某一范围的人数,计算平均工资值,等。
d) 输出模块
3)程序结构设计
设计函数 记住模块化。具体函数原型还是自己动手写吧。根据自己的使用喜欢。
4)测试和调试

大致思路是这样,希望对你有所帮助。

7. C++课程设计工资管理系统

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define FILENAME "staff.txt" //数据文件
/////////////////////////////////////////////
struct Staff //职工机构体
{
char CarNumber[10]; //卡号
char Name[10]; //姓名
int Month; //月份
float SPWages; //应发工资
float APWages; //实发工资
float Water; //水费
float Electrical; //电费
float Tax; //税金
};
////////////////////////////////////////////// 文件操作模块
FILE *FP; //全局文件指针
FILE * FileOpen(char FileName[]) //文件打开函数
{
FILE *fp;
if((fp=fopen(FileName,"r"))==NULL)
{
fp=fopen(FileName,"w");
cout<<"文件打开失败重新创建记录文件";
return fp;
}
fp=fopen(FileName,"r+");
return fp;
}

void FileClose(FILE *fp)
{
if(fclose(fp)==0)
cout<<"安全关闭"<<endl;
else
cout<<"文件关闭失败"<<endl;
}
////////////////////////////////////////////////
void Increase() //添加职工信息
{
FP=FileOpen(FILENAME);
Staff temp;
cout<<endl;
cout<<"请输入姓名:";
cin>>temp.Name;
cout<<"请输入卡号:";
cin>>temp.CarNumber;
cout<<"请输入月份:";
cin>>temp.Month;
cout<<"请输入应发工资:";
cin>>temp.SPWages;
cout<<"请输入水费:";
cin>>temp.Water;
cout<<"请输入电费:";
cin>>temp.Electrical;
if(temp.SPWages<=800) temp.Tax=0;
if((temp.SPWages>800.0)&&(temp.SPWages<1400.0)) temp.Tax=(temp.SPWages-800)*0.05;
if(temp.SPWages>1400){temp.Tax=(temp.SPWages-1400)*0.1;}
temp.APWages=temp.SPWages-temp.Water-temp.Electrical-temp.Tax;
fwrite(&temp,sizeof(temp),1,FP);
cout<<"信息添加成功,请选择浏览工资信息选项进行查看"<<endl;
FileClose(FP);
}
//////////////////////////////////////////////
void PrintInformation() //浏览工资信息
{
FP=FileOpen(FILENAME);
rewind(FP);
Staff temp;
while(fread(&temp,sizeof(Staff),1,FP)==1)
{
cout<<"姓名:"<<temp.Name<<endl;
cout<<"卡号:"<<temp.CarNumber<<endl;
cout<<"月份:"<<temp.Month<<endl;
cout<<"应发工资:"<<temp.SPWages<<endl;
cout<<"水费:"<<temp.Water<<endl;
cout<<"电费:"<<temp.Electrical<<endl;
cout<<"税金:"<<temp.Tax<<endl;
cout<<"实发工资:"<<temp.APWages<<endl;
cout<<endl;
}
FileClose(FP);
}
//////////////////////////////////////////////////
void Statistics() //统计工资信息
{
Staff temp;
char nametemp[10];
float sum=0;
int monthstart=0,monthover=0;
cout<<"请输入统计的人员姓名:"<<endl;
cin>>nametemp;
cout<<"请输入统计时间段的起始月份(如:3)";
cin>>monthstart;
cout<<"请输入统计时间段的终止月份(如:3)";
cin>>monthover;
FP=FileOpen(FILENAME);
while(fread(&temp,sizeof(Staff),1,FP)==1)
{
if(strcmp(temp.Name,nametemp)==0)
{
if(temp.Month>=monthstart&&temp.Month<=monthover)
{
sum=sum+temp.APWages;
}
}
}
cout<<"职工"<<nametemp<<"从"<<monthstart<<"月至"<<monthover<<"月合计"<<sum<<"元。"<<endl;

}
////////////////////////////////////////////////
void NameSearch()
{
char tempname[10];
Staff temp;
cout<<endl;
cout<<"请输入要查询的职工的名称:";
cin>>tempname;
FP=FileOpen(FILENAME);
while(fread(&temp,sizeof(Staff),1,FP)==1)
{
if(strcmp(temp.Name,tempname))
{
cout<<"姓名:"<<temp.Name<<endl;
cout<<"卡号:"<<temp.CarNumber<<endl;
cout<<"月份:"<<temp.Month<<endl;
cout<<"应发工资:"<<temp.SPWages<<endl;
cout<<"水费:"<<temp.Water<<endl;
cout<<"电费:"<<temp.Electrical<<endl;
cout<<"税金:"<<temp.Tax<<endl;
cout<<"实发工资:"<<temp.APWages<<endl;
cout<<endl;
}
}
FileClose(FP);
}
int Search()
{
int Choose=0;
while(1)
{
cout<<endl;
cout<<"请选择查询方式"<<endl;
cout<<"1、按照卡号查询"<<endl;
cout<<"2、按照姓名查询"<<endl;
cout<<"0、返回上级目录"<<endl;
cout<<"请输入查询方式:"<<endl;
cin>>Choose;
switch(Choose)
{
case 1:;break;
case 2:NameSearch();break;
case 0:return 0;break;
}
}
}
//////////////////////////////////////////////
void ShowMenu() //目录显示函数
{
int Choose=0;
while(1)
{
cout<<endl;
cout<<"工资信息管理系统"<<endl;
cout<<"1、添加工资信息。"<<endl;
cout<<"2、浏览工资信息。"<<endl;
cout<<"3、统计工资信息。"<<endl;
cout<<"4、查询工资信息。"<<endl;
cout<<"0、退出系统。"<<endl;
cout<<"请输入服务类型:";
cin>>Choose;
switch(Choose)
{
case 1:Increase();break;
case 2:PrintInformation();break;
case 3:Statistics();break;
case 4:Search();break;
case 0:exit(0);break;
}
}
}
void main()
{
ShowMenu();
}

8. 数据结构课程设计。关于工资的.要C语言编写的

员工工资表(员工号,姓名,工资,,,,)
1.插入:招聘新员工时,将其加入到系统中。
sql: insert into 员工工资表 values(员工号,,,,,)
2.删除:某位员工离开时,将其删除。
sql: delete from 员工工资表 where 员工号 = ?
3.修改:修改每位员工的工资时(包括长工资和减工资两种
情况)
sql: update 员工工资表 工资 = '新工资' where 员工号 = ?
4.查询:帮助老板查询某位员工的工资。
sql: select 工资 from 员工工资表 where 员工号 = ?
5.统计:统计员工的最高,最低,平均工资。
sql: select max(工资),min(工资),avg(工资) from 员工工资表

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919