本文目錄一覽:
- 1、c語言課程設計——職工信息管理系統
- 2、C語言課程設計:職工工資管理系統設計
- 3、員工信息管理系統,C語言做
- 4、用C語言課程設計—職工工資管理系統(分別用結構體數組和鏈表編寫程序)
- 5、用C語言設計職工工資管理系統
c語言課程設計——職工信息管理系統
#includestdio.h
#includestring.h
int main()
{
void TestOnLineTeacherManage(); //聲明教師信息管理函數
void TestOnLineSelfManage();//聲明個人管理函數
int n;
printf(「0教師管理,1個人管理」);
scanf(「%d」,n);
If (n==0)
TestOnLineTeacherManage();
else
TestOnLineSelfManage();//選擇教師管理或者個人信息管理
Return 0;
}
Void TestOnLineTeacherManage() //教師信息管理函數
{
Struct TestOnLineTeacher
{
Int Tnum;
Char Tname[20];
Char Tsex;
Char Ttel[20];
}Teacher[100]; //定義一個結構體
void add(); //定義教師信息添加
void del(); //定義教師信息刪除
Void modify(); //定義教師信息修改
int a;
Printf(「1添加2刪除3修改」);
Scanf (「%d」,a);
Switch(a)
{
Case1:add();break;
Case2:del();break;
Case3:modify();break;
Default:break;
}//選擇功能
}
Void add() //教師信息添加函數,若添加Teacher[i]
{
printf(「輸入工號」);
Scanf(「%d」,Teacher[i].Tnum);
printf(「輸入姓名」);
Scanf(「%s」,Teacher[i].Tname);
printf(「輸入性別f女m男」);
Scanf(「%c」,Teacher[i].Tsex);
printf(「輸入電話」);
Scanf(「%s」,Teacher[i].Ttel);
}
Void del() //教師信息刪除函數,若刪除Teacher[i]
{
Teacher[i-1]=Teacher[i+1];
Free(Teacher[i]);
}
Void modify() //教師信息修改函數,若修改Teacher[i]
{
Int t;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(「修改選項1工號2姓名3性別4電話」);
Scanf(「%d」,t);
Switch(t)
{
Case1:scanf(「%d」,num);Teacher[i].Tnum=num;break;
Case2:scanf(「%s」,name);strcpy(Teacher[i].Tname,name);break;
Case3:scanf(「%c」,sex);Teacher[i].Tsex=sex;break;
Case4:scanf(「%s」,tel);strcpy(Teacher[i].Ttel,tel);break;
Default:break;
}//選擇修改項並修改
}
Void TestOnLineSelfManage() //個人信息管理
{
Struct TestOnLineManage
{
Int Mnum;
Char Mname[20];
Char Msex;
Char Mtel[20];
}Manage[1]; //定義一個結構體
Int b;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(「修改選項1工號2姓名3性別4電話」);
Scanf(「%d」,b);
Switch(t)
{
Case1:scanf(「%d」,num);Manage[1].Mnum=num;break;
Case2:scanf(「%s」,name);strcpy(Manage[1].Mname,name);break;
Case3:scanf(「%c」,sex);Manage[1].Msex=sex;break;
Case4:scanf(「%s」,tel);strcpy(Manage[1].Mtel,tel);break;
Default:break;
}//選擇修改項並修改
}
C語言課程設計:職工工資管理系統設計
/*add.c:添加員工工資信息記錄*/
#include “stdio.h”
void AddRecord()
{
FILE *fp = NULL; /*定義指向文件的指針*/
yuangong TmpS; /*定義進行操作時的臨時結構體變量*/
char DataFile[40] = “”; /*存儲員工工資信息的文件名*/
int count = 1; /*計算可輸入數據的最大範圍*/
/*====輸入要添加員工工資信息的文件名====*/
printf(“\n please input the file name which you will add recored to.”);
printf(“\n Notice:Name of file can’t exceed 8 characters.suffix can’t exceed 3 characters,part of exceed will be discarded.\n”);
gets(DataFile);
/*如用戶沒有輸入,則循環提示用戶輸入*/
while(*DataFile == (‘\0’))
{
printf(“\n please input new file name to store data,end with enter.”);
printf(“\n Notice:Name of file can’t exceed 8 characters,suffix can’t exceed 3 characters.part of exceed will be discarded.\n”);
gets(DataFile);
}
fp = fopen(DataFile,”a+”);/*a+:當文件存在時,追加,當文件不存在時,創建*/
/*如果當前文件不存在,提示打開文件失敗*/
if (fp == NULL)
{
printf(“\n Open file %s fail!End with any key.\n”,DataFile);
perror(“Open file fail”);
getch();
exit(1);
}
/*如果成功打開或創建文件,則提示輸入員工序號、姓名、工資構成等相關信息*/
printf(“input number,name and salary.number is 0 means input is end.\n”);
printf(“Number is not exceed 9 figures,Name is not exceed 20 characters,range of grade:0.00~1000.00\n”);
/*循環從鍵盤上讀取用戶輸入的序號、姓名、工資構成等相關信息*/
while(count = SIZE)
{
/*輸入序號,如為0則停止輸入*/
printf(“\n input ‘number =0’ means end input.\n”);
printf(“number=”);
scanf(“%ld”,TmpS.Number);
if (TmpS.Number == 0 )
break;
/*提示輸入員工姓名*/
printf(“name=”);
scanf(“%s”,TmpS.Name);
/*提示輸入員工工資*/
printf(“gongzi=”);
scanf(“%f”,TmpS.gongzi);
/*提示輸入員工獎金*/
printf(“jiangjin=”);
scanf(“%f”,TmpS.jiangjin);
/*提示輸入員工保險*/
printf(“baoxian=”);
scanf(“%f”,TmpS.baoxian);
/*提示輸入員工稅金*/
printf(“shuijin=”);
scanf(“%f”,TmpS.shuijin);
/*用公式自動計算員工實發工資即合計*/
TmpS.heji=TmpS.gongzi+TmpS.jiangjin-TmpS.baoxian-TmpS.shuijin;
printf(“\n”);
/*如遇無法寫入文件的異常,則加以提示*/
if(fwrite(TmpS,sizeof(yuangong),1,fp)!=1)
{
printf(“\nwrite file %s fail!End with any key\n”,DataFile);
perror(“Write file fail “);
getch();
exit(1);
}
count++;
}
/*如果輸入的數據量超過最大允許的範圍,則提示數據不能錄入*/
if (countSIZE)
printf(“\nsorry,number of data can not exceed%d\n”,SIZE);
fclose(fp);
/*====在屏幕上顯示文件內容====*/
/* clrscr();*/
printf(“The data you input is store successful %s in file.\n”,DataFile);
printf(“Content as follow:\n”);
fp=fopen(DataFile,”rb”);
if (fp == NULL)
{
printf(“\nOpen file%sfail!End with any key \n”,DataFile);
perror(“Open file fail”);
getch();
exit(1);
}
printf(“\nNumber\t\tName\tgongzi\tjiangjin\tbaoxian\tshuijin\theji\n”);
while(fread(TmpS,sizeof(yuangong),1,fp) != (int)NULL)
{
printf(“\n%ld\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n”,TmpS.Number,TmpS.Name,TmpS.gongzi,TmpS.jiangjin,TmpS.baoxian,TmpS.shuijin,TmpS.heji);
}
fclose(fp);
}
員工信息管理系統,C語言做
以下是我的程序,剛編好的,剛好符合你的要求,看看吧,對你應該有幫助:
呵呵
#include
#include
#include
#include
#define N 100
struct employee
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
}em[100]; /*定義一個結構體*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void modify(); /*定義各函數*/
void menu() /*菜單函數*/
{
printf(” ☆☆☆計算機科學與技術學系☆☆☆\n”);
printf(“\n”);
printf(” ∮08802班 關麗霞∮\n”);
printf(“\n”);
printf(” ******************職工信息管理****************\n”);
printf(” 1.錄入職工信息”);
printf(” 2.瀏覽職工信息\n”);
printf(” 3.查詢職工信息”);
printf(” 4.刪除職工信息\n”);
printf(” 5.添加職工信息”);
printf(” 6.修改職工信息\n”);
printf(” 7.退出\n”);
printf(” ********************謝謝使用******************\n”);
printf(“\n”);
printf(“\n”);
}
void main()
{
menu(); /*調用菜單函數*/
int n,flag;
char a;
do
{
printf(“請選擇你需要操作的步驟(1–7):\n”);
scanf(“%d”,n);
if(n=1n=7)
{
flag=1;
break;
}
else
{
flag=0;
printf(“您輸入有誤,請重新選擇!”);
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case 1:printf(” ◆◆◆輸入職工信息◆◆◆\n”);printf(“\n”);input();break;
case 2:printf(” ◆◆◆瀏覽職工信息◆◆◆\n”);printf(“\n”);display();break;
case 3:printf(” ◆◆◆按職工號查詢職工信息◆◆◆\n”);printf(“\n”);search();break;
case 4:printf(” ◆◆◆刪除職工信息◆◆◆\n”);printf(“\n”);del();break;
case 5:printf(” ◆◆◆添加職工信息◆◆◆\n”);printf(“\n”);add();break;
case 6:printf(” ◆◆◆修改職工信息◆◆◆\n”);printf(“\n”);modify();break;
case 7:exit(0);break;
default :break;
}
getchar();
printf(“\n”);
printf(“是否繼續進行(y or n):\n”);
scanf(“%c”,a);
if(a==’y’)
{
flag=1;
system(“cls”); /*清屏*/
menu(); /*調用菜單函數*/
printf(“請再次選擇你需要操作的步驟(1–6):\n”);
scanf(“%d”,n);
printf(“\n”);
}
else
exit(0);
}
}
void input() /*錄入函數*/
{
int i,m;
printf(“請輸入需要創建信息的職工人數(1–100):\n”);
scanf(“%d”,m);
for (i=0;im;i++)
{
printf(“職工號: “);
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf(“%8d “,em[i].num);
printf(“\n”);
printf(“請輸入姓名: “);
scanf(“%s”,em[i].name);
getchar();
printf(“請輸入性別(f–女 m–男): “);
scanf(“%c”,em[i].sex);
printf(“請輸入年齡: “);
scanf(“%d”,em[i].age);
printf(“請輸入學歷: “);
scanf(“%s”,em[i].xueli);
printf(“請輸入工資: “);
scanf(“%d”,em[i].wage);
printf(“請輸入住址: “);
scanf(“%s”,em[i].addr);
printf(“請輸入電話: “);
scanf(“%d”,em[i].tel);
printf(“\n”);
}
printf(“\n創建完畢!\n”);
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;im;i++) /*將內存中職工的信息輸出到磁盤文件中去*/
if (fwrite(em[i],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[i],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;im;i++) /*m為輸入部分的職工人數*/
printf(“\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
void del() /*刪除函數*/
{
int m=load();
int i,j,n,t,flag;
char name[20];
printf(“\n 原來的職工信息:\n”);
display(); /* 調用瀏覽函數*/
printf(“\n”);
printf(“請輸入要刪除的職工的姓名:\n”);
scanf(“%s”,name);
for(flag=1,i=0;flagim;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%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf(“\n確實要刪除此人信息請按1,不刪除請按0\n”);
scanf(“%d”,n);
if(n==1) /*如果刪除,則其他的信息都往上移一行*/
{
for(j=i;jm-1;j++)
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
em[j].tel=em[j+1].tel;
}
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;
}
}
void add()/*添加函數*/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf(“\n 原來的職工信息:\n”);
display(); /* 調用瀏覽函數*/
printf(“\n”);
fp=fopen(“emploee_list”,”a”);
printf(“請輸入想增加的職工數:\n”);
scanf(“%d”,n);
for (i=m;i(m+n);i++)
{
printf(“\n 請輸入新增加職工的信息:\n”);
printf(“請輸入職工號: “);
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf(“%8d “,em[i].num);
printf(“\n”);
printf(“請輸入姓名: “);
scanf(“%s”,em[i].name);
getchar();
printf(“請輸入性別(f–女 m–男): “);
scanf(“%c”,em[i].sex);
printf(“請輸入年齡: “);
scanf(“%d”,em[i].age);
printf(“請輸入學歷: “);
scanf(“%s”,em[i].xueli);
printf(“請輸入工資: “);
scanf(“%d”,em[i].wage);
printf(“請輸入住址: “);
scanf(“%s”,em[i].addr);
printf(“請輸入電話: “);
scanf(“%d”,em[i].tel);
printf(“\n”);
count=count+1;
printf(“已增加的人數:\n”);
printf(“%d\n”,count);
}
printf(“\n添加完畢!\n”);
m=m+count;
printf(“\n瀏覽增加後的所有職工信息:\n”);
printf(“\n”);
save(m);
display();
fclose(fp);
}
void search()/*查詢函數*/
{
int t,flag;
do
{
printf(“\n按職工號查詢請按1 ; 按學歷查詢請按2 ; 按電話號碼查詢請按3,進入主函數按4\n”);
scanf(“%d”,t);
if(t=1t=4)
{
flag=1;
break;
}
else
{
flag=0;
printf(“您輸入有誤,請重新選擇!”);
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf(“按職工號查詢\n”);search_num();break;
case 2:printf(“按學歷查詢\n”);search_xueli();break;
case 3:printf(“按電話號碼查詢\n”);search_tel();break;
case 4:main();break;
default:break;
}
}
}
void search_num()
{
int num;
int i,t;
int m=load();
printf(“請輸入要查找的職工號(20001111—20009999):\n”);
scanf(“%d”,num);
for(i=0;im;i++)
if(num==em[i].num)
{
printf(“\n已找到此人,其記錄為:\n”);
printf(“\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n”);
printf(“\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
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_xueli()
{
char xueli[30];
int i,t;
int m=load();
printf(“請輸入要查找的學歷:\n”);
scanf(“%s”,xueli);
for(i=0;im;i++)
if(strcmp(em[i].xueli,xueli)==0)
{
printf(“\n已找到,其記錄為:\n”);
printf(“\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n”);
printf(“\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
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_tel()
{
long int tel;
int i, t;
int m=load();
printf(“請輸入要查找的電話號碼:\n”);
scanf(“%ld”,tel);
for(i=0;im;i++)
if(tel==em[i].tel)
{
printf(“\n已找到此人,其記錄為:\n”);
printf(“\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n”);
printf(“\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
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 modify() /*修改函數*/
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
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;flagim;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%s\t%d\t%s\t%ld\n”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
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(c8||c1)
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”,sex);
em[i-1].sex=sex;
break;
case 4:printf(“年齡改為: “);
scanf(“%d”,age);
em[i-1].age=age;
break;
case 5:printf(“學歷改為: “);
scanf(“%s”,xueli);
strcpy(em[i-1].xueli,xueli);
break;
case 6:printf(“工資改為: “);
scanf(“%d”,wage);
break;
case 7:printf(“住址改為: “);
scanf(“%s”,addr);
strcpy(em[i-1].addr,addr);
break;
case 8:printf(“電話改為: “);
scanf(“%ld”,tel);
em[i-1].tel=tel;
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;
}
}
用C語言課程設計—職工工資管理系統(分別用結構體數組和鏈表編寫程序)
#includestdio.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;in;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;in;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)!=0in);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;ji;j++)
fwrite(emp[j],sizeof(struct emploee),1,fp);
for(j=i+1;jn;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;in;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語言設計職工工資管理系統
#includeiostream.h
#includestdlib.h
#includestring.h
#includeiomanip.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)
{
coutp-numsetw(9)p-namesetw(8)p-basicsetw(12)p-rewardsetw(12)p-totalendl;
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;
cinp-num;
cinp-name;
cinp-basic;
cinp-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;
cinnum;
while(p)
{
if(strcmp(p-num,num)==0)
{
cout”編號”setw(12)”姓名”setw(12)”基本工資”setw(9)”獎金”setw(12)”工資總額”endl;
coutp-numsetw(9)p-namesetw(8)p-basicsetw(12)p-rewardsetw(12)p-totalendl;
cout’\n’;
return OK;
}
p=p-next;
}
}
else if(tag==2)
{
char name[20];
cout”請輸入要查找的姓名:”endl;
cinname;
while(p)
{
if(strcmp(p-name,name)==0)
{
cout”編號”setw(12)”姓名”setw(12)”基本工資”setw(9)”獎金”setw(12)”工資總額”endl;
coutp-numsetw(9)p-namesetw(8)p-basicsetw(12)p-rewardsetw(12)p-totalendl;
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-totalq-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;
cinq;
while(p)
{
if(strcmp(p-num,q)==0)
{
cout”編號”setw(12)”姓名”setw(12)”基本工資”setw(9)”獎金”setw(12)”工資總額”endl;
coutp-numsetw(9)p-namesetw(8)p-basicsetw(12)p-rewardsetw(12)p-totalendl;
cout”請重新輸入該職工的工資信息:”endl;
cinp-basic;
cinp-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;
cini;
if(i==1)
{ if(InputInfo(S))
cout”操作成功!”endl;
cout’\n’;
}
else if(i==2)
{
char num[20];
cout”請輸入要刪除的職工編號:”endl;
cinnum; 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;
cintag;
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 有問題的話聯繫我。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304507.html