c语言程序设计职工工资管理系统.doc_第1页
c语言程序设计职工工资管理系统.doc_第2页
c语言程序设计职工工资管理系统.doc_第3页
c语言程序设计职工工资管理系统.doc_第4页
c语言程序设计职工工资管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳航空航天大学理学院C语言程序设计课程设计报告题目: 职工工资管理系统 专 业: 班 级: 学 号: 学生姓名: 指导教师: 2010年 7月 9日课程设计成绩评定表姓 名学 号评语成绩平时成绩阶段考核课程设计报告总成绩指导教师(签字)教研室主任(签字)目 录一、题目简介1二、概要设计2一.程序具有的功能模块2二.每个模块具有的功能2三.系统的模块图3三、详细设计4四、调试与测试8五、解决方案9参考文献10附录(源程序清单)11 一、 题目简介 (根据课程设计要求,结合题目背景分析,以及个人对题目的深入了解,将题目要求简单扼要的总结如下。)题目:职工工资管理系统图书资料信息包括:ID号、姓名、基本工资、职务工资、津贴、医疗保险、公积金。主要功能:1、各种基本数据的录入。如:职工工资基本信息录入。2、各种基本数据的修改。即:允许对以及录入的数据重新进行编辑、修改。3、各种基本数据的插入。如:在已录入的职工工资信息中插入一条新信息。4、各种基本数据的删除。如:可以实现删除某职工相关信息的功能。5、基于各种数据的查询。实现按照多关键字查询,如:姓名为xiaowang的职工的各种工资信息二、概要设计一.程序具有的功能模块职工工资管理系统的设计大致可分为五个模块,其中每一个模块对应一个函数,它们的功能是:各种工资的录入函数(inputs),各项工资的显示函数(list),修改工资记录函数(change),查找职工工资记录的函数(search),删除某职工工资信息的函数(delete)。这些函数执行各自所需的功能,互不影响,又相互联系,共同构成一个工资管理系统。二.每个模块具有的功能第一个模块:输入记录,将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。第二个模块:显示记录,根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。第三个模块:修改记录,可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。第四个模块:查找记录,可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。第五个模块:删除记录,可以删除数据文件中的任一记录。三.系统的模块图 职工工资管理系统工资的输入工资的修改工 资 的 显 示工 资 的 查 找记 录 的 删 除菜单结束图1三、详细设计本程序利用双链表结构实现工资管理,采用模块化设计,各模块独立,可以分块调试,均由主函数调用。运行工资管理程序,首先进入光带主菜单,光标定位在菜单的第一项。通过键盘上的光标上下移动键选中菜单,按回车键后进入相应的功能函数执行数据处理。具体各模块的表达如下:一、main()主函数主函数数是程序的入口,采用模块化设计,主函数不宜复杂,功能在各模块中实现。首先声明一些必要变量,然后作一无限循环程序,循环体为一个开关(switch)语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应功能函数,同时设置一个出口,即当返回值为一定条件时运行exit()函数结束程序,以免造成死循环。算法描述如下:图2二、create()创建双链表利用光标移动函数gotoxy()定位光标位置,在光标位置显示信息的方式设计成了表格输入形式。初始时,光标停留在职工编号栏上(no),输入编号按回车键,光标跳动到姓名栏(name),依次输入。当在职工编号首字符为时结束输入返回主函数,双链表创建完毕。算法显示如下:结构图如下:开辟一个新节点,并使p1,p2指向它读入一个员工数据给p1所指的结点head=NULL, n=0当读入的P1num不是零 n =n+1 真n=1?假First=p1(把p1所指的结点作为第一个结点)p2next=p1(把p1所指的结点连接到表尾)p2=p1(p2移到表尾)再开辟一个新结点,使p1指向它读入一个员工数据给p1所指结点表尾结点的指针变量置NULL图3三、list()显示双链表本函数实现显示链表中所有数据的功能。算法如下: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(|-|-|-|-|-|-|-|n); while(p!=NULL) printf(|%3s|%5s|%5d|%5d|%6d|%4d|%4d|n,p-no,p-name,p-jbgz,p-zhwgz,p-jintie,p-ylbx,p-gjj); p=p-next; i+; if(i%10=0) break; printf(*END*n); printf(Press any key continue.n); getch(); 四、change()修改记录先利用查找结点的方法将指针指乡向所要找的记录,利用scanf函数输入数据完成修改。算法如下:void change() SALARY *p; char s3; clrscr(); printf(please change non); scanf(%s,s); p=First; while(strcmp(p-no,s)&p!=NULL) p=p-next; scanf(%s %s %5d %5d %6d %4d %4d,p-no,p-name,&p-jbgz,&p-zhwgz,&p-jintie,&p-ylbx,&p-gjj); 五、insert()插入结点插入结点需要输入插入位置和新结点信息。插入位置的确定通过输入结点的编号进行定位,新结点信息通过申请空间存放,指针info所指,先将新结点的后继指针和前趋指针都赋值为空,将新结点插在指定结点之前。从头指针h开始,循环移动指针p先查找指定结点。算法如下:六、delete()删除结点要删除记录首先要查找记录,本模块设计了两个函数:一个是查找函数find(),一个是删除记录。算法如下:reads(p,&n);循环变量i=0; 输入待删除的职工编号ngbianhaonumber假p+当in-1时p与number相等?真break;输出该职工记录不存在!记录写回文件i+关闭文件return当i=n-2显示打开文件失败!i=0写方式打开pay.txt不成功?假真数组元素依次前移 j+当j=n?真假j=i+1图3图4六、search()查找结点按照姓名查找结点,从头结点开始顺序查找,成功则将结点的指针作参数调用输出函数print(),显示该指针所指记录的信息;失败显示没有找到。具体算法如下:p=head,使p指向第一个结点p指向的不是尾结点真假输出p所指的结点p指向下一个结点当p指向的不是表尾图5四、调试与测试1.调试:做程序错误是难免的,本人在做这个工资管理系统时出现很多错误,拿一个错误为例。在进行信息的录入后,需要对录入的信息进行显示。本人用到了inputs()函数。所以就用该函数将职工的工资信息,即ID号、姓名、基本工资、职务工资、津贴、医疗保险、公积金。在程序运行时,发现显示信息的时候,只有员工的ID号和姓名可以正常显示,而其他数据均显示不正常。由此我想到了ID号和姓名数据类型为字符型,其他数据类型均设置为整型。找到inputs()函数的算法时,经过观察才发现inputs()函数是针对字符输出的函数,所以对整型数据显示不正常。改用scanf()函数输出则改正了错误,从而程序可以正常显示结果。正确输出结果:图6错误输出结果:图7五、解决方案1、忘记定义变量。例如:main()a=8;b=3;c=a*b;printf(“%d”,c);程序中变量要先定义在应用。所以要在开头加int a,b,c;2、语句结束后忘记加分号。例如: printf(nlist no %s SALARYn,s)3、语法错误,编写程序过程中经常出现语法错误,有的因为语句使用不正确,有的因为单词拼写错误只需细心检查便可发现。例如:scanf写成scan4、连接错误。编完程序要进行编译连接。可检查连接路径是否正确。5、运行显示错误。在编译、连接均可执行后。运行时出现了错误的结果。参见调试与测试,找到相关原程序即可发现错误。6、定义的数据与使用时数据类型要一致,否则出现错误。参考文献1郭翠英等编著.C语言课程设计案例精编.中国水利水电出版社.2004附录(源程序清单)#include#include#include#include#include#include#include#include#includetypedef struct z1 char no4; char name5; int jbgz,zhwgz,jintie,ylbx,gjj; struct z1 *prior; struct z1 *next;SALARY;struct z1 *First;struct z1 *Last;void init();void create();void delete();void search();void insert();void list();void change();void print(SALARY *p);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:search();break; case 4:delete();break; case 5:insert();break; case 6:change();break; case 7:exit(0);break; menu_select()char *f=*MENU*,0.init list,1.enter list,2.list alln,3.search record on name,4.delete a record,5.insert record to list,6.change a record,7.quit;char s80;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;i44;i+)putch(0xc4);putch(0xbf);for(i=3;i22;i+) gotoxy(10,i);putch(0xb3); gotoxy(54,i);putch(0xb3);gotoxy(10,22);putch(0xc0);for(i=1;i44;i+) putch(0xc4);putch(0xd9);window(11,3,53,21);clrscr();for(i=0;i8; gotoxy(10,i+1); textbackground(BLUE); cprintf(%s,fi); if(key=72) i=i=1?17:i-1; if(key=80) i=i=17?1:i+1; gotoxy(10,i+1); textbackground(LIGHTGREEN); cprintf(%s,fi); 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; i=0; x=0; clrscr(); gotoxy(1,3); printf(*gongziguanli*); gotoxy(1,4); printf( -enter end- ); gotoxy(1,5); printf(|-|); gotoxy(1,6); printf(|ID |name |jbgz |zhwgz|jintie|ylbx|gjj |); 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(5,8+x);printf(|); gotoxy(11,8+x);printf(|); gotoxy(17,8+x);printf(|); gotoxy(23,8+x);printf(|); gotoxy(30,8+x);printf(|); gotoxy(35,8+x);printf(|); gotoxy(40,8+x);printf(|); gotoxy(2,8+x); inputs(info-no,3); if(info-no0=) flag=1; break; gotoxy(6,8+x); inputs(info-name,5); gotoxy(12,8+x); scanf(%d,&info-jbgz); gotoxy(18,8+x); scanf(%d,&info-zhwgz); gotoxy(24,8+x); scanf(%d,&info-jintie); gotoxy(31,8+x); scanf(%d,&info-ylbx); gotoxy(36,8+x); scanf(%d,&info-gjj); if(p=NULL) First=Last=info ; First-prior=NULL; Last-next=NULL; else info-next=p; info-prior=p-prior; p-prior=info; p=info; First=info; x+=2; gotoxy(1,8+x); i+; if(i%9=0) break; gotoxy(1,8+x); printf(|-|-|-|-|-|-|-|); inputs(char*s,int count) char p255; do scanf(%s,p); if(strlen(p)count)printf(n too long!n); while(strlen(p)count); strcpy(s,p); 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(|-|-|-|-|-|-|-|n); while(p!=NULL) printf(|%3s|%5s|%5d|%5d|%6d|%4d|%4d|n,p-no,p-name,p-jbgz,p-zhwgz,p-jintie,p-ylbx,p-gjj); p=p-next; i+; if(i%10=0) break; printf(*END*n); printf(Press any key continue.n); getch(); void change() SALARY *p; char s3; clrscr(); printf(please change non); scanf(%s,s); p=First; while(strcmp(p-no,s)&p!=NULL) p=p-next; scanf(%s %s %5d %5d %6d %4d %4d,p-no,p-name,&p-jbgz,&p-zhwgz,&p-jintie,&p-ylbx,&p-gjj); void insert() SALARY *p,*info; 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(|-|); gotoxy(1,6); printf(|ID |name |jbgz |zhwgz|jintie|ylbx|gjj |); 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(5,8);printf(|); gotoxy(11,8);printf(|); gotoxy(17,8);printf(|); gotoxy(23,8);printf(|); gotoxy(30,8);printf(|); gotoxy(35,8);printf(|); gotoxy(40,8);printf(|); gotoxy(2,8); inputs(info-no,3); gotoxy(6,8); inputs(info-name,5); gotoxy(12,8); scanf(%d,info-jbgz); gotoxy(8,18); scanf(%d,info-zhwgz); gotoxy(24,8); scanf(%d,info-jintie); gotoxy(31,8); scanf(%d,info-ylbx); gotoxy(36,8); scanf(%d,info-gjj); printf(|-|-|-|-|-|-|-|); p=First; while(strcmp(p-no,s)&p!=NULL) p=p-next; if(p=NULL) if(p=First) First=info; First-prior=NULL; Last=First; else Last-next=info; info-prior=Last; Last=info; else if(p=First) info-prior=NULL; info-next=p; p-prior=info; First=info; else info-next=p; info-prior=p-prior; p-prior-next=info; p-prior=info; printf(nnn-have

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论