當前位置:首頁 » 編程語言 » c語言課程設計工資管理系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言課程設計工資管理系統

發布時間: 2022-08-16 12:46:03

① 用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語言

代碼還沒有完善好,實在沒時間了,最近太忙。先給你吧

#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;
}

③ vc6.0C語言課程:工資管理系統,謝謝

#include "stdafx.h"
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;

/*
編號、姓名、部門、應付工資、保險、稅金、實付工資。
其中實付工資由公式計算得到:實付工資=應付工資 - 保險- 稅金
*/
struct employee{
string m_num;//編號
string m_name;//姓名
string m_dep;//部門
double m_salary;//應付工資
double m_insurance;//保險
double m_tax;//稅金
};

/*
(1)錄入:輸入職工數據,其中「實付工資」通過計算得到;
(2)刪除:刪除指定的職工信息(輸入姓名,若找到則刪除該信息)
(3) 修改:允許對已經錄入的數據重新進行編輯、修改;
(4) 顯示:顯示全體職工數據;
(5)查詢:
a. 輸入職工姓名,顯示該職工的全部數據;
b. 輸入某部門值,顯示該部門職工的數據、工資總額、平均工資。
(6) 退出程序。
*/

list<employee> emps;

int _tmain(int argc, _TCHAR* argv[])
{
void print(const employee &e);
void input();
void del();
void mod();
void show_all();
void show_name();
void show_dep();

cout<<"簡易職工薪水管理程序 by 做他\n";// delete this line
cout<<"版權沒有 請隨意復制或修改任何代碼\n";//delete this line

cout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
int choose=0;
cin>>choose;
assert(!cin.fail());
while (choose!=6)
{
if (choose==1) input();
if (choose==2) del();
if (choose==3) mod();
if (choose==4)
{
int choice=0;
cout<<"請選擇操作 1.按姓名查詢 2.按部門查詢 3.退出:";
cin>>choice;
if (choice==1) show_name();
if (choice==2) show_dep();
if (choice==3)
{
cout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
cin>>choose;
assert(!cin.fail());
continue;
}
}
if (choose==5) show_all();
cout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
cin>>choose;
assert(!cin.fail());
}
return 0;
}

void print(const employee &e)
{
cout<<"編號:"<<e.m_num<<endl;
cout<<"姓名:"<<e.m_name<<endl;
cout<<"部門:"<<e.m_dep<<endl;
cout<<"保險:"<<e.m_insurance<<endl;
cout<<"稅金:"<<e.m_tax<<endl;
cout<<"應付工資:"<<e.m_salary<<endl;
cout<<"實付工資:"<<e.m_salary-e.m_insurance-e.m_tax<<endl;
}

④ c語言程序設計、工資管理系統

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num;
char name[10];
char cheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
}em[100]; /*定義一個結構體*/

void menu();
void input();
void save(int);
void display();
void del();
void search();
void search_cheng();
void search_name();
void modify(); /*定義各函數*/
void menu() /*菜單函數*/
{
printf("\n");
printf(" 網計091 第7小組\n");
printf("\n");
printf(" ******************職工信息管理****************\n");
printf(" 1.錄入職工信息");
printf(" 2.瀏覽職工信息\n");
printf(" 3.查詢職工信息");
printf(" 4.刪除職工信息\n");
printf(" 5.修改職工信息\n");
printf(" 6.退出\n");
printf(" ********************謝謝使用******************\n");
printf("\n");
printf("\n");

}

void main()
{

int n,flag;
char a;
while(1)
{
do
{
menu(); /*調用菜單函數*/
printf("請選擇你需要操作的步驟(1--6):\n");
scanf("%d",&n);
if(n>=1&&n<=6)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);

switch(n)
{
case 1:printf(" 輸入職工信息\n");printf("\n");input();break;
case 2:printf(" 瀏覽職工信息\n");printf("\n");system("cls");display();break;
case 3:printf(" 按職工號查詢職工信息\n");printf("\n");system("cls");search();break;
case 4:printf(" 刪除職工信息\n");printf("\n");system("cls");del();break;
case 5:printf(" 修改職工信息\n");printf("\n");system("cls");modify();break;
case 6:goto la;
default :break;
}

}
la:
system("cls");
printf("\n\n\n\n\n 謝謝使用!\n");
}

void input() /*錄入函數*/
{
int i,m;
printf("請輸入需要創建信息的職工人數(1--100):\n");
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("請輸入職工號: ");
scanf("%d",&em[i].num); //這里的代碼錯,要用數組下標
printf("\n");
printf("請輸入姓名: ");
scanf("%s",em[i].name);//這里的代碼錯,要用數組下標
getchar();
printf("請輸入職稱: ");
scanf("%c",&em[i].cheng);//這里的代碼錯,要用數組下標
printf("請輸入基本工資: ");
scanf("%d",&em[i].jiben);//這里的代碼錯,要用數組下標
printf("請輸入獎金: ");
scanf("%d",&em[i].jiangjin);//這里的代碼錯,要用數組下標
printf("請輸入保險: ");
scanf("%d",&em[i].baoxian);//這里的代碼錯,要用數組下標
printf("請輸入雜費: ");
scanf("%d",&em[i].zafei);//這里的代碼錯,要用數組下標

em[i].shiji=em[i].jiben + em[i].jiangjin - em[i].baoxian - em[i].zafei;//這里的代碼錯,要用數組下標
printf("\n");

}
printf("\n創建完畢!\n");system("cls");
save(m);
}

void save(int m) /*保存文件函數*/
{
int i;
FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) /*創建文件並判斷是否能打開*/
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i<m;i++) /*將內存中職工的信息輸出到磁碟文件中去*/
if (fwrite(&em,sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

int load() /*導入函數*/
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&em,sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}

void display() /*瀏覽函數*/
{
int i;
int m=load();
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
for(i=0;i<m;i++) /*m為輸入部分的職工人數*/
printf("\n %d\t %s\t %c\t %d\t %d\t %d\t %d\t %d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji); //這里的代碼錯,要用數組下標

printf("按任意鍵繼續\n");
getchar();getchar();system("cls");
}

void del() /*刪除函數*/
{

int m=load();
int i,j,n,t,flag;
char name1[10];
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要刪除的職工的姓名:\n");
scanf("%s",name1);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name1)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
printf("\n確實要刪除此人信息請按1,不刪除請按0\n");
scanf("%d",&n);
if(n==1) /*如果刪除,則其他的信息都往上移一行*/
{
for(j=i;j<m-1;j++)
{
em[j]=em[j+1];

}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n對不起,查無此人!\n");
printf("\n 瀏覽刪除後的所有職工信息:\n");
save(m); /*調用保存函數*/
display(); /*調用瀏覽函數*/
printf("\n繼續刪除請按1,不再刪除請按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}system("cls");
}

void search()/*查詢函數*/
{
int t,flag;
do
{
printf("\n按姓名查詢請按1 ; 按職稱查詢請按2 ; 進入主函數按3\n");
scanf("%d",&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}while(flag==0);system("cls");
while(flag==1)
{
switch(t)
{
case 1:printf("按姓名查詢\n");search_name();break;
case 2:printf("按職稱查詢\n");search_cheng();break;
case 3:main();break;
default:break;
}
system("cls");
}
}
void search_name()
{
char name1[10];
int i,t;
int m=load();
printf("請輸入要查找的姓名:\n");
scanf("%s",name1);
for(i=0;i<m;i++)
if(strcmp(name1,em[i].name)==0)
{
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
break;
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢職工號請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2: break;
default:break;
}
}

void search_cheng()
{
char cheng;
int i,t=0;
int m=load();
system("cls");
printf("請輸入要查找的職稱:\n");
scanf("%c",&cheng); //這里要用地址
for(i=0;i<m;i++)
if(em[i].cheng==cheng)
{
printf("\n已找到,其記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本工資\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);

}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1,繼續查詢學歷請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:system("cls");search();break;
case 2:break;
default :break;
}
}

void modify() /*修改函數*/
{
int num;
char name[10];
char cheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
int b,c,i,n,t,flag;
int m=load(); /*導入文件內的信息*/
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要修改的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t職稱\t基本\t獎金\t保險\t雜費\t實際工資 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
printf("\n確實要修改此人信息請按1 ; 不修改請按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要進行修改的選項\n 1.職工號 2.姓名 3.職稱 4.基本工資 5.獎金 6.保險 7.雜費 8.實際工資\n");
printf("請輸入你想修改的那一項序號:\n");
scanf("%d",&c);
if(c>8||c<1)
printf("\n選擇錯誤,請重新選擇!\n");
}
flag=0;
}

}
if(flag==1)
printf("\n對不起,查無此人!\n");
do
{
switch(c) /*因為當找到第i個職工時,for語句後i自加了1,所以下面的應該把改後的
信息賦值給第i-1個人*/
{
case 1:printf("職工號改為: ");
scanf("%d",&num);
em[i-1].num=num;
break;
case 2:printf("姓名改為: ");
scanf("%s",name);
strcpy(em[i-1].name,name);
break;
case 3:printf("職稱改為: ");
getchar();
scanf("%c",&cheng);
em[i-1].cheng=cheng;
break;
case 4:printf("基本工資改為: ");
scanf("%d",&jiben);
em[i-1].jiben=jiben;
break;
case 5:printf("獎金改為: ");
scanf("%d",&jiangjin); //這里要用地址
em[i-1].jiangjin=jiangjin;
break;
case 6:printf("保險改為: ");
scanf("%d",&baoxian);//這里要用地址
break;
case 7:printf("雜費改為: ");
scanf("%d",&zafei);//這里要用地址
em[i-1].zafei=zafei;
break;
case 8:printf("實際工資改為: ");
scanf("%d",&shiji);
em[i-1].shiji=shiji;
break;
}
printf("\n");
printf("\n是否確定所修改的信息?\n 是 請按1 ; 不,重新修改 請按2: \n");
scanf("%d",&b);

}
while(b==2);
printf("\n瀏覽修改後的所有職工信息:\n");
printf("\n");
save(m);
display();
printf("\n繼續修改請按1,不再修改請按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();break;
case 0:break;
default :break;
}system("cls");

}

⑤ c語言編一個工資管理系統 本系統能夠方便、靈活地實現職工工資的輸入、添加、刪除等編輯操作以及查詢等

*/#include "stdafx.h"
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;/*
編號、姓名、部門、應付工資、保險、稅金、實付工資。
其中實付工資由公式計算得到:實付工資=應付工資 - 保險- 稅金
*/
struct employee{
string m_num;//編號
string m_name;//姓名
string m_dep;//部門
double m_salary;//應付工資
double m_insurance;//保險
double m_tax;//稅金
};/*
(1)錄入:輸入職工數據,其中「實付工資」通過計算得到;
(2)刪除:刪除指定的職工信息(輸入姓名,若找到則刪除該信息)
(3) 修改:允許對已經錄入的數據重新進行編輯、修改;
(4) 顯示:顯示全體職工數據;
(5)查詢:
a. 輸入職工姓名,顯示該職工的全部數據;
b. 輸入某部門值,顯示該部門職工的數據、工資總額、平均工資。
(6) 退出程序。
*/list<employee> emps;int _tmain(int argc, _TCHAR* argv[])
{
void print(const employee &e);
void input();
void del();
void mod();
void show_all();
void show_name();
void show_dep();cout<<"簡易職工薪水管理程序 by 做他\n";// delete this line
cout<<"版權沒有 請隨意復制或修改任何代碼\n";//delete this linecout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
int choose=0;
cin>>choose;
assert(!cin.fail());
while (choose!=6)
{
if (choose==1) input();
if (choose==2) del();
if (choose==3) mod();
if (choose==4)
{
int choice=0;
cout<<"請選擇操作 1.按姓名查詢 2.按部門查詢 3.退出:";
cin>>choice;
if (choice==1) show_name();
if (choice==2) show_dep();
if (choice==3)
{
cout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
cin>>choose;
assert(!cin.fail());
continue;
}
}
if (choose==5) show_all();
cout<<"請選擇操作:1.錄入 2.刪除 3.修改 4.查詢 5.顯示所有員工 6.退出 :";
cin>>choose;
assert(!cin.fail());
}
return 0;
}void print(const employee &e)
{
cout<<"編號:"<<e.m_num<<endl;
cout<<"姓名:"<<e.m_name<<endl;
cout<<"部門:"<<e.m_dep<<endl;
cout<<"保險:"<<e.m_insurance<<endl;
cout<<"稅金:"<<e.m_tax<<endl;
cout<<"應付工資:"<<e.m_salary<<endl;
cout<<"實付工資:"<<e.m_salary-e.m_insurance-e.m_tax<<endl;
}void input()
{
string num,name,dep;
double salary,ins,tax;
cout<<"請輸入員工編號:";
cin>>num;
cout<<"請輸入員工姓名:";
cin>>name;
cout<<"請輸入員工部門:";
cin>>dep;
cout<<"請輸入員工保險:";
cin>>ins;
assert(!cin.fail());
cout<<"請輸入員工稅金:";
cin>>tax;
assert(!cin.fail());
cout<<"請輸入員工應付工資:";
cin>>salary;
assert(!cin.fail());
employee temp;
temp.m_dep=dep;
temp.m_insurance=ins;
temp.m_name=name;
temp.m_num=num;
temp.m_salary=salary;
temp.m_tax=tax;
emps.push_back(temp);
cout<<"員工錄入操作完畢.\n";
}void del()
{
if (emps.size()==0)
{
cout<<"沒有員工記錄.\n";
return;
}
string name;
bool isfind=false;
cout<<"請輸入要刪除的員工姓名:";
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
emps.erase(iter);
cout<<"姓名為\""<<name<<"\"的員工記錄已刪除.\n";
return;
}
}
if (!isfind)
{
cout<<"沒有找到姓名為\""<<name<<"\"的員工.\n";
return;
}
}void mod()
{
if (emps.size()==0)
{
cout<<"員工記錄為空.\n";
return;
}
bool isfind=false;
string name;
cout<<"請輸入要修改的員工姓名:";
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<<"姓名為\""<<name<<"\"的員工記錄已找到.\n";
break;
}
}
if (isfind)
{
string num,name,dep;
double tax,ins,salary;
print(*iter);
cout<<endl;
cout<<"請輸入新的員工編號:";
cin>>num;
cout<<"請輸入新的員工姓名:";
cin>>name;
cout<<"請輸入新的員工部門:";
cin>>dep;
cout<<"請輸入新的員工保險:";
cin>>ins;
assert(!cin.fail());
cout<<"請輸入新的員工稅金:";
cin>>tax;
assert(!cin.fail());
cout<<"請輸入新的員工工資:";
cin>>salary;
assert(!cin.fail());
iter->m_dep=dep;
iter->m_insurance=ins;
iter->m_name=name;
iter->m_num=num;
iter->m_salary=salary;
iter->m_tax=tax;
cout<<"1 員工記錄被成功修改.\n";
}
else
{
cout<<"沒有找到姓名為\""<<name<<"\"的員工記錄.\n";
}
}void show_all()
{
if (emps.size()==0)
{
cout<<"員工記錄為空.\n";
return;
}
cout<<"顯示全體員工數據:\n";
cout<<"--------------------\n";
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
cout<<endl;
print(*iter);
cout<<endl;
}
cout<<"--------------------\n";
}void show_name()
{
if (emps.size()==0)
{
cout<<"員工記錄為空.\n";
return;
}
bool isfind=false;
string name;
cout<<"請輸入要查詢的員工姓名:";
cin>>name;
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<<"姓名為\""<<name<<"\"的員工記錄已找到.\n";
print(*iter);
break;
}
}
if (!isfind)
{
cout<<"沒有找到姓名為\""<<name<<"\"的員工.\n";
return;
}
}void show_dep()
{
if (emps.size()==0)
{
cout<<"員工記錄為空.\n";
return;
}
double isfind=0.00;
double total_salary=0.00;
string dep;
cout<<"請輸入要查詢的部門名稱:";
cin>>dep;
cout<<"部門["<<dep<<"]的員工信息:\n";
cout<<"--------------------\n\n";
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_dep==dep)
{
isfind++;
total_salary+=iter->m_salary;
print(*iter);
cout<<endl;
continue;
}
}
cout<<"--------------------\n";
if (isfind==0)
{
cout<<"沒有找到名稱為["<<dep<<"]的部門.\n";
}
else
{
cout<<"部門["<<dep<<"]工資統計:\n";
cout<<"工資總額:"<<total_salary<<endl;
cout<<"平均工資:"<<total_salary/isfind<<endl;
}
}

⑥ 求救:c語言課程設計 員工工資管理程序 有加分的。謝謝

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define SIZE 50

/* 定義結構體 */
struct date
{int month;
int day;
int year;
};
typedef struct employee
{char name[50] ,num[10],sex,e[10],ty[15];
int age,income;
struct employee *next;
}empl[SIZE];

/* 逐項輸出鏈表中的內容 */
void view (struct employee* head)
{
struct employee * p;
p = head;
while (p != NULL)
{
printf("%-10s%-15s%3c%-10s%-8s%6d%9d\n", p->name, p->num,p->sex, p->e,p->ty, p->age,p->income);
p = p->next;
}
}

/* 定義保存函數 */
void save ()
{FILE *fp;
int i;
if ((fp=fopen("emp_list","wb"))==NULL)
{printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&empl,sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

/* 通過姓名查找職工 */
struct employee * Search1 (struct employee* head, char * name)
{
struct employee * p = head;
while (p && strcmp(p->name, name))
p = p->next;
return p;
}

/* 通過工號查找職工 */
struct employee * Search2 (struct employee* head, char * num)
{
struct employee * p = head;
while (p && strcmp(p->num, num))
p = p->next;
return p;
}

/* 刪除職工信息 */
void Delete (struct employee* head, char * i)
{
struct employee * p = head, *m, *q;
while (p && strcmp(p->num, i) != 0)
{
q = p;
p = p->next;
}
if ((q != NULL) && (q->next != NULL) && head != NULL)
{
m = q->next;
q->next = m->next;
free(m);
printf("刪除成功\n");
} else printf("職工不存在!\n");
}

/* 添加一個職工的信息 */
void AddHead (struct employee* head, char name [50], char num [10], char sex,char e[10],char ty[15], int age, int income) /*增加職工信息*/
{
struct employee * p, *q = head;
while (q->next != NULL)
q = q->next;
p = (struct employee* )malloc(sizeof(employee));
strcpy(p->name, name);
strcpy(p->num, num);
p->sex = sex;
strcpy(p->e, e);
strcpy(p->ty, ty);
p->age = age;
p->income = income;
p->next = NULL;
q->next = p;
}

void main (void)
{
int i, f, g;
struct employee * head, *s;
char a [50], b [50], t, e [15], h [15],x[8],d[20], k [15];
system("cls");
/* 為首地址分配空間 */
head=(struct employee* )malloc(sizeof(struct employee));
head->next=NULL;
/* 添加預置信息 */
AddHead(head, "張天", "0610312100", 'M', "高中", "保安" ,20,2600);
AddHead(head, "李行", "0610312101", 'M', "本科", "經理" ,36,5000);
AddHead(head, "周若", "0610312102", 'W', "本科", "會計" ,20,1600);
AddHead(head, "王昭", "0610312103", 'W', "碩士","工程師",27,6000);
AddHead(head, "劉系", "0610312104", 'M', "碩士","工程師",27,6000);
save();
for ( ; ; )
{
printf("--------------------------------------------------------\n");
printf("姓名 工號 性別 學歷 職務 年齡 工資\n");
view(head->next);
printf("--------------------------------------------------------\n");
printf("1.添加職工信息\n");
printf("2.刪除職工信息\n");
printf("3.根據姓名查找職工\n");
printf("4.根據工號查找職工\n\n");
printf("請作出你的選擇:");
scanf("%d", &i);
switch (i)
{
case 1:
printf("請輸入職工的信息:");
printf("\n姓名:");
scanf("%s", a);
printf("工號:");
scanf("%s", e);
printf("性別:");
getchar();
scanf("%c", &t);

printf("\n學歷:");
scanf("%s", x);
printf("職務:");
scanf("%s", d);
printf("年齡:");
scanf("%d", &f);
printf("工資:");
scanf("%d", &g);
AddHead(head, a, e, t, x,d,f, g);
system("cls");
break;
case 2:
printf("\n工號:");
scanf("%s", h);
Delete(head, h);
system("cls");
break;
case 3:
printf("請輸入職工的姓名:");
scanf("%s", b);
s = Search1(head, b);
system("cls");
printf("%-15s%-10s%3c%6d%-10s%-15s%9d\n", s->name, s->num,s->sex, s->e,s->ty,s->age, s->income);
break;
case 4:
printf("請輸入職工的工號:");
scanf("%s", k);
s = Search2(head, k);
system("cls");
printf("%-15s%-10s%3c%6d%-10s%-15s%9d\n", s->name, s->num,s->sex, s->e,s->ty,s->age, s->income);
break;
}
}
}

要求:

職工信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等(職工號不重復)。試設計一職工信息管理系統,使之能提供以下功能:

職工信息錄入(創建)功能(職工信息用文件保存)

職工信息瀏覽功能

查詢或排序功能:(至少一種查詢方式)
按工資查詢
按學歷查詢等

職工信息添加、刪除、修改功能

⑦ c語言編寫職工工資信息管理系統

這個是我自己做的管理系統,裡面的漢字什麼的你改下就OK了,比如把單價改成工資```總價改成總工資````數量改成月底百分比提成什麼的```其他的不用改的。看著行你就給分,好的話追加,感覺垃圾就罵我。
#include<stdio.h>
struct material
{int num;
char name[20];
char leibie[20];
char shijian[20];
int shuliang;
int price;
int total;
int delet ; }
work[50];
static n=1;int f,g=1,e;
FILE *fp1;
char fname[20];

jianli() /*創建新文件*/
{
int i,x=0;FILE *fp;
system("cls");
menu1();
menu2();
printf("\t\t\t 請輸入文件名!");
scanf("%s",fname);
fp=fopen(fname,"rb");
for(i=0;i<50;i++)
{fread(&work[i],sizeof(struct material),1,fp);
if(work[i].total!=0)x++;
}
fclose(fp);n=x;
}

r()
{
int i;FILE *fp;
if((fp=fopen(fname,"rb"))==NULL)
{
printf("\n\n\t\tcannot open file!\n");}
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
for(i=0;i<n;i++)
{
fread(&work[i],sizeof(struct material),1,fp);
if(work[i].delet==0)
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",
work[i].num,work[i].name,work[i].leibie,work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
}
fclose(fp);
}

r1()
{
int i;FILE *fp;
if((fp=fopen(fname,"rb"))==NULL)
{
printf("\n\n\t\tcannot open file!\n");}
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
for(i=0;i<n;i++)
{
fread(&work[i],sizeof(struct material),1,fp);
if(work[i].delet==1)
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
}
fclose(fp);
}

display2() /*顯示所有信息*/
{
int i,d=0;FILE *fp;
fp=fopen(fname,"rb");
system("cls");menu1();
printf("以下是所有材料信息!\n");
for(i=0;i<n;i++)
fread(&work[i],sizeof(struct material),1,fp);
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
for(i=0;i<n;i++)
if(work[i].delet==0)
{d++;
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
}
if(d==0)printf("沒找著,想好了再找!\n");
printf("退出請按任意數字鍵!\n");
scanf("%d",&i);
}

display1() /*顯示信息*/
{int i;int d=0;
printf("以下是排序後的信息 :\n");
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
for(i=0;i<n;i++)
if(work[i].delet==0)
{d++;
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
}
if(d==0){printf("沒找著,想好了再找!\n");system("pause");}
}

save() /*保存函數*/
{FILE *fp;int i;
system("cls");menu1();
printf("保存在原文件請按 1 另存為請按 2\n");
scanf("%d",&e);
while(1)
{
if(e==1)
{
if((fp=fopen(fname,"w"))==0)
{printf("cannot open\n");return;}
for(i=0;i<n;i++)
if(fwrite(&work[i],sizeof(struct material), 1,fp)!=1)
printf("error!\n");break;
}
else if(e==2)
{
printf("input jianli file name!\n");
scanf("%s",fname);
if((fp=fopen(fname,"w"))==0)
{printf("cannot open\n");return;}
for(i=0;i<n;i++)
if(fwrite(&work[i],sizeof(struct material), 1,fp)!=1)
printf("error!error!\n");break;
}
else printf("error!\n");
}
fclose(fp);
system("cls");menu1();
printf("OK了!\n\n");system("pause");
}

slect()
{
int d,i;system("cls");menu1();menu2();scanf("%d",&d);
if(d==1){add();slect();}
else if(d==2){display2();slect();}
else if(d==3){cha();slect();}
else if(d==4){delet();slect();}
else if(d==5){modify();slect();}
else if(d==6){order();slect();}
else if(d==7){recy();slect();}
else if(d==8){tongji();slect();}
else if(d==9){jianli();slect();}
else if(d==0){printf("exit!\n\n");exit();}
else {printf("error!\n");slect();}
}

cha() /*查詢*/
{
int i,num,c,suc=0,suc1;char name[20];FILE *fp;
fp=fopen(fname,"rb");
for(i=0;i<n;i++)
fread(&work[i],sizeof(struct material),1,fp);
while(1)
{
system("cls");menu1();
printf("您有兩種方式查詢:\n");
printf("輸入名稱請按 1 輸入材料號請按 2\n");
scanf("%d",&c);
system("cls");menu1();
if(c==1)
{printf("輸入名稱\n");
scanf("%s",name);break;}
else if(c==2)
{printf("輸入材料號\n");
scanf("%d",&num);break;}
else while(1)
{ system("cls");menu1();printf("輸入出錯啦!!!!\n");
printf("重輸請按 0 退出請按 1\n ");
scanf("%d",&suc);
if(suc==0||suc==1)
break;
else continue;
}
if(suc==1)break;
}

if(suc!=1)
{
for(i=0;i<n;i++)
if((strcmp(name,work[i].name)==0||num==work[i].num)&&work[i].delet==0)break;
if(i<n)
{ system("cls");menu1();
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
printf("請按任意數字鍵繼續!\n");
scanf("%d",&i);
}
else {system("cls");menu1();
printf(" I』m sorry!我都快死機了也沒找到....!\n\n",i);
printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}

while(1)
{ system("cls");menu1();
printf("繼續請按 0 退出請按 1\n ");
scanf("%d",&suc1);
if(suc1==0||suc1==1)
break;
else printf(" error!\n\n",i);
printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);
}
if(suc1==0) cha();
if(suc1==1) {printf("bye!\n");
system("pause");
}

}
else printf("bye!\n");
}

add() /*添加*/
{
int e,i,num,c,h,suc=0,suc1;char name[20];int a;
while(suc==0)
{if(n<50){a=n;n++;work[a].delet=0;}
else
{for(i=0;i<n;i++)
if(work[i].delet==2)break;
{a=i;work[a].delet=0;}
}
while(1)
{printf("文件已經存有以下信息:\n\n");
system("cls");menu1();r();
printf("請輸入編號:\n");
scanf("%d",&work[a].num);
for(h=0;h<n;h++)
{if(h==a)h++;
if((work[a].num==work[h].num)&&work[h].delet==0)break;
}
if(h<n)
{system("cls");menu1();
printf("編號重復!想好了再寫!\n"); printf("請按任意數字鍵繼續!\n");
scanf("%d",&i);
}
else break;
}
system("cls");menu1();r();
while(1)
{
printf("請輸入名稱:name\n");
scanf("%s",&work[a].name);
for(h=0;h<n;h++)
{if(h==a)h++;
if(strcmp(work[a].name,work[h].name)==0&&work[h].delet==0)break;
}
if(h<n)
{system("cls");menu1();printf("名稱重復!想好了寫!\n");
printf("請按任意數字鍵繼續!\n");
scanf("%d",&i);}
else break;
}
system("cls");menu1();r();
printf("請輸入類別:\n");
scanf("%s",&work[a].leibie);system("cls");menu1();r();
printf("請輸入登記時間:\n");
scanf("%s",&work[a].shijian);system("cls");menu1();r();
printf("請輸入數量:\n");
scanf("%d",&work[a].shuliang);system("cls");menu1();r();
printf("請輸入單價:\n");
scanf("%d",&work[a].price);system("cls");menu1();r();
work[a].total=work[a].shuliang*work[a].price;
work[a].delet=0;system("cls");menu1();r();
while(1)
{
printf("\n");
printf(" 保存請按 1 重輸請按 2\n");
scanf("%d",&e);
if(e==1){save();suc=1;break;}
else if(e==2){n--;break;}
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n");}
}
while(e==1)
{system("cls");menu1();
printf("繼續請按 0 退出請按 1\n");
scanf("%d",&suc);
if(suc==0||suc==1)break;
else {system("cls");menu1();printf("輸入有誤!想好了寫!\n\n");}
}
if(suc==1)break;
}
}

delet() /*刪除*/
{
char j;int e,i,num,c,suc=0;
char name[20];
system("cls");menu1();r();
while(1)
{
printf("請輸入您要刪除的材料的信息:名稱 或 材料號\n");
printf("\n");
printf("輸入名稱請按 1 輸入材料號請按2\n");
scanf("%d",&c);
system("cls");menu1();r();
if(c==1)
{printf("輸入名稱\n");
scanf("%s",name);break;}
else if(c==2)
{printf("輸入材料號\n");
scanf("%d",&num);break;}
else while(1)
{printf("輸入出錯啦!!!!\n");
printf("重輸請按 0 確認請按 1\n ");
scanf("%d",&suc);
if(suc==0||suc==1)
break;
else continue;
}
if(suc==1)break;
}
if(suc!=1)
{
for(i=0;i<n;i++)
if((strcmp(name,work[i].name)==0||num==work[i].num)&&work[i].delet==0)break;
if(i<n)
while(1)
{ system("cls");menu1();r();
printf("您要刪除 %s 的信息!\n ",work[i].name);
printf("\n");
printf("暫時刪除請按 1 永久刪除請按 2\n");
scanf("%d",&e);
if(e==1)
{work[i].delet=1;system("cls");menu1();printf("deleted sucessfully!\n\n");save();break; }
if(e==2)
{work[i].delet=2;system("cls");menu1();printf("deleted sucessfully!\n\n");save();break;}
else {system("cls");menu1(); printf(" 輸入出錯啦!!!!\n\n",i);
printf("繼續請按任意數字鍵!\n"); scanf("%d",&i);}
}
if(i>=n){system("cls");menu1(); printf(" I』m sorry!我都快死機了也沒找到....!\n\n",i);
printf("繼續請按任意數字鍵!\n"); scanf("%d",&i);}
while(1)
{system("cls");menu1();
printf("繼續請按 0 退出請按 1\n");scanf("%d",&e);
if(e==0||e==1)break;
else {system("cls");menu1();printf(" 輸入出錯啦!!!!\n\n",i);
printf("繼續請按任意數字鍵!\n");scanf("%d",&i);}
}
if(e==0)delet();
else printf("bye!\n");
}
}

modify() /*修改*/
{ char name[20];int i,e=1,a,h;
system("cls");menu1();
r();
printf("請輸入您要修改的材料的名稱!\n");
scanf("%s",name);
for(i=0;i<n;i++)

if(strcmp(work[i].name,name)==0&&work[i].delet==0)break;
if(i<n)
{system("cls");menu1();
printf("您要修改的材料的編號為num: %d, 修改 0 放棄修改 1\n",work[i].num);
scanf("%d",&e);
if(e==0)
while(1)
{ printf("請輸入編號:\n");

scanf("%d",&work[i].num);
for(h=0;h<n;h++)
{if(h==i)h++;
if((work[i].num==work[h].num)&&work[h].delet==0)break;
}
if(h<n) printf("編號重復!想好了寫!\n");
else break;
}
system("cls");menu1();
printf("您要修改的材料的名稱為:%s, 修改 0 放棄修改 1\n",work[i].name);
scanf("%d",&e);
if(e==0)
while(1)
{ printf("請輸入名稱:\n");
scanf("%s",&work[i].name);
for(h=0;h<n;h++)
{if(h==i)h++;
if(strcmp(work[i].name,work[h].name)==0&&work[h].delet==0)break;
}
if(h<n) printf("名稱重復!想好了寫!s\n");
else break;
}
system("cls");menu1();
printf("您要修改的材料的類別為 %s, 修改 0 放棄修改 1\n",work[i].leibie);
scanf("%d",&e);
if(e==0)
{printf("請輸入類別:\n");
scanf("%s",&work[i].leibie);}
system("cls");menu1();
printf("您要修改的材料的登記時間為:%s, 修改 0 放棄修改 1\n",work[i].shijian);
scanf("%d",&e);
if(e==0)
{printf("請輸入登記時間:\n");
scanf("%s",&work[i].shijian);}
system("cls");menu1();
printf("您要修改的材料的數量為%d, 修改 0 放棄修改 1\n", work[i].shuliang);
scanf("%d",&e);
if(e==0)
{printf("請輸入數量:\n");
scanf("%d",&work[i].shuliang);}
system("cls");menu1();
printf("您要修改的材料的單價為%d, 修改 0 放棄修改 1\n",work[i].price);
scanf("%d",&e);
if(e==0)
{printf("請輸入單價:\n");
scanf("%d",&work[i].price);}
work[i].total=work[i].shuliang*work[i].price;
system("cls");menu1();
printf("搞定! \n");
printf("新信息為:\n");
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);

while(1)
{
printf(" 保存請按 1 取消請按 2\n");
scanf("%d",&e);
if(e==1){save();break;}
else if(e==2)break;
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n");}
}
}
if(i==n) {system("cls");menu1();printf("no such a material!\n"); printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
while(e==1)
{system("cls");menu1();
printf("繼續請按 0 退出請按 1\n");
scanf("%d",&e);
if(e==0||e==1)break;
else {system("cls");menu1();printf("輸入有誤!想好了寫!\n\n");
printf("繼續請按任意數字鍵!\n"); scanf("%d",&i);}
}
if(e==0)modify();
if(e==1)printf("exit!\n");
}

er() /*冒泡排序*/
{int t;char dai[20];
t=work[f].price;work[f].price=work[f+1].price;work[f+1].price=t;
t=work[f].num;work[f].num=work[f+1].num;work[f+1].num=t;
t=work[f].shuliang;work[f].shuliang=work[f+1].shuliang;work[f+1].shuliang=t;
t=work[f].total;work[f].total=work[f+1].total;work[f+1].total=t;
strcpy(dai,work[f].name);
strcpy(work[f].name,work[f+1].name);
strcpy(work[f+1].name,dai);
strcpy(dai,work[f].leibie);
strcpy(work[f].leibie,work[f+1].leibie);
strcpy(work[f+1].leibie,dai);
strcpy(dai,work[f].shijian);
strcpy(work[f].shijian,work[f+1].shijian);
strcpy(work[f+1].shijian,dai);
}

order1() /*按數量排序*/
{ int i,j,e;
system("cls");menu1();
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if((work[i].shuliang>work[i+1].shuliang)&&work[i].delet==0)
{f=i;er();}
while(1)
{ system("cls");menu1();display1();
printf(" 保存請按 1 取消請按 2\n");
scanf("%d",&e);
if(e==1){save();break;}
else if(e==2)break;
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n");
printf("繼續請按任意數字鍵!\n");scanf("%d",&i);}
}
}

order2() /*按單價排序*/
{ int i,j;
system("cls");menu1();
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if((work[i].price>work[i+1].price)&&work[i].delet==0)
{f=i;er();}
while(1)
{ system("cls");menu1();display1();
printf(" 保存請按 1 取消請按 2\n");
scanf("%d",&e);
if(e==1){save();break;}
else if(e==2)break;
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n");
printf("繼續請按任意數字鍵!\n");scanf("%d",&i);}
}

}

order3() /*按總價排序*/
{ int i,j;
system("cls");menu1();
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if((work[i].total>work[i+1].total)&&work[i].delet==0)
{f=i;er();}
while(1)
{ system("cls");menu1();display1();
printf(" 保存請按 1 取消請按 2\n");
scanf("%d",&e);
if(e==1){save();break;}
else if(e==2)break;
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n");
printf("繼續請按任意數字鍵!\n");scanf("%d",&i);}
}
}

deci() /*退出繼續選擇*/
{ int e,i;
while(1)
{ system("cls");menu1();
printf(" 繼續按 1 退出按 2 \n");
scanf("%d",&e);
if(e==1){g=1;break;}
if(e==2){g=2;break;}
else {printf("error!\n"); printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
}
}

order() /*排序函數*/
{ int e,i;
while(g==1)
{system("cls");menu1();
printf("按數量排序請按 1 \n");
printf("按單價排序請按 2 \n");
printf("按總價排序請按 3 \n");
scanf("%d",&e);
if(e==1){order1();deci();}
else if(e==2){order2();deci();}
else if(e==3){order3();deci();}
else {system("cls");menu1();printf("寫錯啦!想好了寫!!\n"); printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
}
g=1;
}

recy() /*恢復函數*/
{
int i,e,num;FILE *fp;
system("cls");menu1();
fp=fopen(fname,"rb");
for(i=0;i<n;i++)
fread(&work[i],sizeof(struct material),1,fp);
printf("編號 名稱 類別 登記時間 數量 單價 總價\n");
for(i=0;i<n;i++)
if(work[i].delet==1)
{ printf("%-5d %-10s %-10s %-10s %-6d %-6d %-6d \n",work[i].num,work[i].name,work[i].leibie,
work[i].shijian,work[i].shuliang,work[i].price,work[i].total);
}
else if(i==n){printf("沒找著,想好了再找!\n");printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
while(1)
{ system("cls");menu1();r1();
printf("全部死刑(清空)0 宣判無罪(恢復)1 大赦天下(全部恢復)2 打道回府(退出)3 \n");
scanf("%d",&e);
if(e==0)
{for(i=0;i<n;i++)
if(work[i].delet==1)work[i].delet=2;break;
}
else if(e==1)
{ system("cls");menu1();r1();
printf("請輸入要恢復的材料的編號:\n");
scanf("%d",&num);
for(i=0;i<n;i++)
if(num==work[i].num&&work[i].delet==1) break;
if(i<n) {work[i].delet=0;break;}
else if(i==n) {printf("沒找著,想好了再找!\n");printf("繼續請按任意數字鍵!\n");
scanf("%d",&i); break;}
}
else if(e==2)
{for(i=0;i<n;i++)
if(work[i].delet==1)work[i].delet=0;break;
}
else if(e==3)break;
else {printf("寫錯啦!想好了寫!!\n"); printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
}
system("cls");menu1();printf("搞定!\n");
printf("按任意數字鍵退出!\n");scanf("%d",&i);save();
}

tongji() /*統計函數*/
{int i,e,n1=0,n2=0,n3=0,n4=0,n5=0,z=0,c=0;FILE *fp;
system("cls");menu1();
fp=fopen(fname,"rb");
for(i=0;i<n;i++)
fread(&work[i],sizeof(struct material),1,fp);
for(i=0;i<n;i++)
{if(work[i].delet==0){z=z+work[i].total;c++;}
if(work[i].total<3000&&work[i].delet==0)n1++;
if(work[i].total>=3000&&work[i].total<4000&&work[i].delet==0)n2++;
if(work[i].total>=4000&&work[i].total<5000&&work[i].delet==0)n3++;
if(work[i].total>=5000&&work[i].delet==0)n4++;
}
n5=z/c;
printf(" 總價 材料種類數 \n",n1);
printf(" 3000以下: %d\n",n1);
printf(" 3000 --- 4000: %d\n",n2);
printf(" 4000 --- 5000: %d\n",n3);
printf(" 5000以下: %d\n",n4);
printf("平均價格: %d\n",n5);
printf("\n\n");
system("pause");
while(1)
{ system("cls");menu1();
printf(" 保存請按 1 取消請按 2\n");
scanf("%d",&e);
if(e==1){save();break;}
else if(e==2)break;
else {printf("寫錯啦!想好了寫!!\n"); printf("繼續請按任意數字鍵!\n");
scanf("%d",&i);}
}
printf("按任意數字鍵退出!\n");
scanf("%d",&i);
}

menu1() /*歡迎界面*/
{
printf("\t \n");
printf("\t 課 程 設 計 \n");
printf("\t \n");
printf("\t 材料管理系統 \n");
printf("\t \n");
printf("\t 自動化 \n");
printf("\t 王璇 \n");
printf("\t \n");
printf("\t \n");
printf("\t \n");
printf("\t\n");
printf("\t \n");
printf("\t\n");
}

menu2() /*菜單函數*/
{
printf("\t1.添加材料信息\n");
printf("\t2.查看全部材料信息\n");
printf("\t3.查找材料資料\n");
printf("\t4.刪除材料資料\n");
printf("\t5.修改材料數據\n");
printf("\t6.材料信息排序\n");
printf("\t7.已經刪除的材料檔案\n");
printf("\t8.材料信息記錄統計\n");
printf("\t9.文件管理\n");
printf("\t0.退出\n");
}

main() /*主函數*/
{
system("cls");
menu1();
jianli();
slect();
}



⑧ C語言編寫程序----工資信息管理系統

祝你好運~~

代碼如下 :

#include<iostream.h>
#include"head.h"
#include<iomanip.h>
#include<fstream.h>
void show1()
{
cout<<" ★★小型公司工資管理系統★★ "<<endl
<<" ______________________________ "<<endl
<<" | 請輸入您所需的操作 | "<<endl
<<" |數據輸入:1,並按回車鍵 | "<<endl
<<" |數據統計:2,並按回車鍵 | "<<endl
<<" |數據列印:3,並按回車鍵 | "<<endl
<<" |數據備份:4,並按回車鍵 | "<<endl
<<" |退出系統:5,並按回車鍵 | "<<endl
<<" |______________________________| "<<endl
<<" 請選擇一個操作: "<<endl;
}
void show2()
{
cout<<" ★★小型公司工資管理系統★★ "<<endl
<<" ______________________________ "<<endl
<<" | 請輸入你所需的操作 | "<<endl
<<" |經理數據輸入: 1,並按回車鍵 | "<<endl
<<" |技術員數據輸入: 2,並按回車鍵 | "<<endl
<<" |銷售員數據輸入: 3,並按回車鍵 | "<<endl
<<" |銷售經理數據輸入:4,並按回車鍵 | "<<endl
<<" |返回上一級: 5,並按回車鍵 | "<<endl
<<" |______________________________| "<<endl
<<" 請選擇一個操作: "<<endl;
}
Manager Ma[4];
Technologyer Te[4];
Saller Sa[8];
Sellmanager Sm[4];
int a,b,c,d;
void Allsellmoney()//每一個銷售經理下銷售總額,工資
{
Sm[d].allsellmoney=0;
for(d=0;d<4;d++)
{
for(c=0;c<8;c++)
{
if(Sa[c].givenu==Sm[d].gnu)
Sm[d].allsellmoney+=Sa[c].gm();
}
}

}
void mppx()//冒泡排序
{
int i,j;
Sellmanager temp;
for(i=1;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(Sm[j].gsa()<Sm[j+1].gsa())
{
temp=Sm[j];
Sm[j]=Sm[j+1];
Sm[j+1]=temp;
}
}
}
}

void main()
{
int i,j;
fstream file;//*
Loop:
show1();
cin>>i;
switch(i)
{
case 1:
show2();
cin>>j;
switch(j)
{
case 1:
{
for(a=0;a<4;a++)
{
Ma[a].getnumber();。
Ma[a].getinformation();
}
cout<<"-------------------------------"<<endl;
}
case 2:
{
for(b=0;b<4;b++)
{
Te[b].getnumber();
Te[b].getinformation();
Te[b].gethours();
}
cout<<"-------------------------------"<<endl;
}
case 3:
{
for(c=0;c<8;c++)
{
Sa[c].getnumber();
Sa[c].getinformation();
Sa[c].getin();
}
cout<<"-------------------------------"<<endl;
}
case 4:
{
for(d=0;d<4;d++)
{
Sm[d].getnumber();
Sm[d].getinformation();
}
cout<<"-------------------------------"<<endl;
}
case 5:goto Loop;
}
case 2:
for(d=0;d<4;d++)//利用for()嵌套輸出業績
{
cout<<"職工號為"<<Sm[d].gnu()
<<"銷售經理"<<Sm[d].gna()
<<"下屬銷售員的業績為:\n";
cout<<"┍━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 銷售額 │"<<endl;
Allsellmoney();//先計算
for(c=0;c<8;c++)
{
if(Sm[d].gnu==Sa[c].givenu)
cout<<"┝━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sa[c].gnu()<<"│"<<setw(10)<<Sa[c].gna()
<<"│"<<setw(10)<<Sa[c].gm()<<"│"<<endl;
}
cout<<"┝━━━━━┿━━━━━┷━━━━━┥"<<endl
<<"│銷售額總計│"<<setw(22)<<Sm[d].allsellmoney<<"│"<<endl
<<"┕━━━━━┷━━━━━━━━━━━┙"<<endl;
}
cout<<"銷售經理按工資排序為:"<<endl;
Allsellmoney();//計算總銷售額
mppx();
cout<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl
<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[0].gnu()<<"│"<<setw(10)<<Sm[0].gna()
<<"│"<<setw(10)<<Sm[0].gse()<<"│"<<setw(10)<<Sm[0].ga()
<<"│"<<setw(10)<<Sm[0].gsa()<<"│"<<endl
<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[1].gnu()<<"│"<<setw(10)<<Sm[1].gna()
<<"│"<<setw(10)<<Sm[1].gse()<<"│"<<setw(10)<<Sm[1].ga()
<<"│"<<setw(10)<<Sm[1].gsa()<<"│"<<endl
<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[2].gnu()<<"│"<<setw(10)<<Sm[2].gna()
<<"│"<<setw(10)<<Sm[2].gse()<<"│"<<setw(10)<<Sm[2].ga()
<<"│"<<setw(10)<<Sm[2].gsa()<<"│"<<endl
<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[3].gnu()<<"│"<<setw(10)<<Sm[3].gna()
<<"│"<<setw(10)<<Sm[3].gse()<<"│"<<setw(10)<<Sm[3].ga()
<<"│"<<setw(10)<<Sm[3].gsa()<<"│"<<endl
<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
goto Loop;
;
case 3:
cout<<"請等候........"<<endl
<<"職工基本信息一覽表如下:"<<endl;
cout<<"技術員"<<endl;//1
cout<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(b=0;b<4;b++)
cout<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Te[b].gnu()<<"│"<<setw(10)<<Te[b].gna()
<<"│"<<setw(10)<<Te[b].gse()<<"│"<<setw(10)<<Te[b].ga()
<<"│"<<setw(10)<<Te[b].gsa()<<"│"<<endl;
cout<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
cout<<"--------------------------------"<<endl;
cout<<"經理"<<endl;//2
cout<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(a=0;a<4;a++)
cout<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Ma[a].gnu()<<"│"<<setw(10)<<Ma[a].gna()
<<"│"<<setw(10)<<Ma[a].gse()<<"│"<<setw(10)<<Ma[a].ga()
<<"│"<<setw(10)<<Ma[a].gsa()<<"│"<<endl;
cout<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
cout<<"--------------------------------"<<endl;
cout<<"銷售經理"<<endl;//3
Allsellmoney();//計算總銷售額
mppx();
cout<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(d=0;d<4;d++)
cout<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[d].gnu()<<"│"<<setw(10)<<Sm[d].gna()
<<"│"<<setw(10)<<Sm[d].gse()<<"│"<<setw(10)<<Sm[d].ga()
<<"│"<<setw(10)<<Sm[d].gsa()<<"│"<<endl;

cout<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
cout<<"--------------------------------"<<endl;
cout<<"銷售員"<<endl;//4
cout<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(c=0;c<8;c++)
cout<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sa[c].gnu()<<"│"<<setw(10)<<Sa[c].gna()
<<"│"<<setw(10)<<Sa[c].gse()<<"│"<<setw(10)<<Sa[c].ga()
<<"│"<<setw(10)<<Sa[c].gsa()<<"│"<<endl;
cout<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
goto Loop;
case 4:
file.open("D:\\beifen.txt",ios::out,0);
file<<"請等候........"<<endl
<<"職工基本信息一覽表如下:"<<endl;
file<<"技術員"<<endl;//1
file<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(b=0;b<4;b++)
file<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Te[b].gnu()<<"│"<<setw(10)<<Te[b].gna()
<<"│"<<setw(10)<<Te[b].gse()<<"│"<<setw(10)<<Te[b].ga()
<<"│"<<setw(10)<<Te[b].gsa()<<"│"<<endl;
file<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
file<<"--------------------------------"<<endl;
file<<"經理"<<endl;//2
file<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(a=0;a<4;a++)
file<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Ma[a].gnu()<<"│"<<setw(10)<<Ma[a].gna()
<<"│"<<setw(10)<<Ma[a].gse()<<"│"<<setw(10)<<Ma[a].ga()
<<"│"<<setw(10)<<Ma[a].gsa()<<"│"<<endl;
file<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
file<<"--------------------------------"<<endl;
file<<"銷售經理"<<endl;//3
Allsellmoney();//計算總銷售額
mppx();
file<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(d=0;d<4;d++)
file<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sm[d].gnu()<<"│"<<setw(10)<<Sm[d].gna()
<<"│"<<setw(10)<<Sm[d].gse()<<"│"<<setw(10)<<Sm[d].ga()
<<"│"<<setw(10)<<Sm[d].gsa()<<"│"<<endl;
file<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
file<<"--------------------------------"<<endl;
file<<"銷售員"<<endl;//4
file<<"┍━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┑"<<endl
<<"│ 職工號 │ 姓名 │ 性別 │ 年齡 │ 工資 │"<<endl;
for(c=0;c<8;c++)
file<<"┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥"<<endl
<<"│"<<setw(10)<<Sa[c].gnu()<<"│"<<setw(10)<<Sa[c].gna()
<<"│"<<setw(10)<<Sa[c].gse()<<"│"<<setw(10)<<Sa[c].ga()
<<"│"<<setw(10)<<Sa[c].gsa()<<"│"<<endl;
file<<"┕━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┙"<<endl;
goto Loop;
case 5:break;
}
}