《湖南工程学院C语言课程设计报告工资管理系统.pdf》由会员分享,可在线阅读,更多相关《湖南工程学院C语言课程设计报告工资管理系统.pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 课 程 设 计 报 告 课程名称 C 语言课程设计 课题名称 工资管理系统 专 业 汽车服务工程 班 级 学 号 2 姓 名 指导教师 王宁 肖伟平 郭芳 2014 年 1 月 3 日 3 湖南工程学院 课 程 设 计 任 务 书 课程名称 C 课程设计 课 题 工资管理系统 专业班级 汽车服务 1202 班 学生姓名 学 号 指导老师 王宁 肖伟平 郭芳 审 批 任务书下达日期 2013 年 12 月 27 日 任务完成日期 2014 年 1 月 3 日 4 一、设计内容与设计要求 1设计内容:设计与发开一个工资管理系统,对工号、姓名、编号、姓名、基本工资、扣款、应发工资、税金、实发工资等
2、信息进行管理。主要完成以下功能:1)显示所有数据 2)单条显示 3)计算实发工资 4)查找职工信息数据 5)删除记录 6)插入记录 7)追加记录 8)保存文件 9)读取文件 10)按实发工资升序排序 2设计要求:1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告 5000 字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.5 6)上机演示。二、进 度 安 排 第十七周 周五 上午 8:0012:00 (查阅相关资料并 开始编写源程序)第十七周 周五 晚上 18:3022:30 (完成源程序
3、编写调试运行 课程设计报告)第十七周 周六 下午 13:3017:30 (完成课程设计报告以及答辩)附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4 大小的图纸及程序清单)。正文的格式:一级标题用 3 号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为 22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在 5000 字以上(不含程序原代码)。6 一、课题的主要功能 主要实现对职工工资信息实现工
4、资的显示,工资的追加,工资的查询,职工的删除,职工的插入,应发工资的计算等功能。工资管理系统具体提供以下功能:a、工资显示:完成全部职工工资信息的显示,以表格形式显示出来,并带有表头。b、工资追加:新增职工工资记录,在追加过程中有相应的提示信息并实现连续追加的功能。c、工资查询:对指定的姓名进行定位查询,并能显示出符合条件的查询结果。查询的信息不存在时,系统提示:List no*SALARY d、删除职工:对指定的编号进行定位删除,删除成功时不显示任何信息。若此职工不存在时,系统显示:Not found!e、添加职工:对指定的编号前进行定位插入,有相应的提示信息。f、计算应发工资:对相应的职工
5、输入相应的扣款,系统将自行计算出相应职工的应发工资并以表格形式显示出来,并带有表头。7 二、课题功能模块的划分 本程序由八个模块构成,其中主模块是由系统函数搭建而成,其重要功能是显示出功能主菜单,由用户作出选择进入子菜单。在子菜单中操作完毕后,能够准确返回到功能主菜单。2.1 系统主要模块流程图:2.2 模块说明 初始化模块 init()将表格清零 输入模块 create()输入职工工资信息 显示模块 list()显示职工工资信息 计算模块 calc()计算职工的应发工资 查找模块 search()查询职工工资信息 删除模块 dele()删除职工工资信息 插入模块 insert()插入职工工资
6、信息 追加模块 append()追加职工工资信息 主 函 数 初 始 化 输 入 信 息 功 能 计 算 应 发 工 资 显 示 信 息 功 能 退 出 系 统 保 存 文 件 功 能 追 加 记 录 功 能 查 找 信 息 功 能 删 除 信 息 功 能 插 入 信 息 功 能 8 保存模块 save()保存信息 退出模块 Quit()退出系统 三、主要功能的实现(下面以删除模块和查找模块为例)3.1 删除模块的流程图 3.2 查找模块的流程图 开 始 主 菜 单 Delete a record 输 入 职 工 编 号 退 出 系 统 9 四、程序调试 4.1 功能主菜单选择界面 4.2 初
7、始化功能 在主菜单中选择“Init list”进行初始化。开 始 主 菜 单 Search record on name 输 入 职 工 姓 名 显 示 相 应 信 息 退 出 系 统 10 4.3 输入功能 在主菜单中选择“Enter list”进入输入界面。在 no 列输入表示完成输入,然后系统会提示按任意键进入主菜单。4.4 显示功能 在主菜单中选择“List all”进入显示界面。这里的扣款、应发工资、税金、实发工资为零是因为还没有进行应发工资的计算。11 4.5 计算应发工资 在主菜单中选择“Calc the salary”进入计算应发工资界面。输入相应的扣款后,系统会提示按任意键继
8、续,然后会提示按任意键进入主菜单。4.6 查找功能 在主菜单中选择“Search record on name”进入查找界面。根据系统提示按姓名查找职工工资信息,按任意键进入主菜单。12 4.7 删除功能 在主菜单中选择“Delete a record”进入删除界面。根据系统提示按编号删除某一职工。若成功删除,系统显示下面的界面;若没有此编号的职工,则系统提示“Not found!”。然后,按任意键进入主菜单。4.8 插入功能 在主菜单中选择“Insert record to list”进入插入界面。要在某编号前插入一职 13 工,根据系统的提示先输入编号,再输入此职工的信息。然后按任意键进入
9、主菜单。4.9 追加功能 在主菜单中选择“Append record to file”进入追加界面。输入一组需要追加的信息后,输入追加到哪个文件,系统显示追加成功。然后按任意键进入主菜单。4.10 保存文件 在主菜单中选择“Save data to file”进行保存文件操作。根据系统提示输入保存 14 的文件名,然后按任意键进入主菜单。4.11 读取文件 在主菜单中选择“Load data from the file”读取文件。根据系统提示输入需要读取的文件名,然后按任意键进入主菜单。4.12 退出系统 在主菜单中选择“Quit”退出系统。界面消失。15 五、总结 机械工程学院课程设计评分表
10、 课程名称:工资管理系统 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名:日 期:16 六、附件 源程序代码:/*头文件(.h)*/#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 /*内存操作函数*
11、/#include ctype.h /*字符操作函数*/#include alloc.h /*动态地址分配函数*/*变量定义*/typedef struct z1 /*定义数据结构*/char no11;/*编号*/char name15;/*姓名*/float jbgz;/*基本工资*/float koukuan;/*扣款*/float yfgz;/*应发工资*/float shuijin;/*税金*/float sfgz;/*实发工资*/struct z1*next;/*后继指针*/SALARY;/*结构体类型名*/struct z1*head;/*链表头指针*/*函数原型*/17 voi
12、d init();/*初始化*/void create();/*创建链表*/void calc();/*计算应发工资*/void delete();/*删除*/void search();/*查找*/void save();/*保存文件*/void load();/*读取文件*/void insert();/*插入*/void append();/*追加*/void list();/*显示所有数据*/void print(SALARY*p);/*输出单条记录*/float fax(float x);/*计算税金*/int menu_select();/*主菜单*/*主函数开始*/main()i
13、nt i;clrscr();for(;)switch(menu_select()/*调用菜单函数返回一个整数值*/case 0:init();break;/*初始化*/case 1:create();break;/*输入数据创建双链表*/case 2:list();break;/*显示所有数据*/case 3:calc();break;/*计算实发工资*/case 4:search();break;/*查找职工信息数据*/case 5:delete();break;/*删除记录*/case 6:insert();break;/*插入记录*/case 7:append();break;/*追加记
14、录*/case 8:save();break;/*保存文件*/18 case 9:load();break;/*读取文件*/case 10:exit(0);/*退出*/*菜单函数,函数返回值为整型,代表所选的菜单项*/menu_select()char*f=/*定义菜单字符串数组*/*MENU*,/*菜单的标题行*/0.init list,/*初始化双链表*/1.Enter list,/*输入数据,创建链表*/2.List all n,/*显示所有记录*/3.Calc the salary,/*计算实发工资*/4.Search record on name,/*查找记录*/5.Delete a
15、 record,/*删除记录*/6.Insert record to list,/*插入记录*/7.Append record to file,/*追加记录*/8.Save data to the file,/*保存文件*/9.Load data from the file,/*读取文件*/10.Quit;/*退出*/char s80;int i;int key=0;/*记录所压键值*/int c=0;gotoxy(1,25);/*移动光标*/printf(press any key enter menu.n);/*压任意键进入主菜单*/getch();clrscr();/*清屏*/textc
16、olor(YELLOW);/*设置文本颜色为黄色*/textbackground(BLUE);/*设置背景颜色为兰色*/19 gotoxy(10,2);putch(0 xda);/*输出左上角边框*/for(i=1;i44;i+)putch(0 xc4);/*输出上边框水平线*/putch(0 xbf);/*输出右上角边框 */for(i=3;i22;i+)/*输出左右两边的垂直线*/gotoxy(10,i);putch(0 xb3);gotoxy(54,i);putch(0 xb3);gotoxy(10,22);putch(0 xc0);/*输出左上角边框*/for(i=1;i44;i+)p
17、utch(0 xc4);/*输出下边框水平线*/putch(0 xd9);/*输出右下角边框*/window(11,3,53,21);/*制作显示菜单的窗口,大小根据菜单条数设计*/clrscr();/*清屏*/for(i=0;i8;/*对所压的键进行判断*/gotoxy(10,i+1);20 textbackground(BLUE);/*设置背景颜色为蓝色*/cprintf(%s,fi);/*输出菜单项*/if(key=72)i=i=1?11:i-1;/*如压向上光标键,i 减 1,如已到第一行再上移,则到最后一行*/if(key=89)i=i=11?1:i+1;/*如压向下光标键,i 加
18、1,如已到最后一行再下移,则到第一行*/gotoxy(10,i+1);/*光标移动 i 的下一项*/textbackground(LIGHTGREEN);/*将背景颜色设为浅绿*/cprintf(%s,fi);/*输出菜单项*/c=i-1;/*给代表菜单选项的整数赋值*/textbackground(BLACK);/*设置背景颜色为黑色*/window(1,1,80,25);/*恢复原窗口大小*/return c;/*返回代表菜单选项的整数值*/*初始化函数*/void init()head=NULL;/*输入数据,创建链表*/void create()int x;/*记录行坐标*/int i
19、;/*记录输入记录数*/int flag=0;/*做结束标记*/float temp;/*定义临时变量*/SALARY*info,*p;/*定义临时变量*/if(head!=NULL)init();/*如果头指针为空,调用初始化函数*/21 p=head;/*从头指针开始*/for(;)if(flag=1)break;/*如果 flag=1,结束输入*/i=0;x=0;/*确定移动的行坐标*/clrscr();/*清屏*/gotoxy(1,3);printf(*gongziguanli*);/*输出标题*/gotoxy(1,4);printf(-Enter end-);/*提示输入结束*/go
20、toxy(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;/*新结点的后继为空*/gotoxy(1,8+x);printf(|);
21、/*输出数据间的分割线*/gotoxy(12,8+x);printf(|);gotoxy(29,8+x);printf(|);gotoxy(38,8+x);printf(|);gotoxy(2,8+x);/*光标到输入编号位置*/22 inputs(info-no,10);/*输入编号,并验证长度不超过 10*/if(info-no0=)flag=1;break;/*编号首字符为结束输入*/gotoxy(13,8+x);/*光标到输入姓名位置*/inputs(info-name,14);/*输入姓名,并验证长度不超过 14*/gotoxy(30,8+x);/*光标到输入基本工资位置*/scan
22、f(%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 为空,说明输入的是第一个结点*/head=info;/*头指针*/info-next=NULL;/*info 的后继是空*/else/*插入的结点不是第一结点,则插入在头结点之前*/in
23、fo-next=p;/*新结点的后继指向原来的头结点*/p=info;/*新结点变为 p 结点,暂时的头结点*/head=info;/*新结点变为头结点*/x+=2;/*因为水平线,将光标下移两行*/gotoxy(1,8+x);i+;/*输入记录数加 1*/if(i%9=0)break;/*输入 9 个记录,换一页输入*/23 gotoxy(1,8+x);printf(|-|-|-|);/*输出结尾水平线*/*字符串输入和验证函数*/inputs(char*s,int count)char p255;do scanf(%s,p);/*输入字符串*/if(strlen(p)count)print
24、f(n too long!n);/*进行长度校验,超过 count 值重输入*/while(strlen(p)count);strcpy(s,p);/*将输入的字符串拷贝到字符串 s 中*/*显示链表*/void list()int i=0,n;/*记录输出行数*/SALARY*p;/*定义移动指针*/clrscr();/*清屏*/p=head;/*从头指针开始*/if(head!=NULL)clrscr();/*清屏*/printf(nnn);/*换行*/printf(*SALARY*n);/*输出标题信息*/printf(|no|name|jbgz|koukuan|yfgz|shuijin
25、|sfgz|n);/*输出字段标题*/24 printf(|-|-|-|-|-|-|-|n);do 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(|-|-|-|-|-|-|-|n);p=p-next;while(p!=NULL);/*显示所有内容*/printf(*end*n);getch();/*输出指针所指结点信息*/void print(SALARY*p)if(p)/*如果指针不为空,则显示信息*/clrscr
26、();/*清屏*/printf(nnn);/*换行*/printf(*SALARY*n);/*输出标题信息*/printf(|no|name|jbgz|koukuan|yfgz|shuijin|sfgz|n);/*输出字段标题*/25 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);/*输出结束标记*/*计算实发工资
27、*/void calc()int x;/*行坐标*/int i=0;/*记录数*/float temp;/*临时变量扣款*/SALARY*p;/*移动指针*/clrscr();/*清屏*/p=head;/*从头指针开始*/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|s
28、fgz 26|);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
29、,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
30、-yfgz-1000)*fax(p-yfgz);/*否则按税率计算税金*/printf(%.2f,p-shuijin);/*输出税金*/gotoxy(68,8+x);p-sfgz=p-yfgz-p-shuijin;/*计算实发工资*/27 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 a
31、ny key congtinue.n);getch();/*根据应发工资,计算税率*/float fax(float x)float f1;if(xno)return p;/*比较相等,查找成功,返回指针*/p=p-next;/*不相等指针后移*/printf(not foundn);/*没有找到*/return NULL;/*返回为空指针*/*删除结点*/void delete()SALARY*p,*q=NULL;/*定义临时变量,p 指向要删除的结点 p*/char s11;/*要删除结点的编号*/clrscr();/*清屏*/printf(please deleted non);/*提示
32、输入信息*/scanf(%s,s);/*输入要删除的职工编号*/p=q=head;/*从头指针开始*/while(p!=NULL)if(!strcmp(s,p-no)if(p=head)head=p-next;else q-next=p-next;break;29 else q=p;p=p-next;if(p=NULL)printf(Not found!);else free(p);getch();/*按姓名查找结点*/void search()SALARY*p;/*移动指针*/char s15;/*保存姓名*/clrscr();/*清屏*/printf(please enter name f
33、or searchn);/*提示输入*/scanf(%s,s);/*输入要查找人的姓名*/p=head;/*移动指针从头指针开始*/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()30 SALARY*p,*q=NULL,*info;/
34、*info 为新结点,p 为新结点的后继*/char s11;/*保存查找的姓名*/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(|-|);goto
35、xy(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;/*新结点的后继为空*/gotoxy(1,8);printf(|);gotoxy(12,8);printf(|);gotoxy(29,8);printf(|);gotoxy(38,8);printf(|);gotoxy(2,8);inp
36、uts(info-no,10);/*输入新结点的编号,并校验*/gotoxy(13,8);inputs(info-name,14);/*输入新结点的姓名,并校验*/gotoxy(30,8);31 scanf(%f,&temp);/*输入基本工资*/info-jbgz=temp;/*给基本工资字段赋值*/info-koukuan=0;/*扣款初始为 0*/info-yfgz=0;/*应发工资初始为 0*/info-shuijin=0;/*税金初始为 0*/info-sfgz=0;/*实发工资初始为 0*/printf(|-|-|-|);p=q=head;/*移动指针从头指针开始*/while(s
37、trcmp(p-no,s)&p!=NULL)/*查找结点确定插入位置*/q=p;p=p-next;/*指针后移,继续查找*/if(p=NULL)/*如 p 为空*/if(p=head)/*如 p 为头指针,说明链表为空*/head=info;/*新结点为头指针*/else /*新结点插在尾部*/p-next=info;else if(p=head)/*p 不为空,但 p 为头指针,新结点插在第一个结点位置*/info-next=p;/*新结点的后继为 p*/head=info;/*修改头指针指向新结点*/else/*新结点插入在中间某一个位置 p 之前*/info-next=p;/*新结点的后
38、继是 p*/q-next=info;/*新结点的前驱是 p 的前驱*/32 printf(nnn-have inserted%s SALARY-n,info-name);printf(n-Dont forget save-n);/*提醒调用保存文件存盘*/*保存文件*/void save()FILE*fp;/*定义指向文件的指针*/SALARY*p;/*定义移动指针*/char outfile10;/*保存输出文件名*/clrscr();/*清屏*/printf(Enter outfile name,for example c:f1te.txt:n);/*提示输入文件名格式信息*/scanf(
39、%s,outfile);if(fp=fopen(outfile,wb)=NULL)/*为输出打开一个二进制文件*/printf(can not open filen);return;/*返回*/printf(nSaving file.n);p=head;/*移动指针从头指针开始*/while(p!=NULL)/*如 p 不为空*/fwrite(p,sizeof(SALARY),1,fp);/*写入一条记录*/p=p-next;/*指针后移,处理下一条记录*/fclose(fp);/*关闭文件*/printf(-save success!-n);/*显示保存成功*/*读文件*/33 void l
40、oad()SALARY*p;/*定义记录指针变量*/FILE*fp;/*定义指向文件的指针*/char infile10;/*保存文件名*/clrscr();/*清屏*/printf(Enter infile name,for example c:f1te.txt:n);/*输入文件名格式*/scanf(%s,infile);/*输入文件名*/if(fp=fopen(infile,rb)=NULL)/*打开一个二进制文件,为读方式*/printf(can not open filen);/*如不能打开,则结束程序*/return;/*返回*/while(head)/*当表不为空时,清空链表*/
41、p=head;/*从头指针开始*/head=head-next;/*删除头结点*/free(p);/*释放空间*/printf(n-Loading file!-n);/*显示正在读文件*/head=(SALARY*)malloc(sizeof(SALARY);/*为头指针申请空间*/if(!head)/*如果没有得到空间 显示内存溢出*/printf(out of memory!n);return;/*返回*/p=head;/*将头指针赋值给 p*/while(!feof(fp)/*当文件不空时*/if(1!=fread(p,sizeof(SALARY),1,fp)break;/*将记录读到
42、p 所指的结点*/p-next=(SALARY*)malloc(sizeof(SALARY);/*为 p 的后继申请空间*/if(!p-next)/*如果没有得到空间显示内存溢出*/34 printf(out of memory!n);return;/*返回*/p=p-next;/*p 指针后移*/p-next=NULL;/*q 的后继为空*/fclose(fp);/*关闭文件*/printf(-You have success read data from file!-n);/*显示成功读入记录*/*追加记录*/void append()FILE*fp;/*定义指向文件的指针*/SALARY
43、*info;/*指向追加信息的指针*/char infile10;/*保存文件名*/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);
44、/*结束程序*/35 info-next=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-y
45、fgz=0;/*应发工资为 0*/info-shuijin=0;/*税金为 0*/info-sfgz=0;/*实发工资为 0*/printf(|-|-|-|);printf(nnnEnter infile name,for example c:f1te.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);/*显示追加成功*/36 fclose(fp);/*关闭文件*/