工资管理系统C语言

Python019

工资管理系统C语言,第1张

代码还没有完善好,实在没时间了,最近太忙。先给你吧

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int addmenu()

int menu()

typedef struct teacher{

char name[32]

char unit[32]

float salary

float allowance

float tax

float total

struct teacher *next

}TEACHER//节点的结构体,包含数据和指针.

TEACHER *head//头节点

void init() //初始化头节点

{

head=(TEACHER *)malloc(sizeof(TEACHER))

head->next=NULL

}

void add(TEACHER *nod) //添加节点

{

if(head->next==NULL){

head=nod

}

else

{

nod->next=head->next

head->next=nod

}

}

TEACHER *search(char *s) //遍历整个链表并打印数据

{

TEACHER *nod=head

while(nod->next !=NULL)//!循环到最后一个节点,有问题。。

{

if((!strcmp(nod->name,s)) || (!strcmp(nod->unit,s))){

printf("姓名:%s\n单位:%s\n基本工资:%f\n津贴:%f\n扣税:%f\n总工资:%f\n",nod->name,nod->unit,nod->salary,nod->allowance,nod->tax,nod->tax)

return nod

}

nod++

}

printf("未找到数据\n")

return NULL

}

void modify(TEACHER *s)

{

char name[16],unit[16]

float salary,allowance,tax,total

gets(name)

strcpy(s->name,name)

gets(unit)

strcpy(s->unit,unit)

scanf("%f",&salary)

s->salary=salary

scanf("%f",&allowance)

s->allowance=allowance

scanf("%f",&tax)

s->tax=tax

scanf("%f",&total)

s->total=total

}

void del(char *s)

{

TEACHER *nod=head

while(nod->next !=NULL)

{

if((!strcmp(nod->next->name,s))||(!strcmp(nod->next->unit,s))){

nod->next=nod->next->next

nod->next=NULL

}

}

}

int addmenu()//添加教师信息子菜单

{

TEACHER *node

char command

float salary,allowance,tax,total

system("cls")

printf("****************************\n")

printf("*添加子菜单*\n")

printf("****************************\n")

printf("说明:4.返回主菜单 5.添加\n")

printf("请选择需要使用的功能:")

fflush(stdin)

while((command=getchar())!='4')

{

if(command==4)

break

printf("添加信息:\n")

node=(TEACHER *)malloc(sizeof(TEACHER))

fflush(stdin)

printf("姓名:")

fflush(stdin)

gets(node->name)

printf("单位:")

fflush(stdin)

gets(node->unit)

printf("基本工资:")

fflush(stdin)

scanf("%f",&salary)

node->salary=salary

printf("津贴:")

scanf("%f",&allowance)

node->allowance=allowance

fflush(stdin)

printf("扣税:")

scanf("%f",&tax)

node->tax=tax

fflush(stdin)

printf("总工资:")

scanf("%f",&total)

node->total=total

fflush(stdin)

add(node)

fflush(stdin)

printf("输入c退出,其他字符继续\n")

if((command=getchar())=='c')

break

}

return 0

}

int save()

{

TEACHER *nod=head

FILE *fp

if((fp=fopen("teacher.txt","w+")) == NULL)

{

printf("打开文件异常\n")

return 0

}

while(nod->next != NULL)

{

if(fwrite(nod,sizeof(TEACHER),1,fp)!=1){

printf("写入异常\n")

return 0

}

nod++

}

fclose(fp)

return 1

}

int searchmenu()

{

char name[16]

char command

system("cls")

printf("****************************\n")

printf("* 查询和修改子菜单*\n")

printf("****************************\n")

printf("说明:4.返回主菜单 5.通过姓名/查找 6.修改 \n")

fflush(stdin)

printf("请输出需要实现的操作:")

while((command=getchar()) !='4')

{

switch(command)

{

case '4': break

case '5':

printf("请输入需要查找的姓名:")

fflush(stdin)

gets(name)

search(name)

break

// case '6': modify()break

}

printf("请输出需要实现的操作:")

}

return 0

}

int menu()

{

char command

int i,j=10

system("cls")

printf("****************************\n")

printf("* 工资管理系统 *\n")

printf("****************************\n")

printf("----------------------------\n")

printf("说明:1.添加 2.查询/修改 3.保存 4.退出\n")

printf("----------------------------\n")

printf("请输出需要实现的操作:")

while((command=getchar())!='4'){

switch(command)

{

case '1': addmenu()break

case '2': searchmenu()break

case '3': i=save()if(i)printf("保存成功!\n")while(j--)break

}

fflush(stdin)

/*子函数退出后再次显示主界面*/

system("cls")

printf("****************************\n")

printf("* 工资管理系统 *\n")

printf("****************************\n")

printf("----------------------------\n")

printf("说明:1.添加 2.查询/修改 3.保存 4.退出\n")

printf("----------------------------\n")

printf("请输出需要实现的操作:")

}

printf("******感谢您使用本系统******\n")

return 0

}

int main()

{

init()

menu()

return 0

}

程序名称:工资管理系统

程序说明:

该系统在磁盘上储存了某单位上月全体员工的工资信息,对于每一位职工存储以下信息:

月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通补贴,应发数,房租,储蓄,

会费,个人所得税,应扣数,实发数。

工资管理系统详细代码参考一下http://wenku.baidu.com/view/c9af1211cc7931b765ce15d3.html

#include<iostream.h>

#include<stdlib.h>

#include<string.h>

#include<iomanip.h>

using namespace std

#define OK 1

#define ERROR 0

typedef struct LNode{

char num[20]

char name[20]

double basic

double reward

double total

struct LNode *next

}LNode,*LinkListint initlist(LinkList &L)

{ L=(LinkList)malloc(sizeof(LNode))

L->next=NULL

return OK

} int DisplayInfo(LinkList L)

{

LinkList p=L->next

if(!p)

{

cout<<"当前无记录!"<<endl

return ERROR

}

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endlwhile(p!=NULL)

{

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

p=p->next

}

cout<<'\n'<<'\n'

return OK

} int InputInfo(LinkList &L)

{

LinkList pp=(LinkList)malloc(sizeof(LNode))

cout<<"请输入职工工资信息:(格式如:2001001 james 1980 600 )"<<endl

cin>>p->num

cin>>p->name

cin>>p->basic

cin>>p->reward

p->total=p->basic+p->reward

p->next=L->next

L->next=preturn OK

}int DeleteByCode(LinkList &L,char key[])

{

LinkList p=L,q

while(p->next!=NULL)

{

if(strcmp(p->next->num,key)==0)

{

q=p->next

p->next=q->next

free(q)

return OK

}

p=p->next

}

return ERROR} int Search(LinkList L,int tag)

{

LinkList p=L->next

if(tag==1)

{

char num[20]

cout<<"请输入要查找职工编号号:"<<endl

cin>>num

while(p)

{

if(strcmp(p->num,num)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<'\n'

return OK

}

p=p->next

}

}

else if(tag==2)

{

char name[20]

cout<<"请输入要查找的姓名:"<<endl

cin>>name

while(p)

{

if(strcmp(p->name,name)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<'\n'

return OK

}

p=p->next

}

}

else

cout<<"输入错误!"<<endl

return ERROR}

int Sort(LinkList &L)

{

LinkList p

LinkList q,min,w=L

for(p=L->nextp->nextp=p->next)

{

min=p

for(q=p->nextqq=q->next)if(min->total>q->total)

min=q if(min!=p)

{strcpy(w->num,p->num)

strcpy(w->name,p->name)

w->basic=p->basic

w->reward=p->reward

w->total=p->total

strcpy(p->num,min->num)

strcpy(p->name,min->name)

p->basic=min->basic

p->reward=min->reward

p->total=min->total

strcpy(min->num,w->num)

strcpy(min->name,w->name)

min->basic=w->basic

min->reward=w->reward

min->total=w->total }

}

return OK

}

int change(LinkList &L)

{

LinkList p=L->next

char q[20]

cout<<"请输入要修改的职工编号号:"<<endl

cin>>q

while(p)

{

if(strcmp(p->num,q)==0)

{

cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl

cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl

cout<<"请重新输入该职工的工资信息:"<<endl

cin>>p->basic

cin>>p->reward

cout<<'\n'

return OK

}

p=p->next

}

}

int Menu(LinkList &S)

{

int sign=1

while(sign)

{

int i

cout<<"请选择要进行的操作:1:插入 2:删除 3:输出 4:查找 5:排序 6:修改 0:退出"<<endl

cin>>i

if(i==1)

{ if(InputInfo(S))

cout<<"操作成功!"<<endl

cout<<'\n'

}

else if(i==2)

{

char num[20]

cout<<"请输入要删除的职工编号:"<<endl

cin>>num if(DeleteByCode(S,num))

cout<<"操作成功!"<<endl else

{

cout<<"此编号不存在!"<<endl

cout<<'\n'

}

}

else if(i==3)

DisplayInfo(S)

else if(i==4)

{

int tag

cout<<"1:按编号查找 2:按姓名查找 "<<endl

cin>>tag

if(!Search(S,tag))

cout<<"未找到!"<<endl

cout<<'\n' }

else if(i==5)

{

if(Sort(S))

cout<<"操作成功!"<<endl

cout<<'\n'

}

else if(i==6)

{

if(change(S))

cout<<"修改成功!"<<endl

} else if(i==0)

sign=0

else

cout<<"输入有误,请重新输入!"<<endl

cout<<'\n'

}

return OK

}

int main()

{

LinkList S

initlist(S)

Menu(S)

return OK} 已经调试无bug 有问题的话联系我。