当前位置:首页 » 编程语言 » c语言工资管理系统课程设计

c语言工资管理系统课程设计

发布时间: 2023-07-09 23:20:15

‘壹’ 用c语言课程设计—职工工资管理系统(分别用结构体数组和链表编写程序)

#include<stdio.h>
#define NUM 100
void input()
;void search()
;void search_num();
void dele()
;void dele_name();
void dele_num()
;void modi()
;void modi_num();
void output()
;void stat()
;void fun()
;void run();
struct emploee /*职工数据结构*/
{
char no[5];
char name[8];
char sex[3];
int age;
int salar;
}emp[NUM],newemp;
main()
{int x;
printf(" 1. 输入职工记录\n");
printf(" 2. 查询职工记录\n");
printf(" 3. 修改职工记录\n");
printf(" 4. 删除职工记录\n");
printf(" 5. 打印职工记录\n");
printf(" 6. 调查工资情况\n");
printf(" 7. 追加职工记录\n");
printf(" 8. 结束使用\n");
printf(" 0. 退出系统\n");
printf("\n");
printf("*** 欢迎使用职工工资管理系统 ***\n");
printf("请选择(0-8):\n");
scanf("%d",&x);
switch(x)
{
case 1: input();break;
case 2: search();break;
case 3: modi();break;
case 4: dele();break;
case 5: output();break;
case 6: stat();break;
case 7: run();break;
case 8: fun();break;
default:printf("\n Wrong!");
}
if(x==0)break;
}
}
void input()
{
FILE *fp;
int n,i;
if ((fp=fopen("emp","wb"))==NULL)
{

printf("不能建立emp文件\n");
exit(1);
}
printf("输入职工人数:");
scanf("%d",&n);
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n");
for(i=0;i<n;i++) /* 循环获取n个职工记录 */
{
printf("第%d个职工:",i+1);
scanf("%s%s%s%d%d",emp[i].no,emp[i].name,emp[i].sex,
&emp[i].age,&emp[i].salar);
}
for(i=0;i<n;i++) /*将n个职工记录写入文件*/
fwrite(&emp[i],sizeof(struct emploee),1,fp);
fclose(fp);
}
/*************************统计模块**********************/
void stat( )
{
FILE *fp;
int n,num;
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("工资数:");
scanf("%d",&num);
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(n=0;fread(&emp,sizeof(struct emploee),1,fp);n++)
if(emp[n].salar>=num)
printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar);
fclose(fp);
}
/********************删除模块*******************/

void dele()
{
int x;
while(1)
{
printf("\n\n\t\t删除子菜单\n");
printf("\t\t*********\n");
printf("\t\t 1.按职工号删除记录\n");
printf("\t\t 0.返回主菜单\n");
printf("\t\t*********\n");
printf("\t 请选择(0-1):");
scanf("%d",&x);
switch(x)
{case 1:dele_num();break;
default:printf("\nWrong!");
}
if(x==0)break;
}
}
void dele_num()
{
FILE *fp;
int i,j,n;
char num[5];
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("删除前:\n");
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(n=0;fread(&emp[n],sizeof(struct emploee),1,fp);n++)
printf("%6s%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar); /*n为emp文件中记录数*/
printf("要删除的职工号:");
scanf("%s",num);

for(i=0;(strcmp(emp[i].no,num)!=0&&i<n);i++)
if(i>=n)
{
printf("\t没有%s职工号的职工\n",num);
exit(2);
}
fclose(fp);
fp=fopen("emp","w+");
if(n==1) /*一个记录已经删除了*/
{
fclose(fp);
exit(3);
}
for(j=0;j<i;j++)
fwrite(&emp[j],sizeof(struct emploee),1,fp);
for(j=i+1;j<n;j++)
fwrite(&emp[j],sizeof(struct emploee),1,fp);
printf("删除后:\n");
fseek(fp,0,SEEK_SET);
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
printf("%6s%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/********************修改模块*******************/
void modi()
{
int x;
while(1)
{
printf("\n\n\t\t修改子菜单\n");
printf("\t\t*********************\n");
printf("\t\t1. 按职工号修改\n");
printf("\t\t0. 返回主菜单\n");
printf("\t\t*********************\n");

printf("\t请选择(0-1):");
scanf("%d",&x);
switch(x)
{
case 1:modi_num();break;
default:printf("\n输错误!");
}
if(x==0)break;
}
}
void modi_num()
{
FILE *fp;
int i,j;
char num[5];
if((fp=fopen("emp","rb+"))==NULL)
{
printf("不能 打开emp文件\n");
exit(1);
}
printf("要修改的职工号:");
scanf("%s",num);
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
if(!strcmp(emp[i].no,num))break;
if(feof(fp))
{
printf("\t没有%s职工号的职工\n",num);
exit(2);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n");
printf("第%d个记录:",i+1);
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar);/*获取新的职工记录*/

fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR);
/*文件指针指向该修改的记录开头*/
fwrite(&newemp,sizeof(struct emploee),1,fp);/*用newemp覆盖当前记录*/
printf(" 修改后:\n");
fseek(fp,0,SEEK_SET);/*显示修改后的文件数据*/
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp)!=0;i++)
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/*************************查询模块***********************/
void search( )
{
int x;
while(1)
{
printf("\n\n\t\t查子菜单\n");
printf("\t\t********************\n");
printf("\t\t 1.按职工号查询\n");
printf("\t\t 0.返回主菜单\n");
printf("\t\t********************\n");
printf("\t请选择(0-1):");
scanf("%d",&x);
switch(x)
{
case 1:search_num();break;
default :printf("\n Wrong!");
}
if(x==0) break;
}
}
void search_num()
{
FILE *fp;
int i;

char num;
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("要查询的职工号:");
scanf("%s",num);
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
if(!strcmp(emp[i].no,num)) break;
if(feof(fp))
{
printf("\t查无此人\n");
exit(2);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/*******************输出模块********************/
void output()
{int i;
FILE *fp;
if((fp=fopen("emp","r"))==NULL)
{printf("不能打开emp文件\n");
exit(0);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp)!=0;i++)
{
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
}
fclose(fp);
}
/******************追加模块*******************/
void run()
{
FILE *fp;
int n,i,j;
if((fp=fopen("emp","ab+"))==NULL)
{printf("不能打开emp文件\n");
exit(0);
}
printf("要追加的职工人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("输入格式:职工号 姓名 性别 年龄 工资<enter>\n");
printf("职工记录:");
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar);
/*获取一个职工记录*/
fwrite(&newemp,sizeof(struct emploee),1,fp);
/*将该职工记录写入文件*/
}
fclose(fp);
}
/*******************显示模块****************/
void fun()
{printf("\t\t******************************************\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t* 谢 谢 使 用 ! *\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t******************************************\n");
}

‘贰’ c语言程序设计、工资管理系统

#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct
{
char num[10];
char name[20];
char date[15];
double pay;
}employee;
typedef struct node
{
employee p;
struct node *pre;
struct node *next;
}node,*linklist;

linklist head,last;

void setData(linklist p)
{
printf("编号:");
scanf("%s",&p->p.num);
printf("姓名:");
scanf("%s",&p->p.name);
printf("入职时间:");
scanf("%s",&p->p.date);
printf("工资:");
scanf("%lf",&p->p.pay);
}

void Insert(linklist p)
{
setData(p);
p->next=last;
last->pre->next=p;
p->pre=last->pre;
last->pre=p;
}
void Add()
{
char ch;
do
{
linklist p=(linklist)malloc(sizeof(node));
system("cls");
Insert(p);
printf("是否继续?");
scanf(" %c",&ch);
}while(ch=='y'||ch=='Y');
}

linklist Qur(int method)
{
char ch[20];
linklist p=head->next;
if(method==0)
{
printf("选择查询方式:(1 姓名、2 年月)");
scanf("%d",&method);
}
if(method==1)
{
printf("输入姓名:");
scanf("%s",ch);
while(p!=last)
{
if(strcmp(ch,p->p.name)==0) break;
p=p->next;
}
}
else if(method==2)
{
printf("输入年月:");
scanf("%s",ch);
while(p!=last)
{
if(strcmp(ch,p->p.date)==0) break;
p=p->next;
}
}
if(p==last) {printf("未找到\n");system("pause");}
return p;
}

void Del()
{
linklist p=Qur(1);
if(p==last) return;
p->pre->next=p->next;
p->next->pre=p->pre;
free(p);
printf("删除成功\n");
system("pause");
}

void Modify()
{
linklist p=Qur(1);
if(p==last) return ;
setData(p);
}
void printTitle()
{
printf("编号\t名称\t入职日期\t工资\n");
}

void show(linklist p)
{
printf("%s\t%s\t%s\t%.2lf\n",p->p.num,p->p.name,p->p.date,p->p.pay);
}
void Sort()
{
linklist p,q;
for (p=head->next;p!=last;p=p->next)
{
for (q=p->next;q!=last;q=q->next)
{
if(p->p.pay<q->p.pay)
{
employee temp=p->p;
p->p=q->p;
q->p=temp;
}
}
}
printf("完成\n");
system("pause");
}

void Tongji()
{
linklist p=head->next;
Sort();
printTitle();
while(p!=last)
{
show(p);
p=p->next;
}
system("pause");
}

void Wrong()
{
printf("输入错误!\n");
system("pause");
}
void menu(void)
{
system("cls");
printf("********工资管理系统*******\n");
printf("* *\n");
printf("* 1:添加 *\n");
printf("* 2:删除 *\n");
printf("* 3:查询 *\n");
printf("* 4:修改 *\n");
printf("* 5:统计 *\n");
printf("* 6:排序 *\n");
printf("* 0:退出 *\n");
printf("* *\n");
printf("*******************************\n");
}

int select()
{
int choose;
scanf("%d",&choose);
switch(choose)
{
case 1:Add();break;
case 2:Del();break;
case 3:
{
linklist p=Qur(0);
if(p!=last) {show(p);system("pause");}break;
}
case 4:Modify();break;
case 5:Tongji();break;
case 6:Sort();break;
case 0:break;
default:Wrong();break;
}
return choose;
}
void destroy()
{
linklist p=head->next;
while(p!=last)
{
head->next=p->next;
free(p);
p=head->next;
}
free(head);
free(last);
}
int main(void)
{
head=(linklist)malloc(sizeof(node));
last=(linklist)malloc(sizeof(node));
head->next=last;
last->next=NULL;
last->pre=head;
head->pre=NULL;
do
{
menu();
} while (select()!=0);
destroy();
return 0;
}

‘叁’ 用C语言设计职工工资管理系统

#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,*LinkList; int 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)<<"工资总额"<<endl; while(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 p; p=(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=p; return 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->next;p->next;p=p->next)
{
min=p;
for(q=p->next;q;q=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 有问题的话联系我。

热点内容
汇编语言调用c语言 发布:2025-02-09 00:19:25 浏览:335
网络编程http 发布:2025-02-09 00:18:33 浏览:62
php的点餐系统 发布:2025-02-09 00:17:03 浏览:600
安卓区转苹果区会发生什么 发布:2025-02-09 00:16:26 浏览:131
c语言编译完怎么执行 发布:2025-02-09 00:16:16 浏览:27
AMD平台对应的C编译器 发布:2025-02-09 00:15:35 浏览:68
行李箱的密码锁哪里修 发布:2025-02-08 23:58:14 浏览:531
c语言字母ascii码表 发布:2025-02-08 23:55:49 浏览:838
笔记本电脑一般存储空间 发布:2025-02-08 23:51:15 浏览:835
php网站优化 发布:2025-02-08 23:49:41 浏览:455