久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C語言 課程設計 教師工資管理系統(職工工資管理系統)(共5篇)

時間:2019-05-14 10:49:03下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言 課程設計 教師工資管理系統(職工工資管理系統)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言 課程設計 教師工資管理系統(職工工資管理系統)》。

第一篇:C語言 課程設計 教師工資管理系統(職工工資管理系統)

課程設計 教師工資管理系統

運行平臺:VC6.0(其他平臺未經測試,不一定保證有效)

制作者:弓箭 中南大學 信息科學與工程學院

源代碼如下:

#include #include #include #include #define LEN sizeof(struct teacher)

struct teacher { int num;char name[20];char sex[20];char workplace[50];char address[50];long phone;double de_salary;double de_jintie;double de_shenghuobutie;double yingfa_salary;double cost_phone;double cost_water_elec;double cost_rent;double cost_tax;double cost_weisheng;double cost_gongjijin;double cost_all;double shifa_salary;struct teacher *next;};

/***********************************讀取函數************************************/ struct teacher *load(){ struct teacher *p1,*p2,*head;FILE *fp;int i=1;if((fp=fopen(“save”,“rb”))==NULL){

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

return(NULL);} else {

head=NULL;

p1=(struct teacher *)malloc(LEN);

while(fread(p1,LEN-4,1,fp)==1)

{

if(i==1)

{

head=p1;

p2=p1;

i=2;

}

else

{

p2->next=p1;

p2=p2->next;

}

p1=(struct teacher *)malloc(LEN);

}

p2->next=NULL;

free(p1);

fclose(fp);

return(head);} }

/**********************************歡迎菜單函數*************************************/ void welcome(){ printf(“nnn

>>>>>歡迎使用教師工資管理系統Beta1.2<<<<

*******************************************************n”);printf(“

*

C語言課程設計

教師工資管理系統

*n”);

printf(“

*

班級: 電氣信息類1001班

學號:0909100119

*n”);printf(“

*

姓名:弓箭

*n”);printf(“

*******************************************************n”);printf(“nn

按下任意鍵進入系統...”);getch();system(“cls”);} /**********************************制作人員名單*************************************/ void list(){ system(“cls”);printf(“nnn

>>>>>版權所有 侵權必究<<<<

學校(College):

中南大學 Central South University

*n”);printf(“*

軟件名稱(Software): 教師工資管理系統 Teacher's Salary Managing System

*n”);

printf(“*

版本號(Edition):

Beta1.2

*n”);printf(“*

制作人(Producer):

弓箭 James

*n”);printf(“*

所在班級(Class):

電氣信息類1001班 Electric Information 1001

*n”);printf(“*

所在學院(Institute):信息科學與工程學院 Information Engineering Institute*n”);printf(“*******************************************************************************n”);printf(“

>>>>>ILLEGAL COPY BANNED<<<<

按下任意鍵返回主菜單...”);getch();} /***********************************菜單函數*****************************************/ int menu(){ int i;printf(“nnn

>>>>>歡迎使用教師工資管理系統Beta1.2<<<<

*******************************************************n”);printf(“

*

1.輸入教師信息

*n”);printf(“

*

2.插入教師信息

*n”);printf(“

*

3.修改教師信息

*n”);printf(“

*

4.刪除教師信息

*n”);printf(“

*

5.瀏覽教師信息

*n”);printf(“

*

6.顯示制作人員名單

*n”);printf(“

*

7.退出系統

*n”);printf(“

*******************************************************n”);printf(“

請輸入你想要的操作:”);scanf(“%d”,&i);getchar();return i;} /***********************************插入函數*****************************************/ void input(){ struct teacher *head,*p1,*p2,*p3,*px;int i,t;FILE *fp;char k,n='n',num[30],name[20];p1=p2=p3=px=(struct teacher *)malloc(LEN);if((head=load())!=NULL){

do

{

n='n';

printf(“

請輸入要插入的教師信息:n”);

printf(“

------------------------------n”);

printf(“

請輸入教工號:”);gets(num);px->num=atoi(num);

printf(“

請輸入姓名:”);gets(px->name);

printf(“

請輸入性別:”);gets(px->sex);

printf(“

請輸入單位名稱:”);gets(px->workplace);

printf(“

請輸入家庭住址:”);gets(px->address);

printf(“

請輸入聯系電話:”);gets(num);px->phone=atoi(num);

printf(“

請輸入基本工資:”);gets(num);px->de_salary=atof(num);

printf(“

請輸入津貼:”);gets(num);px->de_jintie=atof(num);

printf(“

請輸入生活補貼:”);gets(num);px->de_shenghuobutie=atof(num);

printf(“

請輸入電話費:”);gets(num);px->cost_phone=atof(num);

printf(“

請輸入水電費:”);gets(num);px->cost_water_elec=atof(num);

printf(“

請輸入房租:”);gets(num);px->cost_rent=atof(num);

printf(“

請輸入個人所得稅:”);gets(num);px->cost_tax=atof(num);

printf(“

請輸入衛生費:”);gets(num);px->cost_weisheng=atof(num);

printf(“

請輸入公積金:”);gets(num);px->cost_gongjijin=atof(num);

px->yingfa_salary=px->de_salary+px->de_jintie+px->de_shenghuobutie;

px->cost_all=px->cost_phone+px->cost_water_elec+px->cost_rent+px->cost_tax+px->cost_weisheng+px->cost_gongjijin;

px->shifa_salary=px->yingfa_salary-px->cost_all;

printf(“

數據輸入完畢,按下任意鍵繼續...”);getch();

system(“cls”);

printf(“nnn

>>>>>>>>>>> 插入教師信息 <<<<<<<<<<

printf(“

*******************************************************n”);

printf(“

*

1.輸入教師號

*n”);

printf(“

*

2.輸入姓名

*n”);

printf(“

*

3.返回上級菜單

*n”);

printf(“

*******************************************************n”);

printf(“

請選擇插入方式:”);

scanf(“%d”,&i);getchar();

while(i<1||i>3)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入要插入在哪條數據后面:”);

scanf(“%d”,&t);getchar();

p1=head;

while(p1->num!=t)

{

if(p1->next!=NULL)

{ p1=p1->next;

}

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

if(p1->num==t)

{

printf(“-----------------------------要插入的信息如下:-n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,px->num,px->name,px->sex,px->workplace,px->address,px->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lfn”,px->cost_phone,px->cost_water_elec,px->cost_rent,px->cost_tax,px->cost_weisheng,px->cost_gongjijin,px->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,px->de_salary,px->de_jintie,px->de_shenghuobutie,px->yingfa_salary,px->shifa_salary);

printf(“-----------------n”);

printf(“

確定插入嗎?(y或n):”);

scanf(“%c”,&k);getchar();

}

if(k=='y'||k=='Y')

{

if(p1->num==t)

{

if(p1==head)/*如果插入點為頭指針*/

{

p3=p1->next;

p1->next=px;

px->next=p3;

p2=head;

}

else if(p1->next==NULL)/*如果插入點為末尾指針*/

{

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

{p1=p1->next;}

p1=p1->next;

p1->next=px;

px->next=NULL;

}

else{/*如果插入點為中間指針*/

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

{p1=p1->next;}

p1=p1->next;

p3=p1->next;

px->next=p3;

p1->next=px;

}

if((fp=fopen(“save”,“wb”))==NULL)

{

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

}

else

{

do

{

fwrite(p2,LEN-4,1,fp);

if(p2->next!=NULL)

p2=p2->next;

}while(p2->next!=NULL);

if(p2!=head)

fwrite(p2,LEN-4,1,fp);

}fclose(fp);

printf(“

插入成功!按下任意鍵繼續...”);getch();} } else {printf(“

插入已被取消!按下任意鍵繼續...”);getch();} break;case 2:printf(“

請輸入要插入的教師姓名:”);gets(name);p1=head;

while(strcmp((p1->name),name)!=0)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

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

{

printf(“-----------------------------要插入的信息如下:-n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

printf(“

確定插入嗎?(y或n):”);

scanf(“%c”,&k);getchar();

}

if(k=='y'||k=='Y')

{

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

{

if(p1==head)/*如果插入點為頭指針*/

{

p1->next=px;

p2=head;

}

else if(p1->next==NULL)/*如果插入點為末尾指針*/

{

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

}

{p1=p1->next;}

p1=p1->next;

p1->next=px;

px->next=NULL;

}

else{/*如果插入點為中間指針*/

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

{p1=p1->next;}

p1=p1->next;

p1->next=px;

p3=p3->next;

px->next=p3;

}

if((fp=fopen(“save”,“wb”))==NULL)

{

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

}

else

{

do

{

fwrite(p2,LEN-4,1,fp);

if(p2->next!=NULL)

p2=p2->next;

}while(p2->next!=NULL);

if(p2!=head)

fwrite(p2,LEN-4,1,fp);

}fclose(fp);

printf(“

插入成功!按下任意鍵繼續...”);getch();

}

}

else {printf(“

插入已被取消!按下任意鍵繼續...”);getch();}

break;case 3:break;default :break;} if(i!=3){ printf(“n

繼續插入其他教師的信息嗎?(y或n)”);scanf(“%c”,&n);getchar();} }while((n=='y'||n=='Y')&&i!=3);

printf(“

數據插入成功!按下任意鍵返回主菜單...”);getch();

getchar();}

/***********************************輸入函數*****************************************/ void insert(){ FILE *fp;char m,num[30];

struct teacher *p1;p1=(struct teacher *)malloc(LEN);if((fp=fopen(“save”,“ab”))==NULL){

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();} else {

printf(“

請輸入教師信息:n”);

do

{

printf(“

------------------------------n”);

printf(“

請輸入教工號:”);gets(num);p1->num=atoi(num);

printf(“

請輸入姓名:”);gets(p1->name);

printf(“

請輸入性別:”);gets(p1->sex);

printf(“

請輸入單位名稱:”);gets(p1->workplace);

printf(“

請輸入家庭住址:”);gets(p1->address);

printf(“

請輸入聯系電話:”);gets(num);p1->phone=atoi(num);

printf(“

請輸入基本工資:”);gets(num);p1->de_salary=atof(num);

printf(“

請輸入津貼:”);gets(num);p1->de_jintie=atof(num);

printf(“

請輸入生活補貼:”);gets(num);p1->de_shenghuobutie=atof(num);

printf(“

請輸入電話費:”);gets(num);p1->cost_phone=atof(num);

printf(“

請輸入水電費:”);gets(num);p1->cost_water_elec=atof(num);

printf(“

請輸入房租:”);gets(num);p1->cost_rent=atof(num);

printf(“

請輸入個人所得稅:”);gets(num);p1->cost_tax=atof(num);

printf(“

請輸入衛生費:”);gets(num);p1->cost_weisheng=atof(num);

printf(“

請輸入公積金:”);gets(num);p1->cost_gongjijin=atof(num);

p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;

p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_gongjijin;

p1->shifa_salary=p1->yingfa_salary-p1->cost_all;

fwrite(p1,LEN-4,1,fp);

printf(“

輸入下一個?(y或n)”);

m=getchar();

if(m!='y'&&m!='Y')

{printf(“

數據保存成功!按下任意鍵返回主菜單...”);getch();}

getchar();

}while(m=='y'||m=='Y');} fclose(fp);}

/***********************************修改函數*****************************************/ void modify(){ struct teacher *head,*p1,*p2;int i;FILE *fp;char m='n',n='n',num2[30];p1=head=(struct teacher *)malloc(LEN);if((head=load())!=NULL){

do

{

int num=0;

char name[20];

p1=head;

system(“cls”);

printf(“nnn

>>>>>>>>>>> 修改教師信息 <<<<<<<<<<

printf(“

*******************************************************n”);

printf(“

*

1.輸入教師號

*n”);

printf(“

*

2.輸入姓名

*n”);

printf(“

*

3.返回上級菜單

*n”);

printf(“

*******************************************************n”);

printf(“

請選擇修改方式:”);

scanf(“%d”,&i);getchar();

while(i<1||i>3)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入要修改的教師號:”);

scanf(“%d”,&num);getchar();

while(p1->num!=num)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

if(p1->num==num)

{

system(“cls”);

printf(“nnn

>>>>>歡迎使用教師工資管理系統Beta1.2<<<<

printf(“---原信息如下:--n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lfn”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

printf(“

*******************************************************n”);

printf(“

*

1.教師號

2.姓名

*n”);

printf(“

*

3.性別

4.單位名稱

*n”);

printf(“

*

5.家庭住址

6.聯系電話

*n”);

printf(“

*

7.基本工資

8.津貼

*n”);

printf(“

*

9.生活補貼

10.電話費

*n”);

printf(“

*

11.水電費

12.房租

*n”);

printf(“

*

13.所得稅

14.衛生費

*n”);

printf(“

*

15.公積金

*n”);

printf(“

*******************************************************n”);

do

{

printf(“

請選擇要修改的數據:”);

scanf(“%d”,&i);getchar();

while(i>15||i<1)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入新教師號:”);gets(num2);p1->num=atoi(num2);break;

case 2:printf(“

請輸入新姓名:”);gets(p1->name);break;

case 3:printf(“

請輸入新性別:”);gets(p1->sex);break;

case 4:printf(“

請輸入新單位名稱:”);gets(p1->workplace);break;

case 5:printf(“

請輸入新家庭住址:”);gets(p1->address);break;

case 6:printf(“

請輸入新聯系電話:”);gets(num2);p1->phone=atoi(num2);break;

case 7:printf(“

請輸入新基本工資:”);gets(num2);p1->de_salary=atof(num2);break;

case 8:printf(“

請輸入新津貼:”);gets(num2);p1->de_jintie=atof(num2);break;

case 9:printf(“

請輸入新生活補貼:”);gets(num2);p1->de_shenghuobutie=atof(num2);break;

case 10:printf(“

請輸入新電話費:”);gets(num2);p1->cost_phone=atof(num2);break;

case 11:printf(“

請輸入新水電費:”);gets(num2);p1->cost_water_elec=atof(num2);break;

case 12:printf(“

請輸入新房租:”);gets(num2);p1->cost_rent=atof(num2);break;

case 13:printf(“

請輸入新所得稅:”);gets(num2);p1->cost_tax=atof(num2);break;

case 14:printf(“

請輸入新衛生費:”);gets(num2);p1->cost_weisheng=atof(num2);break;

case 15:printf(“

請輸入新公積金:”);gets(num2);p1->cost_gongjijin=atof(num2);break;

default:break;

}

p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;

p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_gongjijin;

p1->shifa_salary=p1->yingfa_salary-p1->cost_all;

printf(“

繼續修改其他數據嗎?(y或n):”);

scanf(“%c”,&m);getchar();

}while(m=='y'||m=='Y');

p2=head;

if((fp=fopen(“save”,“wb”))==NULL)

{

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

}

else

{

fwrite(head,LEN-4,1,fp);

do

{

p2=p2->next;

fwrite(p2,LEN-4,1,fp);

}while(p2->next!=NULL);

printf(“------------------------------修改后數據如下:--n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

}

fclose(fp);

}

break;

case 2:printf(“

請輸入要修改的教師姓名:”);

gets(name);

while(strcmp(p1->name,name)!=0)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

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

{

system(“cls”);

printf(“nnn

>>>>>歡迎使用教師工資管理系統Beta1.2<<<<

printf(“---原信息如下:--n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

printf(“

*******************************************************n”);

printf(“

*

1.教師號

2.姓名

*n”);

printf(“

*

3.性別

4.單位名稱

*n”);

printf(“

*

5.家庭住址

6.聯系電話

*n”);

printf(“

*

7.基本工資

8.津貼

*n”);

printf(“

*

9.生活補貼

10.電話費

*n”);

printf(“

*

11.水電費

12.房租

*n”);

printf(“

*

13.所得稅

14.衛生費

*n”);

printf(“

*

15.公積金

*n”);

printf(“

*******************************************************n”);

do

{

printf(“

請選擇要修改的數據:”);

scanf(“%d”,&i);getchar();

while(i>15||i<1)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入新教師號:”);gets(num2);p1->num=atoi(num2);break;

case 2:printf(“

請輸入新姓名:”);gets(p1->name);break;

case 3:printf(“

請輸入新性別:”);gets(p1->sex);break;

case 4:printf(“

請輸入新單位名稱:”);gets(p1->workplace);break;

case 5:printf(“

請輸入新家庭住址:”);gets(p1->address);break;

case 6:printf(“

請輸入新聯系電話:”);gets(num2);p1->phone=atoi(num2);break;

case 7:printf(“

請輸入新基本工資:”);gets(num2);p1->de_salary=atof(num2);break;

case 8:printf(“

請輸入新津貼:”);gets(num2);p1->de_jintie=atof(num2);break;

case 9:printf(“

請輸入新生活補貼:”);gets(num2);p1->de_shenghuobutie=atof(num2);break;

case 10:printf(“

請輸入新電話費:”);gets(num2);p1->cost_phone=atof(num2);break;

case 11:printf(“

請輸入新水電費:”);gets(num2);p1->cost_water_elec=atof(num2);break;

case 12:printf(“

請輸入新房租:”);gets(num2);p1->cost_rent=atof(num2);break;

case 13:printf(“

請輸入新所得稅:”);gets(num2);p1->cost_tax=atof(num2);break;

case 14:printf(“

請輸入新衛生費:”);gets(num2);p1->cost_weisheng=atof(num2);break;

case 15:printf(“

請輸入新公積金:”);gets(num2);p1->cost_gongjijin=atof(num2);break;

default:break;

}

p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;

p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_gongjijin;

p1->shifa_salary=p1->yingfa_salary-p1->cost_all;

printf(“

繼續修改其他數據嗎?(y或n):”);

scanf(“%c”,&m);getchar();

}while(m=='y'||m=='Y');

p2=head;

if((fp=fopen(“save”,“wb”))==NULL)

{

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

}

else

{

fwrite(head,LEN-4,1,fp);

do

{

p2=p2->next;

fwrite(p2,LEN-4,1,fp);

}while(p2->next!=NULL);

printf(“------------------------------修改后數據如下:--n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

}

fclose(fp);

}

break;

case 3:break;

default :break;

}

if(i!=3)

{

printf(“n

繼續修改其他教師的信息嗎?(y或n)”);

scanf(“%c”,&n);

}

}while((n=='y'||n=='Y')&&i!=3);} }

/***********************************刪除函數*****************************************/ void deletes(){ struct teacher *head,*p1,*p2,*p3;int i;char k;FILE *fp;char n='n';p1=p2=p3=(struct teacher *)malloc(LEN);if((head=load())!=NULL){

do

{

int num;

char name[20];

p1=head;

system(“cls”);

printf(“nnn

>>>>>>>>>>> 刪除教師信息 <<<<<<<<<<

printf(“

*******************************************************n”);

printf(“

*

1.輸入教師號

*n”);

printf(“

*

2.輸入姓名

*n”);

printf(“

*

3.返回上級菜單

*n”);

printf(“

*******************************************************n”);

printf(“

請選擇刪除方式:”);

scanf(“%d”,&i);getchar();

while(i<1||i>3)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入要刪除的信息的教師號:”);

scanf(“%d”,&num);getchar();

while(p1->num!=num)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

if(p1->num==num)

{

printf(“-----------------------------要刪除的信息如下:-n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lfn”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

printf(“

確定刪除嗎?(y或n):”);scanf(“%c”,&k);getchar();} if(k=='y'||k=='Y'){ if(p1->num==num){ if(p1==head){

p1=p1->next;

p2=p1;} else if(p1->next==NULL)

{

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

{p1=p1->next;}

p1->next=NULL;

}

else{

p2=head;p3=p1;p1=head;

while(p1->next!=p3)

{p1=p1->next;}

p3=p3->next;

p1->next=p3;

}

if((fp=fopen(“save”,“wb”))==NULL){

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();} else { do {

fwrite(p2,LEN-4,1,fp);

if(p2->next!=NULL)

p2=p2->next;

}while(p2->next!=NULL);if(p2!=head)

fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(“

刪除成功!按下任意鍵繼續...”);getch();} }

else {printf(“

刪除已被取消!按下任意鍵繼續...”);getch();}

break;

case 2:printf(“

請輸入要修改的教師姓名:”);

gets(name);

while(strcmp((p1->name),name)!=0)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

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

{

printf(“-----------------------------要刪除的信息如下:-n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

printf(“

確定刪除嗎?(y或n):”);

scanf(“%c”,&k);getchar();

}

if(k=='y'||k=='Y')

{

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

{

if(p1==head)

{

p1=p1->next;

p2=p1;

}

}

else if(p1->next==NULL)

{

p3=p1;p1=head;p2=head;

while(p1->next!=p3)

{p1=p1->next;}

p1->next=NULL;

}

else{

p2=head;p3=p1;p1=head;

while(p1->next!=p3)

{p1=p1->next;}

p3=p3->next;

p1->next=p3;

}

if((fp=fopen(“save”,“wb”))==NULL)

{

printf(“

文件不存在!按下任意鍵返回主菜單...”);getch();

}

else

{

do

{

fwrite(p2,LEN-4,1,fp);

if(p2->next!=NULL)

p2=p2->next;

}while(p2->next!=NULL);

if(p2!=head)

fwrite(p2,LEN-4,1,fp);

}fclose(fp);

printf(“

刪除成功!按下任意鍵繼續...”);getch();

}

}

else {printf(“

刪除已被取消!按下任意鍵繼續...”);getch();}

break;case 3:break;default :break;} if(i!=3){ printf(“n

繼續刪除其他教師的信息嗎?(y或n)”);scanf(“%c”,&n);} }while((n=='y'||n=='Y')&&i!=3);}

/***********************************瀏覽函數*****************************************/ void scan(){ struct teacher *head,*p1;int i;char m='n';p1=head=(struct teacher *)malloc(LEN);if((head=load())!=NULL){

system(“cls”);

printf(“nnn

>>>>>>>>>>> 瀏覽教師信息 <<<<<<<<<<

printf(“

*******************************************************n”);

printf(“

*

1.全部瀏覽

*n”);

printf(“

*

2.單個瀏覽

*n”);

printf(“

*

3.返回上級菜單

*n”);

printf(“

*******************************************************n”);

printf(“

請輸入你想要的操作:”);

scanf(“%d”,&i);getchar();

while(i<1||i>3)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:p1=head;

printf(“----------------------------所有保存的信息如下:n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

do

{

printf(“ %-4d %-13s %s

%-19s %-19s%-14ld”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

if(p1->next!=NULL)

{p1=p1->next;}

else break;

}while(1);

p1=head;

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

do

{

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf ”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

if(p1->next!=NULL)

{p1=p1->next;}

else break;

}while(1);

p1=head;

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

do

{

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf n”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

if(p1->next!=NULL)

{p1=p1->next;}

else break;

}while(1);

p1=head;

printf(“n-----------------n”);

printf(“

按下任意鍵返回主菜單...”);

getch();

break;

case 2:

do

{

int num=0;

char name[20];

p1=head;

system(“cls”);

printf(“nnn

>>>>>>>>>>> 瀏覽教師信息 <<<<<<<<<<

printf(“

*******************************************************n”);

printf(“

*

1.輸入教師號

*n”);

printf(“

*

2.輸入姓名

*n”);

printf(“

*******************************************************n”);

printf(“

請輸入你想要的操作:”);

scanf(“%d”,&i);getchar();

while(i<1||i>2)

{

printf(“

輸入有誤!請重新輸入:”);

scanf(“%d”,&i);getchar();

}

switch(i)

{

case 1:printf(“

請輸入要查詢的教師號:”);

scanf(“%d”,&num);getchar();

while(p1->num!=num)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

if(p1->num==num)

{

printf(“所查信息如下:---n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

}

break;

case 2:printf(“

請輸入要查詢的教師姓名:”);

gets(name);

while(strcmp(p1->name,name)!=0)

{

if(p1->next!=NULL)

p1=p1->next;

else

{

printf(“

查找不到相關數據!n”);

break;

}

}

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

{

printf(“所查信息如下:---n”);

printf(“教工號

姓名

性別

單位名稱

家庭住址

聯系電話n”);

printf(“ %-4d %-13s %s

%-19s %-19s%-14ldn”,p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);

printf(“電話費

水電費

房租

個人所得稅

衛生費

公積金

合計扣款n”);

printf(“ %-10.1lf %-10.1lf %-10.1lf %-10.1lf

%-10.1lf %-10.1lf %-10.1lf n”,p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);

printf(“基本工資

津貼

生活補貼

應發工資

實發工資n”);

printf(“ %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lfn”,p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);

printf(“-----------------n”);

}

break;

default :break;

}

printf(“

繼續瀏覽嗎?(y或n)”);

scanf(“%c”,&m);

}while(m=='y'||m=='Y');

case 3:break;

} } }

/***********************************主函數*****************************************/ void main(){ int a=1;welcome();while(1){

system(“cls”);

a=menu();switch(a){ case 1:insert();break;

} case 2:input();break;case 3:modify();break;case 4:deletes();break;case 5:scan();break;case 6:list();break;case 7:printf(“

歡迎下次使用!”);getch();exit(0);break;default :printf(“

輸入有誤,請重新輸入!”);getch();break;} } getch();

第二篇:vb課程設計 職工工資管理系統代碼

Form1: Dim errorCount As Integer Private Sub Command1_Click()If Text1.Text = “system” And Text2.Text = “1234” Then

Load Form2

Form2.Show

Me.Hide

MsgBox “登陸成功,歡迎您進入職工工資管理系統”, vbInformation, “登陸成功”

Else

errorCount = errorCount + 1

If errorCount < 3 Then

MsgBox “用戶名或密碼錯誤(第” & errorCount & “次)!”, vbOKOnly + vbExclamation, “登陸失敗”

Text1.SetFocus

End If

If errorCount >= 3 Then

Text1.Enabled = False

Text2.Enabled = False

Command1.Enabled = False

MsgBox “三次輸入用戶名或密碼錯誤,程序將自動退出!”, vbOKOnly + vbExclamation, “登陸失敗”

End

End If End If

End Sub

Private Sub Command2_Click()Unload Me End Sub

Private Sub Form_Load()errorCount = 0 End Sub

Private Sub Form_Unload(Cancel As Integer)If MsgBox(“是否要退出程序?”, vbYesNo, “退出提示”)= vbNo Then

Cancel = 1 End If End Sub

For i = 1 To jlNum

ygList(i).shifagongzi =(CSng(ygList(i).jibengz)+ ygList(i).gerensui

CSng(ygList(i).jingtie)

ygList(y).shifagongzi = ygList(zuishao).shifagongzi ygList(zuishao).shifagongzi = linShi.shifagongzi End If Next loadData End Sub

Private Sub Command5_Click()Dim linShi As YuanGong

linShi.ygnamg = InputBox(“請輸入要添加的姓名”, “添加員工-姓名錄入”)If Len(Trim(linShi.ygnamg))> 0 Then

linShi.jibengz = InputBox(“請輸入添加員工的基本工資”, “添加員工-基本工資錄入”)

If Len(Trim(linShi.jibengz))> 0 Then

linShi.jingtie = InputBox(“請輸入添加員工的津貼”, “添加員工-津貼錄入”)

If Len(Trim(linShi.jingtie))> 0 Then

linShi.gerensui = InputBox(“請輸入添加員工的個人所得稅”, “添加員工-個稅錄入”)

If Len(Trim(linShi.gerensui))> 0 Then

linShi.suidianfei = InputBox(“請輸入添加員工的水電費”, “添加員工-水電費錄入”)

If Len(Trim(linShi.suidianfei))> 0 Then

Open filedir For Append As #1

Write #1, linShi.ygnamg;linShi.jibengz;linShi.jingtie;linShi.gerensui;linShi.suidianfei

Close #1

MsgBox “添加員工成功!”, vbOKOnly + vbInformation, “成功”

jlNum = 0 If Len(Trim(filedir))> 0 Then

Open filedir For Input As #1

Do While Not EOF(1)

Line Input #1, a

If Len(Trim(a))> 0 Then

jlNum = jlNum + 1

End If

Loop

Close #1

ReDim Preserve ygList(jlNum)As YuanGong

jlNum = 0

Open filedir For Input As #1

Do While Not EOF(1)

jlNum = jlNum + 1

Input #1, ygList(jlNum).ygnamg

Input #1, ygList(jlNum).jibengz

Input #1, ygList(jlNum).jingtie

Next

Close #1

MsgBox “刪除員工成功!”, vbOKOnly + vbInformation, “成功”

jlNum = 0 If Len(Trim(filedir))> 0 Then

Open filedir For Input As #1

Do While Not EOF(1)

Line Input #1, a

If Len(Trim(a))> 0 Then

jlNum = jlNum + 1

End If

Loop

Close #1

ReDim ygList(jlNum)As YuanGong

jlNum = 0

Open filedir For Input As #1

Do While Not EOF(1)

jlNum = jlNum + 1

Input #1, ygList(jlNum).ygnamg

Input #1, ygList(jlNum).jibengz

Input #1, ygList(jlNum).jingtie

Input #1, ygList(jlNum).gerensui

Input #1, ygList(jlNum).suidianfei

Loop

Close #1

loadData

Command2.Enabled = True

Command3.Enabled = False

Command4.Enabled = False

Command5.Enabled = True

Command6.Enabled = True End If

Text1.Text = “姓名” & vbTab & “工資” & vbTab & “津貼” & vbTab & “所得稅” & vbTab & “水電費” & vbCrLf

For i = 1 To jlNum

Text1.Text = Text1.Text & ygList(i).ygnamg & vbTab & ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab & ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf

Next Else

MsgBox “刪除員工失?。 ? vbOKOnly + vbExclamation, “失敗” End If End Sub

Private Sub Command7_Click()

第三篇:數據庫課程設計工資管理系統.

數據庫課程設計報告 工資管理系統

組員:廖翔, 劉小芳, 強江波, 張晶晶,馮兆強,夏沖 組長 :劉小芳 需求分析員 :張晶晶

程序員 :廖翔 , 劉小芳 , 強將波 測試員 :馮兆強 界面設計員 :夏沖 目錄

一 緒論 ··········································3 二 課程設計說明····································3 三 需求分析·········································4 四 物理結結構設計···································5 五 數據字典·········································5 六 數據庫設計·······································10 七 功能實現截圖·····································11 八,小結············································21 附錄 1.(組員及學號

廖翔(,劉小芳(41009040127,馮兆強(, 張晶晶(41009040130,夏沖(,強將波(2.開發環境說明

使用 C#進行客戶端應用程序的開發,數據庫管理系統采用 SQL SERVER

一、緒論

隨著計算機技術的飛速發展和經濟體制改革的不斷深入, 傳統企業管理方法、手段以及 工作效率已不能適應新的發展需要, 無法很好地完成員工工資管理工作。提高公司企業管理 水平的主要途徑是更新管理者的思想,增強對管理活動的科學認識?;?C#與 SQL server 數據庫技術建立一個通用工資管理系統,該系統為提供了查詢、增加記錄、刪除等 功能, 功能比較的齊全, 并對工資進行了統計如津貼管理、報表統計等?;旧夏軡M足管理 員和公司的要求。

此次數據庫課程設計的主要設計如下: 原理分析、程序設計過程、程序實現和程序調試以及數據庫的設計。需求分析、概要結構設計、邏輯結構設計、物理結構設計和數據庫的實施和維護。二.課程設計說明

1.設計題目:工資管理系統 2.設計任務與要求: 2.1實驗任務

1.掌握數據庫設計和實現的基本過程 2.掌握數據庫模式設計、分析和實現的方法 3.了解數據庫應用系統軟件開發的一般過程。2.2 實驗基本要求(1學習相關的預備知識

(2按照數據庫設計與實現過程完成數據庫的設計,應用程序的開發,上機調試、運 行

(3寫出課程設計報 3.目的

本說明書目的在于明確說明系統需求,界定系統實現功能的范圍, 指導系統設計以 及編碼。本文檔作為人力資源管理系統的需求說明文檔,用于與用戶確定最終的目標, 并成為協議文本的一部分,同時也是本系統設計人員的基礎文檔。

4.背景 工資管理系統

工資管理部門希望建立一個數據庫來管理員工的工資。要計算員工的工資, 就需要考慮 不在休假日期以內的假期、工作期間的病假時間、獎金和扣除的部分。必須指明給每個員工 發薪水的方式, 隨著時間的推移, 方式可能會有些改變。大多數的員工是通過銀行卡來結算 工資的, 但是也有一部分人使用現金或支票。如果是通過銀行卡, 就需要知道賬號和卡的類 型。付款方式只可能是一種方式。有幾種原因可以扣除工資:例如,個人所得稅、國家稅、醫療保險、退休保險或者預付款。

5.主要包括三大功能模塊: 1.登錄界面選擇 [員工登錄 ]即可進入 [員工登陸界面 ], 選擇 [管理員登陸 ]即可進入 [管理員 登錄界面 ]。

2.管理員功能模塊。3.員工功能模塊.6.操作說明

6.1 無論是管理員還是員工,操作都以員工編號來進行。

6.2 管理員可以對員工基本信息增、刪、查、改, 員工只能對本人基本信息和工資信息查詢。三.需求分析

1.功能需求分析: 該通用工資管理系統具備下列功能:登錄界面選擇 [員工登錄 ]即可進入 [員工登陸界面 ], 選 擇 [管理員登陸 ]即可進入 [管理員登錄界面 ].管理員通過輸入用戶名和密碼進下該系統后, 可以進行一些基本查詢(員工個人信息查 詢 , 員工工資信息查詢 , 修改(修改員工基本信息 , 修改工資信息 , 刪除(員工個人資料刪除 , 員工工資信息刪除 , 錄入(員工資料錄入 , 員工工資資料錄入;;通過輸入密碼,可以進行 查詢員工的數據(工資,獎金津貼,加班情況。

員工通過輸入用戶名和密碼即可進入系統 , 可以進行查詢(查詢個人基本信息和工資信 息.2.數據流需求分析:

數據庫 數據庫需求分析——數據流圖 四.物理結構設計 1.系統模塊劃分

五.數據字典 2.1表字典

2.2表字段字典

六.數據庫設計 1.建表 : EmpInfoTable(Id[主鍵 ],Name,Position,Status;SalaryInfoTable(Id主鍵 ],Name,Prize,Pasepay,RetirementInsurance,Income,Stute,Medical, Dayleave,Deduced,Paytpe,CardNumber,Cardtype,GrossSalary,NetSalary,Date;(1 員工基本信息表 :(2員工工資表 :

七.功能實現截圖 1.登錄界面

2.管理員部分 :(1管理員登陸界面

(2管理員功能選擇界面

(3.錄入員工基本信息界面(4錄入員工工資信息

(5.修改功能選擇界面

A.修改員工基本信息

B.修改工資信息

(6.管理員查詢界面 A.查詢功能選擇界面

B.查詢員工基本信息

C.查詢工資信息

(7.管理員查詢界面 A.功能選擇界面

B.管理員修改員工個人信息

C.管理員修改員工工資界面界面

(8.管理員刪除界面 A.功能選擇界面

B.刪除員工個人信息及工資信息界面

C.刪除員工工資信息界面

3.員工功能界面(1.員工登錄界面

(2.員工功能選擇界面

(3.員工查詢本人基本信息(4.員工查詢本人工資信息 4.測試分析 4.1 更改員工資料不可以更改身份。4.2 修改員工工資信息一旦失敗 就會把原有信息刪除。4.3 管理員固定,且只有一個。八.小結 該工資管理系統總體說來功能比較齊全,管理

員和員工的一些基本的功能 都已經具備; 數據庫的設計方面,建有員工表、工資表。數據庫中存在一些問題,如數據冗余,不夠完善。但在做課程設計的過程中也遇到很多問題,一開始時其中最大的問題是數 據庫的連接部分,該部分直接影響到數據庫與應用程序接口實現,而且必須注意 數據庫數據庫的名稱與連接數據庫的取名以致.后來經過大家的合作努力解決了 這個問題.在編寫程序時,確實也遇到了很多困難,后來經過調試后終于把自已想 到實現的功能一步步實現了,通過這次課程設計使我收獲了好多,熟悉了 C#的 運用,還復習了數據庫相關語句的編寫。此次課程設計讓我感受頗多:做一個數據庫其實是一件很有趣的事情。想到

自己可以創建一個小型的數據庫系統,有點學習后的滿足感。數據庫的建立并非 難事,難點在于數據庫的連接和編程語言的選擇。C#的功能很強大,這也是我以 后需要學習的課程,于是我毅然選擇了它。再就是建立數據庫系統的步驟,我的 經驗就是要先總體規劃,再局部整理。先做好總的界面,再通過該界面的布置一 步一步實現其功能!同時我體會到: 熟練的編程能力,對知識運用的強烈渴望及其創新和團隊的合作 精神設做好一個大型數據庫的基礎。因此通過此次課程設計我明顯感覺到自身的 不足,并希望以后能更加用心地運用所學知識和學習新的知識。

第四篇:工資管理(C語言課程設計)

#include “stdio.h”

/*I/O函數*/ # include “bios.h” /*ROM基本輸入輸出函數*/ #include “dos.h”

/*dos接口函數*/ #include “conio.h”

/*屏幕操作函數*/ #include “stdlib.h”

/*其它說明*/ #include “string.h” /*字符串函數*/ #include “mem.h” /*內存操作函數*/ #include “ctype.h” /*字符操作函數*/ #include “alloc.h” /*動態地址分配函數*/ /****變量定義*******/ typedef struct z1

/*定義數據結構*/ {

char no[11];

/*編號*/

char name[15];/*姓名*/

float jbgz;

/*基本工資*/

float koukuan;/*扣款*/

float yfgz;/*應發工資*/

float shuijin;/*稅金*/

float sfgz;

/*實發工資*/

struct z1 *prior;/*前驅指針*/

struct z1 *next;/*后繼指針*/ }SALARY;

/*結構體類型名*/ struct z1 *First;

/*雙鏈表頭指針*/ struct z1 *Last;

/*雙鏈表尾指針*/ /******函數原型*********/ void init();

/*初始化*/ void create();/*創建鏈表*/ void calc();

/*計算應發工資*/ void delete();/*刪除*/ void search();/*查找*/ void save();/*保存文件*/ void load();/*讀取文件*/ void computer();/*計算所需各種票面張數*/ void insert();/*插入*/ void append();/*追加*/ void copy();/*復制文件*/ void sort();/*排序*/ void index();/*索引*/ void total();/*分類合計*/ void list();/*顯示所有數據*/ void print(SALARY *p);/*輸出單條記錄*/ void display();/*隨意逐條顯示*/ float fax(float x);/*計算稅金*/

int menu_select();/*主菜單*/ /*******主函數開始**********/ main(){

int i;

clrscr();

for(;;)

{

switch(menu_select())

/*調用菜單函數返回一個整數值*/

{

case 0:init();break;

/*初始化*/

case 1:create();break;/*輸入數據創建雙鏈表*/

case 2:list();break;/*顯示所有數據*/

case 3:display();break;/*單條顯示*/

case 4:calc();break;/*計算實發工資*/

case 5:search();break;/*查找職工信息數據*/

case 6:delete();break;/*刪除記錄*/

case 7:insert();break;/*插入記錄*/

case 8:append();break;/*追加記錄*/

case 9:save();break;/*保存文件*/

case 10:load();break;/*讀取文件*/

case 11:copy();break;/*復制文件*/

case 12:sort();break;/*按實發工資升序排序*/

case 13:computer();break;/*計算所需票面數*/

case 14:index();break;/*按職工號索引*/

case 15:total();break;/*按部門求合計*/

case 16:exit(0);

/*退出*/

}

} } /*菜單函數,函數返回值為整型,代表所選的菜單項*/ menu_select(){

char *f[]= {

/*定義菜單字符串數組*/

“**************MENU*************”, /*菜單的標題行*/

“ 0.init list”, /*初始化雙鏈表*/

“ 1.Enter list”, /*輸入數據,創建雙鏈表*/

“ 2.List all n”, /*顯示所有記錄*/

“ 3.Display record by step”, /*顯示單條記錄*/

“ 4.Calc the salary”, /*計算實發工資*/

“ 5.Search record on name”, /*查找記錄*/

“ 6.Delete a record”, /*刪除記錄*/

“ 7.Insert record to list”, /*插入記錄*/

“ 8.Append record to file”, /*追加記錄*/

“ 9.Save data to the file”, /*保存文件*/

“ 10.Load data from the file”,/*讀取文件*/

“ 11.Copy the file to new file”, /*復制文件*/

“ 12.Sort on sfgz”, /*排序*/

“ 13.Computer ticket number”, /*計算所需票面數*/

“ 14.Index on number”, /*索引*/

“ 15.Total on number”, /*分類合計*/

“ 16.Quit” };/*退出*/

char s[80];

int i;

int key=0;/*記錄所壓鍵值*/

int c=0;

gotoxy(1,25);/*移動光標*/

printf(“press any key enter menu......n”);/*壓任意鍵進入主菜單*/

getch();

clrscr();/*清屏*/

textcolor(YELLOW);/*設置文本顏色為黃色*/

textbackground(BLUE);/*設置背景顏色為蘭色*/

gotoxy(10,2);

putch(0xda);/*輸出左上角邊框┏*/

for(i=1;i<44;i++)

putch(0xc4);/*輸出上邊框水平線*/

putch(0xbf);/*輸出右上角邊框

┓*/

for(i=3;i<22;i++)/*輸出左右兩邊的垂直線*/

{

gotoxy(10,i);putch(0xb3);

gotoxy(54,i);putch(0xb3);

}

gotoxy(10,22);putch(0xc0);/*輸出左上角邊框┗*/

for(i=1;i<44;i++)

putch(0xc4);/*輸出下邊框水平線*/

putch(0xd9);/*輸出右下角邊框┛*/

window(11,3,53,21);/* 制作顯示菜單的窗口,大小根據菜單條數設計*/

clrscr();

/*清屏*/

for(i=0;i<18;i++)

{

gotoxy(10,i+1);

cprintf(“%s”,f[i]);/*輸出菜單項數組*/

}

i=1;

gotoxy(10,2);/*設置默認選項在第一項*/

textbackground(LIGHTGREEN);/*設置背景顏色為淺綠*/

cprintf(“%s”,f[1]);/*輸出菜單項,表示選中*/

gotoxy(10,2);/*移動光標到菜單的第一項*/

while(key!=13)

/*所壓鍵不是回車鍵時*/

{

while(bioskey(1)==0);/*查詢是否壓下了一個鍵*/

key=bioskey(0);

/*返回下一個在鍵盤壓下的鍵*/

key=key&0xff?key&0xff:key>>8;/*對所壓的鍵進行判斷*/

gotoxy(10,i+1);

textbackground(BLUE);/*設置背景顏色為藍色*/

cprintf(“%s”,f[i]);/*輸出菜單項*/

if(key==72)i=i==1?17:i-1;/*如壓向上光標鍵↑,i減1,如已到第一行再上移,則到最后一行*/

if(key==80)i=i==17?1:i+1;/*如壓向下光標鍵↓,i加1,如已到最后一行再下移,則到第一行*/

gotoxy(10,i+1);/*光標移動i的下一項*/

textbackground(LIGHTGREEN);/*將背景顏色設為淺綠*/

cprintf(“%s”,f[i]);/*輸出菜單項*/

c=i-1;/*給代表菜單選項的整數賦值*/

}

textbackground(BLACK);/*設置背景顏色為黑色*/

window(1,1,80,25);/*恢復原窗口大小*/

return c;/*返回代表菜單選項的整數值*/ } /*初始化函數*/ void init(){

First=NULL;

Last=NULL;} /*輸入數據,創建雙鏈表*/ void create(){

int x;/*記錄行坐標*/

int i;/*記錄輸入記錄數*/

int flag=0;/*做結束標記*/

float temp;

/*定義臨時變量*/

SALARY *info,*p;/*定義臨時變量*/

if(First!=NULL)

init();/*如果頭指針為空,調用初始化函數*/

p=First;/*從頭指針開始*/

for(;;)

{

if(flag==1)

break;/*如果flag=1,結束輸入*/

i=0;

x=0;

/*確定移動的行坐標*/

clrscr();/*清屏*/

gotoxy(1,3);

printf(“*************gongziguanli*************”);/*輸出標題*/

gotoxy(1,4);

printf(“

--Enter @ end--”);/*提示輸入@結束*/

gotoxy(1,5);

printf(“|-----|”);/*輸出表格的起始線*/

gotoxy(1,6);

printf(“|

no

|

name

| jbgz |”);/*輸出字段標題,注意空格數*/

for(;;)

{

gotoxy(1,7+x);

printf(“|----------|----------------|--------|”);/*輸出表格的水平線*/

info=(SALARY *)malloc(sizeof(SALARY));/*申請一個記錄空間*/

if(!info)

{

printf(“nout of memory”);/*如沒有得到空間,輸出內存溢出信息*/

exit(0);/*退出程序*/

}

info->next=NULL;/*新結點的后繼為空*/

info->prior=NULL;/*新結點的前驅為空*/

gotoxy(1,8+x);printf(“|”);/*輸出數據間的分割線*/

gotoxy(12,8+x);printf(“|”);

gotoxy(29,8+x);printf(“|”);

gotoxy(38,8+x);printf(“|”);

gotoxy(2,8+x);/*光標到輸入編號位置*/

inputs(info->no,10);/*輸入編號,并驗證長度不超過10*/

if(info->no[0]=='@')

{

flag=1;

break;

} /*編號首字符為@結束輸入*/

gotoxy(13,8+x);/*光標到輸入姓名位置*/

inputs(info->name,14);/*輸入姓名,并驗證長度不超過14*/

gotoxy(30,8+x);/*光標到輸入基本工資位置*/

scanf(“%f”,&temp);/*輸入基本工資到臨時變量*/

info->jbgz=temp;/*基本工資賦值*/

info->koukuan=0;/*初始扣款為0,待計算工資時輸入*/

info->sfgz=0;/*初始實發工資為0,待計算工資時計算*/

info->shuijin=0;/*初始稅金為0,待計算工資時計算*/

info->yfgz=0;/*初始應發工資為0,待計算工資時計算*/

if(p==NULL)/*如果p為空,說明輸入的是第一個結點*/

{

First=Last=info;/*頭指針和尾指針*/

First->prior=NULL;/*頭指針的前驅是空*/

Last->next=NULL;/*尾指針的后繼是空*/

}

else /*插入的結點不是第一結點,則插入在頭結點之前*/

{

info->next=p;/*新結點的后繼指向原來的頭結點*/

info->prior=p->prior;/*新結點的前驅指向原來的頭結點的前驅*/

p->prior=info;/*原來結點的前驅指向新結點*/

}

p=info;/*新結點變為p結點,暫時的頭結點*/

First=info;/*新結點變為頭結點*/

x+=2;

/*因為水平線,將光標下移兩行*/

gotoxy(1,8+x);

i++;

/*輸入記錄數加1*/

if(i%9==0)

break;/*輸入9個記錄,換一頁輸入*/

}

gotoxy(1,8+x);

}

printf(“|----------|----------------|--------|”);/*輸出結尾水平線*/ } /*字符串輸入和驗證函數*/ inputs(char *s, int count){

char p[255];

do{

scanf(“%s”,p);/*輸入字符串*/

if(strlen(p)>count)printf(“n too long!n”);/*進行長度校驗,超過count值重輸入*/

}while(strlen(p)>count);

strcpy(s,p);/*將輸入的字符串拷貝到字符串s中*/ } /*顯示鏈表*/ void list(){

int i=0,n;/*記錄輸出行數*/

SALARY *p;/*定義移動指針*/

clrscr();/*清屏*/

p=First;/*從頭指針開始*/

while(i%10==0&&p!=NULL)/*外循環控制換頁*/

{

i=0;

/*記錄一頁的輸出行數*/

clrscr();

/*清屏*/

printf(“nnn”);/*換行三次*/

printf(“*************************************SALARY***********************************n”);

/*輸出大標題*/

printf(“|nO

|

name

|

jbgz | koukuan |

yfgz | shuijin |

sfgz |n”);/*輸出字段標題*/

printf(“|----------|---------------|---------|---------|---------|---------|---------|n”);/*輸出水平線*/

while(p!=NULL)/*當p不為空時*/

{

printf(“|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|n”,p->no,p->name,p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);

p=p->next;/*指針后移*/

i++;

/*輸出行數加1 */

if(i%10==0)

break;/*如果滿10行,跳出內循環*/

}

printf(“****************************************end***********************************n”);/*輸出本頁的結束行*/

printf(“Press any key congtinue...n”);

getch();/*輸出一頁暫停一下,壓任意鍵繼續*/

} /*返回到外循環,準備下一頁的輸出*/ } /*單條顯示記錄*/ void display(){

int ch;

/*菜單選項字符*/

SALARY *p;/*定義臨時指針*/

clrscr();/*清屏*/

p=First;/*從頭指針開始*/

if(p==NULL)/*指針為空,即鏈表為空,返回主函數*/

{

printf(“record is empty!n”);

return;

}

else

{

print(p);

/*調用輸出函數顯示頭結點信息*/

for(;;)/*循環開始*/

{

printf(“nn0.Quit 1.Prior

2.Next

3.First

4.Last nn”);/*菜單項Quit退出 Prior前驅 Next后繼

First第一條 Last最后一條*/

printf(“nplease select 0~4:”);/*提示輸入菜單選項0~4*/

scanf(“%d”,&ch);/*輸入菜單選項0~4*/

if(ch==0)break;/*如果選項為0,退出*/

switch(ch)

/*開關語句根據選項字符判斷*/

{

case 1:p=p->prior;if(p==NULL)p=First;break;/*指向前驅,沒有前驅指向第一個*/

case 2:p=p->next;if(p==NULL)p=Last;break;/*指向后繼,沒有后繼指向最后一個*/

case 3:p=First;break;/*指向第一個結點*/

case 4:p=Last;break;/*指向最后一個結點*/

}

print(p);/*調用輸出函數顯示指針所指結點信息*/

}

} } /*輸出指針所指結點信息*/ void print(SALARY *p){

if(p)

/*如果指針不為空,則顯示信息*/

{

clrscr();/*清屏*/

printf(“nnn”);/*換行*/

printf(“************************************SALARY************************************n”);/*輸出標題信息*/

printf(“|no

|

name

|

jbgz | koukuan|

yfgz | shuijin |

sfgz

|n”);/*輸出字段標題*/

printf(“|----------|---------------|---------|---------|---------|---------|---------|n”);/*輸出分割線*/

printf(“|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|n”, p->no,p->name,p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*輸出結點信息*/

printf(“***************************************end***************************** *******n”);/*輸出結束標記*/

} } /*計算實發工資*/ void calc(){

int x;/*行坐標*/

int i=0;/*記錄數*/

float temp;/*臨時變量扣款*/

SALARY *p;/*移動指針*/

clrscr();

/*清屏*/

p=First;/*從頭指針開始*/

while(p!=NULL)/*當p不為空時,也就是有記錄時,外循環控制換頁*/

{

x=0;

clrscr();

gotoxy(1,3);

printf(“***************************gongziguanli************************************”);

/*輸出標題*/

gotoxy(1,5);

printf(“|------------|”);

gotoxy(1,6);/*下面輸出字段標題*/

printf(“|

no

|

name

| jbgz | koukuan | yfgz |shuijin | sfgz |”);

while(p!=NULL)/*當p不為空時,也就是有記錄時,內循環控制處理9條*/

{

gotoxy(1,7+x);

printf(“|----------|----------------|--------|----------|--------|--------|--------|”);

gotoxy(1,8+x);printf(“|”);

gotoxy(12,8+x);printf(“|”);

gotoxy(29,8+x);printf(“|”);

gotoxy(38,8+x);printf(“|”);

gotoxy(49,8+x);printf(“|”);

gotoxy(58,8+x);printf(“|”);

gotoxy(67,8+x);printf(“|”);

gotoxy(76,8+x);printf(“|”);

gotoxy(2,8+x);

printf(“%-10s”,p->no);/*輸出編號*/

gotoxy(13,8+x);

printf(“%-15s”,p->name);/*輸出姓名*/

gotoxy(30,8+x);

printf(“%.2f”,p->jbgz);/*輸出基本工資*/

gotoxy(39,8+x);

scanf(“%f”,&temp);/*輸入扣款*/

p->koukuan=temp;/*扣款字段賦值*/

p->yfgz=p->jbgz-p->koukuan;/*計算應發工資=基本工資-扣款*/

gotoxy(50,8+x);

printf(“%.2f”,p->yfgz);/*輸出應發工資*/

gotoxy(59,8+x);

p->shuijin=(p->yfgz-1000)*fax(p->yfgz);/*否則按稅率計算稅金*/

printf(“%.2f”,p->shuijin);/*輸出稅金*/

gotoxy(68,8+x);

p->sfgz=p->yfgz-p->shuijin;/*計算實發工資*/

printf(“%-8.2f”,p->sfgz);/*輸出實發工資*/

x+=2;

/*行坐標下移兩行*/

i++;

/*記錄數加1*/

if(i%9==0)break;/*記錄數超過9條,跳出內循環*/

p=p->next;

/*指針后移,處理下一條*/

}

gotoxy(1,7+x);

printf(“|----------|----------------|--------|----------|--------|--------|--------|n”);/*輸出結束行*/

printf(“Press any key congtinue...n”);

getch();

} } /*根據應發工資,計算稅率*/ float fax(float x){

float f1;

if(x<1000)

return 0;

/*小于1000,返回0*/

switch((int)(x/1000))

{

case 1:f1=0.05;break;/*1000~1999,返回0.05*/

case 2:f1=0.1;break;/*2000~2999,返回0.1*/

case 3:f1=0.15;break;/*3000~3999,返回0.15*/

case 4:f1=0.2;break;/*4000~4999,返回0.2*/

default:f1=0.3;break;/*5000以上,返回0.3*/

}

return f1;} /*計算票面張數*/ void computer(){

SALARY *p;

int i=0,a[7]={0},t100,t50,t20,t10,t5,t2,t1;/*設置數組和臨時變量保存票面張數*/

float t;

/*過渡變量,保存當前剩余工資*/

p=First;/*移動指針從頭指針開始*/

while(p!=NULL)/*當p不為空時*/

{

t100=(int)p->sfgz/100;/*計算100元張數*/

a[0]=a[0]+t100;

/*累加保存*/

t=p->sfgz-t100*100;/*剩余工資*/

t50=(int)(t/50);/*計算50元張數*/

a[1]=a[1]+t50;/*累加保存*/

t=t-t50*50;/*剩余工資*/

t20=(int)(t/20);

/*計算20元張數*/

a[2]=a[2]+t20;/*累加保存*/

t=t-t20*20;/*剩余工資*/

t10=(int)(t/10);/*計算10元張數*/

a[3]=a[3]+t10;/*累加保存*/

t=t-t10*10;/*剩余工資*/

t5=(int)(t/5);/*計算5元張數*/

a[4]=a[4]+t5;/*累加保存*/

t=t-t5*5;/*剩余工資*/

t2=(int)(t/2);/*計算2元張數*/

a[5]=a[5]+t2;/*累加保存*/

t=t-t2*2;/*剩余工資*/

t1=(int)(t);/*計算1元張數*/

a[6]=a[6]+t1;/*累加保存*/

p=p->next;/*指針后移,處理下一條記錄*/

}

clrscr();/*清屏*/

printf(“nnn***********ticket number***************n”);/*輸出標題*/

printf(“--100-----50------20-----10-----5------2------1------n”);

/*輸出張數標題*/

for(i=0;i<7;i++)

printf(“%5d ”,a[i]);/*輸出所需的張數*/

printf(“n”);/*換行*/ } /*按編號查找記錄*/ SALARY *find(char *no){

SALARY *p;/*定義移動指針*/

p=First;/*從頭指針開始*/

while(p)/*當p不為空時*/

{

if(!strcmp(no,p->no))

return p;/*比較相等,查找成功,返回指針*/

p=p->next;/*不相等指針后移*/

}

printf(“not foundn”);/*沒有找到*/

return NULL;/*返回為空指針*/ } /*刪除結點*/ void delete(){

SALARY *p;/*定義臨時變量,p指向要刪除的結點p*/

char s[11];/*要刪除結點的編號*/

clrscr();/*清屏*/

printf(“please deleted non”);/*提示輸入信息*/

scanf(“%s”,s);

/*輸入要刪除的職工編號*/

if((p=find(s))!=NULL)/*調用查找函數,如果找到做下面的處理*/

{

if(First==p)

/*如果是第一個結點*/

{

First=p->next;/*將頭指針指向其后繼結點*/

if(First)

/*如頭指針不為空*/

First->prior=NULL;/*將頭結點的前驅設為空*/

else

Last=NULL;

/*否則頭為空,尾也為空*/

}

else

/*刪除的不是第一個結點*/

{

p->prior->next=p->next;/*p的前驅的后繼指向p原來的后繼*/

if(p!=Last)

/*如果p不是最后個結點*/

p->next->prior=p->prior;/*p后繼的前驅指向p原來的前驅*/

else

Last=p->prior;/*如p是最后一個結點,修改尾指針為p的前驅*/

}

free(p);/*刪除結點后,不要忘記釋放空間*/

printf(“n have deleted %s SALARYn”,s);

printf(“Don't forget saven”);

} } /*按姓名查找結點*/ void search(){

SALARY *p;/*移動指針*/

char s[15];/*保存姓名*/

clrscr();/*清屏*/

printf(“please enter name for searchn”);/*提示輸入*/

scanf(“%s”,s);/*輸入要查找人的姓名*/

p=First;/*移動指針從頭指針開始*/

while(strcmp(p->name,s)&&p!=NULL)/*做比較判斷*/

p=p->next;

/*沒找到,指針后移繼續查找*/

if(p==NULL)/*指針為空,說明沒有找到*/

printf(“nlist no %s SALARYn”,s);/*顯示沒找到信息*/

else

{

printf(“nn”);/*換行*/

print(p);/*查找成功,調用輸出函數輸出指針p所指記錄*/

} } /*插入結點*/ void insert(){

SALARY *p,*info;/* info為新結點,p為新結點的后繼*/

char s[11];/*保存查找的姓名*/

float temp;/*臨時變量*/

clrscr();/*清屏*/

printf(“please enter location before the non”);/*提示輸入在哪個結點之前插入*/

scanf(“%s”,s);/*輸入指定結點的編號*/

printf(“nplease new recordn”);/*提示輸入記錄*/

clrscr();/*清屏*/

gotoxy(1,3);/*定位光標,按表格形式輸入新結點信息*/

printf(“**************gongziguanli************”);

gotoxy(1,5);

printf(“|-----|”);

gotoxy(1,6);

printf(“|

no

|

name

| jbgz | ”);

gotoxy(1,7);

printf(“|----------|----------------|--------|”);

info=(SALARY *)malloc(sizeof(SALARY));/*申請空間*/

if(!info)

{

printf(“nout of memory”);/*如沒有得到空間,內存溢出*/

exit(0);/*退出程序*/

}

info->next=NULL;/*新結點的后繼為空*/

info->prior=NULL;/*新結點的前驅為空*/

gotoxy(1,8);printf(“|”);

gotoxy(12,8);printf(“|”);

gotoxy(29,8);printf(“|”);

gotoxy(38,8);printf(“|”);

gotoxy(2,8);

inputs(info->no,10);/*輸入新結點的編號,并校驗*/

gotoxy(13,8);

inputs(info->name,14);/*輸入新結點的姓名,并校驗*/

gotoxy(30,8);

scanf(“%f”,&temp);

/*輸入基本工資*/

info->jbgz=temp;/*給基本工資字段賦值*/

info->koukuan=0;/*扣款初始為0*/

info->yfgz=0;/*應發工資初始為0*/

info->shuijin=0;/*稅金初始為0*/

info->sfgz=0;/*實發工資初始為0*/

printf(“|----------|----------------|--------|”);

p=First;/*移動指針從頭指針開始*/

while(strcmp(p->no,s)&&p!=NULL)/*查找結點確定插入位置*/

p=p->next;/*指針后移,繼續查找*/

if(p==NULL)/*如p為空*/

if(p==First)/*如p為頭指針,說明鏈表為空*/

{

First=info;/*新結點為頭指針*/

First->prior=NULL;/*頭結點的前驅為空*/

Last=First;/*唯一結點,尾指針等于頭指針*/

}

else /*新結點插在尾部*/

{

Last->next=info;

info->prior=Last;

Last=info;/*尾指針指向新結點*/

}

else

if(p==First)/*p不為空,但p為頭指針,新結點插在第一個結點位置*/

{

info->prior=NULL;/*新結點的前驅為空*/

info->next=p;/*新結點的后繼為p*/

p->prior=info;/*p的前驅是新結點*/

First=info;/*修改頭指針指向新結點*/

}

else /*新結點插入在中間某一個位置p之前*/

{

info->next=p;/*新結點的后繼是p*/

info->prior= p->prior;/*新結點的前驅是p的前驅*/

p->prior->next=info;/*p的前驅的后繼是新結點*/

p->prior=info;/*p的前驅是新結點*/

}

printf(“nnn----have inserted %s SALARY----n”,info->name);

printf(“n---Don't forget save---n”);/*提醒調用保存文件存盤*/ } /*保存文件*/ void save(){

FILE *fp;/*定義指向文件的指針*/

SALARY *p;/*定義移動指針*/

char outfile[10];/*保存輸出文件名*/

clrscr();/*清屏*/

printf(“Enter outfile name,for example c:f1 e.txt:n”);/*提示輸入文件名格式信息*/

scanf(“%s”,outfile);

if((fp=fopen(outfile,“wb”))==NULL)/*為輸出打開一個二進制文件*/

{

printf(“can not open filen”);

return;/*返回*/

}

printf(“nSaving file......n”);

p=First;/*移動指針從頭指針開始*/

while(p!=NULL)/*如p不為空*/

{

fwrite(p,sizeof(SALARY),1,fp);/*寫入一條記錄*/

p=p->next;/*指針后移,處理下一條記錄*/

}

fclose(fp);/*關閉文件*/

printf(“-----save success!-----n”);/*顯示保存成功*/ } /*讀文件*/ void load(){

SALARY *p,*q=NULL;/*定義記錄指針變量*/

FILE *fp;/* 定義指向文件的指針*/

char infile[10];/*保存文件名*/

clrscr();/*清屏*/

printf(“Enter infile name,for example c:f1 e.txt:n”);/*輸入文件名格式*/

scanf(“%s”,infile);/*輸入文件名*/

if((fp=fopen(infile,“rb”))==NULL)/*打開一個二進制文件,為讀方式*/

{

printf(“can not open filen”);/*如不能打開,則結束程序*/

return;/*返回*/

}

while(First)/*當表不為空時,清空鏈表*/

{

p=First;/*從頭指針開始*/

First=First->next;/*刪除頭結點*/

free(p);/*釋放空間*/

}

printf(“n-----Loading file!-----n”);/*顯示正在讀文件*/

First=(SALARY *)malloc(sizeof(SALARY));/*為頭指針申請空間*/

if(!First)/*如果沒有得到空間 顯示內存溢出*/

{

printf(“out of memory!n”);

return;/*返回*/

}

p=First;/*將頭指針賦值給p*/

while(!feof(fp))/*當文件不空時*/

{

if(1!=fread(p,sizeof(SALARY),1,fp))break;/*將記錄讀到p所指的結點*/

p->next=(SALARY *)malloc(sizeof(SALARY));/*為p的后繼申請空間*/

if(!p->next)/*如果沒有得到空間顯示內存溢出*/

{

printf(“out of memory!n”);

return;/*返回*/

}

p->prior=q;/*得到空間,則鏈接指針關系p的前驅為q*/

q=p;/*保存p做為新的p結點的前驅*/

p=p->next;/*p指針后移*/

}

q->next=NULL;/*q的后繼為空*/

Last=q;/*尾指針為q*/

First->prior=NULL;/*頭指針的前驅為空*/

fclose(fp);/*關閉文件*/

printf(“---You have success read data from file!!---n”);/*顯示成功讀入記錄*/ } /*追加記錄*/ void append(){

FILE *fp;

/*定義指向文件的指針*/

SALARY *info;/*指向追加信息的指針*/

char infile[10];/*保存文件名*/

float temp;/*臨時變量*/

clrscr();/*清屏*/

gotoxy(1,3);

printf(“**************gongziguanli************”);

gotoxy(1,5);

printf(“|-----|”);

gotoxy(1,6);

printf(“|

no

|

name

| jbgz | ”);

gotoxy(1,7);

printf(“|----------|----------------|--------|”);

info=(SALARY *)malloc(sizeof(SALARY));/*申請追加信息的空間*/

if(!info)

{

printf(“nout of memory”);/*沒有空間,內存溢出*/

exit(0);/*結束程序*/

}

info->next=NULL;/*新信息的后繼為空*/

info->prior=NULL;/*新信息的前驅為空*/

gotoxy(1,8);printf(“|”);

gotoxy(12,8);printf(“|”);

gotoxy(29,8);printf(“|”);

gotoxy(38,8);printf(“|”);

gotoxy(2,8);

inputs(info->no,10);/*輸入編號并校驗*/

gotoxy(13,8);

inputs(info->name,14);/*輸入姓名并校驗*/

gotoxy(30,8);

scanf(“%f”,&temp);/*輸入基本工資*/

info->jbgz=temp;

info->koukuan=0;/*扣款為0*/

info->yfgz=0;/*應發工資為0*/

info->shuijin=0;/*稅金為0*/

info->sfgz=0;/*實發工資為0*/

printf(“|----------|----------------|--------|”);

printf(“nnnEnter infile name,for example c:f1 e.txt:n”);/*提示輸入文件名*/

scanf(“%s”,infile);

if((fp=fopen(infile,“ab”))==NULL)/*打開文件*/

{

printf(“can not open filen”);

return;/*返回*/

}

printf(“n-----Appending record!-----n”);

if(1!=fwrite(info,sizeof(SALARY),1,fp))/*向文件中追加記錄*/

{

printf(“-----file write error!-----n”);/*寫函數返回值不為1,說明寫入錯誤*/

return;/*返回*/

}

printf(“-----append sucess!----n”);/*顯示追加成功*/

fclose(fp);/*關閉文件*/ } /*文件復制*/ void copy(){

char outfile[10],infile[10];/*保存源文件名和目標文件名*/

FILE *sfp,*tfp;/*定義指向源文件和目標文件的指針*/

SALARY *p=NULL;/*定義臨時指針,暫存讀出的記錄*/

clrscr();

printf(“Enter infile name,for example c:f1 e.txt:n”);

scanf(“%s”,infile);/*輸入源文件名*/

if((sfp=fopen(infile,“rb”))==NULL)/*二進制讀方式打開源文件*/

{

printf(“can not open input filen”);/*顯示不能打開文件信息*/

return;/*返回*/

}

printf(“Enter outfile name,for example c:f1 e.txt:n”);/*提示輸入目標文件名*/

scanf(“%s”,outfile);/*輸入目標文件名*/

if((tfp=fopen(outfile,“wb”))==NULL)/*二進制寫方式打開目標文件*/

{

printf(“can not open output file n”);

return;

}

while(!feof(sfp))/*讀文件直到文件尾*/

{

if(1!=fread(p,sizeof(SALARY),1,sfp))

break;/*塊讀*/

fwrite(p,sizeof(SALARY),1,tfp);/*塊寫*/

}

fclose(sfp);/*關閉源文件*/

fclose(tfp);/*關閉目標文件*/

printf(“you have success copy file!!n”);/*顯示成功拷貝*/ } /*排序*/ void sort(){

SALARY *p0,*p00,*p1,*p11,*p2;/*定義臨時指針*/

int i=1;/*統計當前排第幾個結點*/

clrscr();/*清屏*/

printf(“nn start sort....n”);/*開始排序*/

p1=p11=p2=First;

while(p1!=NULL)/*當p1不為空時*/

{

p0=p1;

/*待比較結點從p1開始*/

p2=p1;

/*p2從當前待排序位置開始*/

while(p2->next!=NULL)/*p2的后繼不為空時*/

{

if(p0->sfgz>p2->next->sfgz)/*找當前最小結點*/

{

p00=p2;

/*找到當前最小結點記錄其前驅指針*/

p0=p2->next;/*記錄當前最小值結點的指針p0*/

}

p2=p2->next;/*指針后移*/

}

Last=p0;/*當前最小結點為尾結點*/

if(p1!=p0)/*判斷最小結點是否是當前排序位置,不是則作指針修改*/

{

p00->next=p0->next;/*將p00的后繼指向p0的后繼*/

p0->next->prior=p00;/*p0的后繼的前驅為p00*/

p0->next=p1;/*p0的后繼指向下個排序位置p1*/

p1->prior=p0;/*p1的前驅為p0*/

if(i==1)

{

First=p0;

/*作頭指針*/

First->prior=NULL;/*頭指針的前驅為空*/

}

else

/*不是第一個結點*/

{

p11->next=p0;

/*p11的后繼指向p0*/

p0->prior=p11;/*p0的前驅指向p11*/

}

p11=p1=p0;/*因p0是排好序的最后一個結點,p1是下一個將要排序的位置,所以將p0賦值給p1和p11*/

}

i++;/*排好序的結點數加1*/

p1=p1->next;/*p1后移指向下一個待排序位置*/

}

printf(“sort sucess!!n”);/*輸出排序成功*/ } /*索引*/ void index(){

SALARY *p,*q,*t,*h1;/*定義臨時指針*/

clrscr();/*清屏*/

printf(“nn start index.....nn”);/*顯示開始索引*/

h1=First->next;/*將原表的頭指針所指的下一個結點作頭指針*/

First->next=NULL;/*第一個結點為新表的頭結點*/

Last=First;/*尾指針等于頭指針*/

while(h1!=NULL)/*當原表不為空時,進行排序*/

{

t=h1;/*取原表的頭結點*/

h1=h1->next;/*原表頭結點指針后移*/

p=First;/*設定移動指針p,從頭指針開始*/

q=First;/*設定移動指針q做為p的前驅,初值為頭指針*/

while(strcmp(t->no,p->no)>0&&p!=NULL)/*作編號比較*/

{

q=p;/*待排序點值大,應往后插,所以新表指針后移*/

p=p->next;

}

if(p==q)/*p==q,說明待排序點值小,應排在首位*/

{

t->next=p;/*待排序點的后繼為p*/

p->prior=t;/*p的前驅結點指向待排序結點*/

First=t;/*新頭結點為待排序點*/

First->prior=NULL;/*頭指針的前驅為空*/

}

else /*待排序點應插入在中間某個位置q和p之間,如p為空則是尾部*/

{

t->next=p;/*t的后繼是p*/

t->prior=q;/*t的前驅是q*/

q->next=t;/*q的后繼是t*/

if(p==NULL)/*判p是否為空*/

Last=t;

/*將t賦值為尾指針*/

else

p->prior=t;/*否則將t賦值給p的前驅*/

}

}

printf(“index sucess!!n”);/*索引排序成功*/ } /*分類合計*/ void total(){

struct t1 /*定義結構體保存合計數據*/

{

char u[7];/*部門*/

float s;

/*合計實發工資*/

}unit[20];

/*定義一個單位部門數不超過20個*/

SALARY *p,*q;/*定義臨時指針變量*/

char sno[7],qno[7],*ptr;/*保存部門號*/

float s1;/*保存合計值*/

int i,j;/*控制變量*/

p=First;/*從指針開始*/

i=0;/*統計部門數*/

clrscr();/*清屏*/

while(p!=NULL)/*當p不為空時做下面的處理*/

{

memcpy(sno,p->no,6);/*從編號中取出部門號*/

sno[6]='

主站蜘蛛池模板: 久久综合噜噜激激的五月天| 2018av天堂在线视频精品观看| 国产香蕉尹人在线视频你懂的| 欧美激情一区二区成人| 亚洲国产精品久久久久爰色欲| 亚洲大成色www永久网站| 中文幕无线码中文字蜜桃| 午夜131美女爱做视频| 日韩高清国产一区在线| 99re6在线观看国产精品| 日日做夜狠狠爱欧美黑人| 国产毛片女人高潮叫声| 四虎成人欧美精品在永久在线| 亚洲综合日韩av无码毛片| 国产亚洲3p无码一区二区| 国产一极内射視颍一| 人妻少妇精品系列| 麻豆亚洲av永久无码精品久久| 中文字幕精品无码一区二区三区| 亚洲精品亚洲人成人网| 国产精品调教视频一区| 婷婷色爱区综合五月激情| 97精品伊人久久大香线蕉app| 国产成人无码a区在线观看视频| 精品久久久久久久久中文字幕| 让少妇高潮无乱码高清在线观看| 乱人伦精品视频在线观看| 香蕉精品亚洲二区在线观看| 无码熟熟妇丰满人妻porn| 欧洲熟妇色xxxx欧美老妇软件| 国产狂喷潮在线观看| 厨房玩丰满人妻hd完整版视频| 国产成人久久综合777777麻豆| 无码人妻丰满熟妇区毛片| 人妻少妇乱子伦精品| 成人午夜福利视频镇东影视| 欧美性猛交aaaa片黑人| 亚洲毛片αv无线播放一区| 国产成人夜色高潮福利app| 免费无码成人片| 精品久久久久久无码中文字幕漫画|