職工管理系統c語言設計報告,職工管理系統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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相關推薦

  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論