收藏 分享(赏)

计算机软件技术基础课程设计-工资管理系统的设计.doc

上传人:dzzj200808 文档编号:2352947 上传时间:2018-09-12 格式:DOC 页数:32 大小:1,011KB
下载 相关 举报
计算机软件技术基础课程设计-工资管理系统的设计.doc_第1页
第1页 / 共32页
计算机软件技术基础课程设计-工资管理系统的设计.doc_第2页
第2页 / 共32页
计算机软件技术基础课程设计-工资管理系统的设计.doc_第3页
第3页 / 共32页
计算机软件技术基础课程设计-工资管理系统的设计.doc_第4页
第4页 / 共32页
计算机软件技术基础课程设计-工资管理系统的设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、湖南文理学院课程设计报告课程名称: 计算机软件技术基础 系 部: 电气与信息工程学院 专业班级: 通信 08102班 学 号: 学生姓名: 指导教师: 完成时间: 2010-12-28 报告成绩: 评阅意见:评阅教师 日期 1目录一设计要求 2二设计作用与目的 2三运行环境及工具软件 3四系统设计 31.需求分析 32设计分析 33.具体设计 3(1)模块设计 3(2)流程图 4(3)源程序及注释 6五系统调试 271.调试结果 .272.设计中的问题及解决方法 29六设计心得 30七参考文献 312工资管理系统的设计一.设计要求设计编写一个工资管理系统,该软件与实际应用还有很大的距离,但它涵

2、盖了数据库设计的基本内容。根据实际工作的需要,一般工资管理系统应有以下几个基本功能:1、启动软件时,进行密码校验。若出错三次,则自动退出系统。2、实现简易的提示菜单界面,刚运行时应显示版本信息。用所学的知识尽量实现良好的、美观的“人机界面” ,便于软件的操作使用。3、要求把所有录入的数据以文件的形式,保存在硬盘上。4、系统包含以下基本功能:登陆功能、显示主菜单功能、职工信息输入信息输出、职工信息查询、职工信息修改、工资排序、工资统计、导出数据、导入数据、退出等。二.设计作用与目的1、通过这次专题实习,巩固和加深对所学相关知识点的理解。2、进一步熟悉基本流程控制结构实现分支的 ifelse语句、

3、switch 语句和实现循环的 for、while、dowhile 语句、break、continue 等。3、基本数据类型、数组、结构体、自定义类、函数的应用。4、加强对模块化程序设计和面向对象程序设计的理解。5、掌握 CC+语言程序设计的基本思想,了解简单的系统分析和6、了解数据库系统的理论7、掌握数据库设计的基本方法,熟悉数据库设计的步骤;8、学习基本数据库编程方法9、进一步巩固、加深学生所学专业课程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。10、全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。11、利用所学知识,开发小型

4、应用系统,掌握运用 C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。12、对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 13、掌握面向对象的程序设计方法。14、进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试) 、修改程序和程序的测试。3三.运行环境及工具软件Windows XP;Turbo C;四系统设计1.需求分析本次设计的工资管理系统的信息包括:工号、姓名、基本工资、扣款等信息。有浏览、查询、录入、编辑、删除等功能。2设计分析根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写

5、出书面文档总体设计说明,为下一步进行详细设计做准备。该系统可以按功能进行模块划分,其系统结构框图如下:工资管理系统登陆功能 用户管理 职工信息输入信息输出 职工信息输出 工资职工信息查询计算 职工信息修改 工资排序 工资统计 导入数据 退出导出数据3.具体分析(1)模块设计本次设计的模块包括输入模块、输出模块、计算实发工资模块、插入和追加记录模块、4删除模块等。其各模块的分析如下:a.输入模块输入模块采用表格形式输入需要创建的数据。其中包括:输入职工编号、姓名、基本工资等。使用的函数和数据描述如下:void create(); /*创建链表*/char no11; /*编号*/char nam

6、e15; /*姓名*/float jbgz; /*基本工资*/b.输出模块将输入的所有数据显示在运行界面,可以显示所有数据记录或者根据输入的编号显示所输编号的一条数据记录。其中所设计的函数如下:void list(); /*显示所有数据*/void print(SALARY *p); /*输出单条记录*/void display(); /*随意逐条显示*/c.计算实发工资模块应发工资=基本工资-扣款;税金=(应发工资-1000)*税率(当应发工资1000) ;实发工资=应发工资-税金;设计的函数有 void calc(); /*计算应发工资*/和 float fax(float x); d.插

7、入和追加记录模块插入位置的确定通过输入节点的编号进行定位,追加记录直接加在所有记录的最后。设计的函数为:void insert(); /*插入*/和 void append(); /*追加*/e.删除模块删除一条记录,要删除记录首先要查找记录,所以本模块设计了两个函数:一个查找函数 find() ,实现按编号查找的功能;一个是删除查找到的记录 delete( )。(2)流程图5YYYYYYYYYYYYYYNNNNNNNNNNNN开始主菜单选择操作选择 1选择 0选择 3选择 2选择 5选择 4选择 7选择 6选择 9选择 8选择 11选择 10选择 13选择 12初始化表单输入数据显示数据分类

8、合计读取文件退出计算实发工资查找记录插入记录删除记录保存文件追加记录排序索引结束6(3).源程序及注释#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

9、“ /*动态地址分配函数*/*变量定义*/typedef struct z1 /*定义数据结构*/char no11; /*编号*/char name15; /*姓名*/float jbgz; /*基本工资*/float koukuan; /*扣款*/float yfgz; /*应发工资*/float sfgz; /*实发工资*/struct z1 *prior;/*前驱指针*/struct z1 *next;/*后继指针*/SALARY; /*结构体类型名*/struct z1 *First; /*双链表头指针*/struct z1 *Last; /*双链表尾指针*/*函数原型*/void

10、init(); /*初始化*/void create(); /*创建链表*/void calc(); /*计算应发工资*/void delete(); /*删除*/void search(); /*查找*/void save(); /*保存文件*/void load(); /*读取文件*/void insert(); /*插入*/void append(); /*追加*/7void sort(); /*排序*/void index(); /*索引*/void total(); /*分类合计*/void list(); /*显示所有数据*/void print(SALARY *p); /*输出单

11、条记录*/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:calc();break; /*计算实发工资*/case 4:search();break; /*查找职工信息数据*/case 5:delete();break; /*删除记录*/case

12、 6:insert();break; /*插入记录*/case 7:append();break; /*追加记录*/case 8:save();break; /*保存文件*/case 9:load(); break; /*读取文件*/case 10:sort();break; /*按实发工资升序排序*/case 11:index();break; /*按职工号索引*/case 12:total();break; /*按部门求合计*/case 13:exit(0); /*退出*/*菜单函数,函数返回值为整型,代表所选的菜单项*/menu_select()char *f= /*定义菜单字符串数组*

13、/8“*MENU*“, /*菜单的标题行*/“ 0. init list“, /*初始化双链表*/“ 1. Enter list“, /*输入数据,创建双链表*/“ 2. List all n“, /*显示所有记录*/“ 3. Calc the salary“, /*计算实发工资*/“ 4. Search record on name“, /*查找记录*/“ 5. Delete a record“, /*删除记录*/“ 6. Insert record to list“, /*插入记录*/“ 7. Append record to file“, /*追加记录*/“ 8. Save data t

14、o the file“, /*保存文件*/“ 9. Load data from the file“,/*读取文件*/“ 10. Sort on sfgz“, /*排序*/ “ 11. Index on number“, /*索引*/“ 12. Total on number“, /*分类合计*/“ 13. Quit“ ; /*退出*/char s80;int i;int key=0; /*记录所压键值*/int c=0;gotoxy(1,25); /*移动光标*/clrscr(); /*清屏*/textcolor(YELLOW); /*设置文本颜色为黄色*/textbackground(BL

15、UE); /*设置背景颜色为兰色*/gotoxy(10,2);putch(0xda); /*输出左上角边框*/for(i=1;i8; /*对所压的键进行判断*/gotoxy(10,i+1);textbackground(BLUE);/*设置背景颜色为蓝色*/cprintf(“%s“,fi); /*输出菜单项*/if(key=72) i=i=1?13:i-1; /*如压向上光标键,i 减 1,如已到第一行再上移,则到最后一行*/if(key=80)i=i=13?1:i+1; /*如压向下光标键,i 加 1,如已到最后一行再下移,则到第一行*/gotoxy(10,i+1); /*光标移动 i的下一

16、项*/textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/cprintf(“%s“,fi); /*输出菜单项*/c=i-1; /*给代表菜单选项的整数赋值*/textbackground(BLACK); /*设置背景颜色为黑色*/window(1,1,80,25); /*恢复原窗口大小*/return c; /*返回代表菜单选项的整数值*/*初始化函数*/void init()10First=NULL;Last=NULL;/*输入数据,创建双链表*/void create()int x; /*记录行坐标*/int i; /*记录输入记录数*/int flag=0;

17、 /*做结束标记*/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);p

18、rintf(“|-|“);/*输出表格的起始线*/gotoxy(1,6);printf(“| no | name | jbgz |“);/*输出字段标题,注意空格数*/for(;)gotoxy(1,7+x);printf(“|-|-|-|“);/*输出表格的水平线*/info=(SALARY *)malloc(sizeof(SALARY);/*申请一个记录空间*/11if(!info)printf(“nout of memory“);/*如没有得到空间,输出内存溢出信息*/exit(0);/*退出程序*/info-next=NULL;/*新结点的后继为空*/info-prior=NULL;/*

19、新结点的前驱为空*/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-no0=)flag=1;break; /*编号首字符为结束输入*/gotoxy(13,8+x); /*光标到输入姓名位置*/inputs(info-name,14); /*输入姓名,并验证长

20、度不超过 14*/gotoxy(30,8+x); /*光标到输入基本工资位置*/scanf(“%f“, /*输入基本工资到临时变量*/info-jbgz=temp; /*基本工资赋值*/info-koukuan=0; /*初始扣款为 0,待计算工资时输入*/info-sfgz=0; /*初始实发工资为 0,待计算工资时计算*/info-yfgz=0; /*初始应发工资为 0,待计算工资时计算*/if(p=NULL)/*如果 p为空,说明输入的是第一个结点*/First=Last=info;/*头指针和尾指针*/First-prior=NULL; /*头指针的前驱是空*/Last-next=NU

21、LL; /*尾指针的后继是空*/else /*插入的结点不是第一结点,则插入在头结点之前*/info-next=p;/*新结点的后继指向原来的头结点*/info-prior=p-prior;/*新结点的前驱指向原来的头结点的前驱*/12p-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);p

22、rintf(“|-|-|-|“);/*输出结尾水平线*/*字符串输入和验证函数*/inputs(char *s, int count)char p255;doscanf(“%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=

23、First; /*从头指针开始*/while(i%10=0 /*记录一页的输出行数*/clrscr(); /*清屏*/13printf(“nnn“); /*换行三次*/printf(“*SALARY*n“); /*输出大标题*/printf(“|nO | name | jbgz | koukuan | yfgz | sfgz |n“); /*输出字段标题*/printf(“|-|-|-|-|-|-|n“); /*输出水平线*/while(p!=NULL) /*当 p不为空时*/printf(“|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|n“,p-no,p-name

24、,p-jbgz,p-koukuan,p-yfgz,p-sfgz);p=p-next; /*指针后移*/i+; /*输出行数加 1 */if(i%10=0)break; /*如果满 10行,跳出内循环*/printf(“*end*n“); /*输出本页的结束行*/printf(“Press any key congtinue.n“);getch(); /*输出一页暂停一下,压任意键继续*/ /*返回到外循环,准备下一页的输出*/*输出指针所指结点信息*/void print(SALARY *p)if(p) /*如果指针不为空,则显示信息*/clrscr(); /*清屏*/printf(“nnn“

25、); /*换行*/printf(“*SALARY*n“); /*输出标题信息*/printf(“|no | name | jbgz | koukuan| yfgz | sfgz |n“); /*输出字段标题*/14printf(“|-|-|-|-|-|-|n“); /*输出分割线*/printf(“|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|n“, p-no,p-name,p-jbgz,p-koukuan,p-yfgz,p-sfgz);/*输出结点信息*/printf(“*end* *n“); /*输出结束标记*/*计算实发工资*/void calc()int x

26、; /*行坐标*/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 | sf

27、gz |“);while(p!=NULL) /*当 p不为空时,也就是有记录时,内循环控制处理 9条*/gotoxy(1,7+x);printf(“|-|-|-|-|-|-15-|“);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(2,8+x);print

28、f(“%-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“, /*输入扣款*/p-koukuan=temp; /*扣款字段赋值*/p-yfgz=p-jbgz-p-koukuan; /*计算应发工资=基本工资-扣款*/gotoxy(50,8+x);printf(“%.2f“,p-yfgz); /*输出应发工资*/gotoxy(59,8+x);p-sfgz=p-yfgz

29、; /*计算实发工资*/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();/*按编号查找记录*/16SALARY *find(char *no)SALARY *p; /*定义移动指针*/p=First; /*从头指针

30、开始*/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 s11; /*要删除结点的编号*/clrscr(); /*清屏*/printf(“please deleted non“); /*提示输入信息*/scanf(“%s“,s); /*输入要删除的

31、职工编号*/if(p=find(s)!=NULL) /*调用查找函数,如果找到做下面的处理*/if(First=p) /*如果是第一个结点*/First=p-next; /*将头指针指向其后继结点*/if(First) /*如头指针不为空*/First-prior=NULL; /*将头结点的前驱设为空*/elseLast=NULL; /*否则头为空,尾也为空*/else /*删除的不是第一个结点*/p-prior-next=p-next; /*p的前驱的后继指向 p原来的后继*/if(p!=Last) /*如果 p不是最后个结点*/p-next-prior=p-prior; /*p后继的前驱指

32、向 p原来的前驱*/17elseLast=p-prior;/*如 p是最后一个结点,修改尾指针为 p的前驱*/free(p); /*删除结点后,不要忘记释放空间*/printf(“n have deleted %s SALARYn“,s);printf(“Dont forget saven“);/*按姓名查找结点*/void search()SALARY *p; /*移动指针*/char s15; /*保存姓名*/clrscr(); /*清屏*/printf(“please enter name for searchn“); /*提示输入*/scanf(“%s“,s); /*输入要查找人的姓名

33、*/p=First; /*移动指针从头指针开始*/while(strcmp(p-name,s) /*没找到,指针后移继续查找*/if(p=NULL) /*指针为空,说明没有找到*/printf(“nlist no %s SALARYn“,s); /*显示没找到信息*/elseprintf(“nn“); /*换行*/print(p); /*查找成功,调用输出函数输出指针 p所指记录*/*插入结点*/void insert()SALARY *p,*info; /* info为新结点,p 为新结点的后继*/char s11; /*保存查找的姓名*/float temp; /*临时变量*/clrscr

34、(); /*清屏*/printf(“please enter location before the non“); /*提示输入在哪个结点之前插入*/18scanf(“%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

35、);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

36、);inputs(info-no,10); /*输入新结点的编号,并校验*/gotoxy(13,8);inputs(info-name,14); /*输入新结点的姓名,并校验*/gotoxy(30,8);scanf(“%f“, /*输入基本工资*/info-jbgz=temp; /*给基本工资字段赋值*/info-koukuan=0; /*扣款初始为 0*/info-yfgz=0; /*应发工资初始为 0*/info-sfgz=0; /*实发工资初始为 0*/printf(“|-|-|-|“);p=First; /*移动指针从头指针开始*/while(strcmp(p-no,s) /*指针后移

37、,继续查找*/if(p=NULL) /*如 p为空*/if(p=First) /*如 p为头指针,说明链表为空*/First=info; /*新结点为头指针*/First-prior=NULL; /*头结点的前驱为空*/Last=First; /*唯一结点,尾指针等于头指针*/else /*新结点插在尾部*/Last-next=info;info-prior=Last;Last=info; /*尾指针指向新结点*/elseif(p=First) /*p不为空,但 p为头指针,新结点插在第一个结点位置*/info-prior=NULL; /*新结点的前驱为空*/info-next=p; /*新结

38、点的后继为 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-Dont forget save-n“); /*提醒调用保

39、存文件存盘*/*保存文件*/void save()FILE *fp; /*定义指向文件的指针*/20SALARY *p; /*定义移动指针*/char outfile10; /*保存输出文件名*/clrscr();/*清屏*/printf(“Enter outfile name,for example c:f1te.txt:n“);/*提示输入文件名格式信息*/scanf(“%s“,outfile);if(fp=fopen(outfile,“wb“)=NULL) /*为输出打开一个二进制文件*/printf(“can not open filen“);return; /*返回*/printf(

40、“nSaving filen“);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 infile10; /*保存文件名*/clrscr();/*清屏*/

41、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; /*返回*/21while(First) /*当表不为空时,清空链表*/p=First; /*从头指针开始*/First=First-next; /*删除头结点*/free(p); /*释放空间*/printf

42、(“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);

43、/*为 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!-

44、n“); /*显示成功读入记录*/*追加记录*/void append()22FILE *fp; /*定义指向文件的指针*/SALARY *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); /*结束程序*/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)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报