C语言课程设计报告(企业职工信息管理系统)毕业论文.doc_第1页
C语言课程设计报告(企业职工信息管理系统)毕业论文.doc_第2页
C语言课程设计报告(企业职工信息管理系统)毕业论文.doc_第3页
C语言课程设计报告(企业职工信息管理系统)毕业论文.doc_第4页
C语言课程设计报告(企业职工信息管理系统)毕业论文.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告学 院: 信息科学与工程学院 专 业:计算机科学与技术(软件外包) 一、二、 设计内容及要求企业职工人事基本信息包括:职工编号、姓名、性别、出生年份、职称(助工、工程师、高级工程师)、任现职年限、实发工资。系统的主要功能包括:1. 创建职工人事基本信息文件,根据提示输入职工的各项信息,将职工信息存储到一个二进制文件中。2. 增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新的职工信息,要求保存至原文件,并提示用户选择是否继续进行添加操作。3. 删除职工人事基本信息,提示用户输入要进行删除操作的职工编号,如果在文件中有该信息存在,则将该编号所对应的职工信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。4. 修改职工人事基本信息,提示用户输入要进行修改操作的职工编号,如果在文件中有该息存在,则提示用户输入要修改的选项(职称、任现职年限),结果保存至原文件,并提示用户选择是否继续进行修改操作。5. 按不同条件进行查询操作,输出满足条件的职工信息。(1) 按职工编号查询,输入一个编号,输出对应的职工信息。(2) 按姓名查询,输入全名。6. 按不同条件对职工信息进行统计工作。(1) 统计各职称岗位的职工人数是多少,计算高级工程师的比例。(2) 计算企业职工的平均实发工资,并输出。(3) 统计职工工资低于平均工资的人数,并输出他们的姓名和实发工资。三、 设计思路该系统分为六大功能,分别为创建、增加、删除、修改、查询、统计,所以总体上先从界面部分定义了六个函数,这些功能通过定义的函数一步步实现。每一个功能的实现通过字符数组的定义和使用以及各种函数的运用来解决。四、 设计结果及分析第一次写的程序虽然说能运行通过,但是没有把按不同条件统计职工信息以及删除工作功能实现,所以继续重做,一遍一遍的改正,结果程序改的乱七八糟,而且出现了许多错误,慢慢努力,总算勉强通过。五、 总结忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。为了解决此。类问题,最好就是多向同学,老师请教,不要怕难为情。尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是small case。在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是坐标来做的,所以为了方便设计程序,我们也改为坐标来做的,这样计算问题解决了。接下去就是按键问题,我们的资料是用鼠标做的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。最后就是闪烁,这个设计的方法很死板,都一个类型,就是算坐标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会。五、附录(源代码)#include#include#include#define N 50#define M 2012int numberN;char nameNN;char sexNN;int birthyearN;int workyearN;int salarN;static int employeenum=1;/定义全局变量来统计录入信息个数char positionNN;/职称void Menu(void);/显示主菜单函数void Found(void);/创建文件函数void Look(void);/查看信息函数void Add(void);/增加信息函数void Dele(void);/删除信息函数void Change(void);/修改信息函数void Tongji(void);/统计信息函数void Jiewei(void);/用于退出系统时的结束语言int main(void) char select;Found();while(1)Menu();/调用Menu函数显示主菜单scanf(%d,&select);/输入想选择的功能fflush(stdin);switch(select)/对select进行多分支选择case 1: system(cls);Look();break;case 2: system(cls);Add();break;case 3: system(cls);Dele();break;case 4:system(cls);Change();break;case 5: system(cls);Tongji();break;case 0: system(cls);printf(nt谢谢使用再见n);Jiewei();exit(0);default:system(cls);printf(nt按键有误,请重新选择!n);return 0;/=/功能:显示系统菜单/参数:无/返回值:无/主要思路:利用printf函数输出菜单/=/void Menu(void)printf(n);printf(tn);printf(t n);printf(t *企业职工人事信息管理系统* n);printf(t n);printf(tn);printf(=n);printf( t 王栋tt计算机1101n);printf(=n);printf(n);printf(t请输入您要进行的操作: nn);printf(t 【*】n);printf(t 【1.查询职工信息 】n);printf(t 【2.增加职工信息 】n);printf(t 【3.删除职工信息 】n);printf(t 【4.修改职工信息 】n);printf(t 【5.统计职工信息 】n);printf(t 【0.退出系统 】n);printf(t 【*】n);printf(n);printf(t 请选择按键(0-5): );/=/功能:创建职工信息文件,根据提示输入职工的各项信息,将职工信息存储到一个二进制文件中./主要思路:定义文件指针变量以读写形式创建一个文件,根据提示录入信息./=/void Found(void)int n=0;FILE *fp;if(fp=fopen(d:employee.dat,wb+)=NULL)printf(Cant open file!);return;printf(n);printf(n); printf(n);printf( n); printf(*欢迎使用企业职工人事信息管理系统*n);printf( n);printf(n);printf(n);printf(=n);printf(请按照提示创建职工信息n);printf(=n);printf(n);found:printf(1.输入编号: );scanf(%d,&number0);printf(2.输入出生年份: );scanf(%d,&birthyear0);printf(3.输入任现职年限: );scanf(%d,&workyear0);printf(4.输入工资: );scanf(%d,&salar0);fflush(stdin);if(number00)&(birthyear00&birthyear00&workyear00)fwrite(&number0,4,1,fp);printf(5.输入姓名: );scanf(%s,name0);fwrite(name0,1,1,fp);printf(6.输入性别: );scanf(%s,sex0);fwrite(sex0,1,1,fp);fwrite(&birthyear0,4,1,fp);fwrite(&workyear0,4,1,fp);fwrite(&salar0,4,1,fp); printf(7.输入职称(1.助工、2.工程师、3.高级工程师): );scanf(%s,position0);fwrite(position0,1,1,fp);rewind(fp);fread(&number0,4,1,fp);printf(%d号t,number0);fread(name0,1,1,fp);printf(姓名:%st,name0);fread(sex0,1,1,fp);printf(性别:%st,sex0);fread(&birthyear0,4,1,fp);printf(出生年份:%dt,birthyear0);fread(&workyear0,4,1,fp);printf(任现职年限:%dt,workyear0);fread(&salar0,4,1,fp);printf(工资:%d元t,salar0);elsesystem(cls);printf(输入的信息中存在错误请重新输入,请注意编号出生年份任现职年限以及工资应大于0以及任现职年限以及出生年份应符合实际n);goto found;system(cls);fclose(fp);/=/功能:查找信息/主要思路:利用循环及数组显示信息/=/void Look(void)int j,find,z,i;/find为查询方式的数字,j,z,i用于循环char ch2;/接受y/n和回车char cwNN;/储存输入要查询的名字FILE *fp;if(fp=fopen(d:employee.dat,rb)=NULL)printf(Cant open file!);return;look1:;printf(请选择查询方式(按照编号查询请输入1,按照姓名查询请输入2.): );scanf(%d,&find);fflush(stdin);if(find=1)&(employeenum0)doprintf(请输入编号进行查询: );scanf(%d,&j);/fflush(stdin);/printf(您要查找的职工编号为: %dn,j);for(i=0;i0)/找到相配匹的编号printf(职工编号:%dt姓名:%st性别:%st出生年份:%dt工作年份:%dt工资:%d,numberi,namei,sexi,birthyeari,workyeari,salari);printf(n);goto look;/与skip:相结合,无条件跳到skip,若循环找到编号,剩下的不必要的循环不需继续。if(i=(employeenum+1)printf(没查到该编号!);fflush(stdin);look:printf(是否继续查询?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);/用来重复查询 if(employeenum=0)printf(当前系统中无职工信息,请添加后在进行操作!);return; if(find!=2)&(find!=1)printf(请输入1或0进行操作!);goto look1;if(find=2)doz=0;printf(请输入姓名进行查询: );scanf(%s,cw0);for(i=0;i0)/找到想匹配的职工姓名,strcmp在头文件#include中printf(您要查找的职工姓名为: %sn,cw0);printf(职工编号:%dt姓名:%st性别:%st出生年份:%dt任现职年限:%dt工资:%d,numberz,namez,sexz,birthyearz,workyearz,salarz);printf(n);if(i=(employeenum+1)printf(没查到该姓名!);fflush(stdin);printf(是否继续查询?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);fclose(fp);/=/功能:增加信息/主要思路:利用do,while循环/=/void Add(void)char ch2;int j,m;/m用于判断是否新输入的编号已经存在static int i=1;/静态局部变量用于统计信息个数FILE *fp;if(fp=fopen(d:employee.dat,ab)=NULL)printf(Cant open file!);return;/若文件打不开则返回主函数doadd1:;add2:;m=0;printf(输入编号: );scanf(%d,&numberi);printf(输入出生年份: );scanf(%d,&birthyeari);printf(输入任现职年限: );scanf(%d,&workyeari);printf(输入工资: );scanf(%d,&salari);fflush(stdin);if(numberi=0|birthyeari=0|workyeari=0|salariM|workyeariM)system(cls);printf(输入信息有误请重新输入);goto add2;for(j=0;j0)m+;goto add;/若存在重复编号结束循环跳到skip0处add:;if(m=0)/不存在重复编号可继续写入其他信息fwrite(&numberi,4,1,fp);printf(输入姓名: );scanf(%s,namei);fwrite(namei,1,1,fp);printf(输入性别: );scanf(%s,sexi);fwrite(sexi,1,1,fp);fwrite(&birthyeari,4,1,fp);fwrite(&workyeari,4,1,fp);fwrite(&salari,4,1,fp);printf(输入职称(助工、工程师、高级工程师): );scanf(%s,positioni);fwrite(positioni,1,1,fp);i+;employeenum+;if(m=1)/若有重复编号则跳回skip9,即循环第一步printf(该编号已存在!请重新输入n);goto add1;printf(已经录入%d个职工的信息,employeenum);printf(是否继续添加?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);fclose(fp);/=/功能:删除信息/主要思路:利用循环.void Dele(void)int j,i;char cw2;char ch2;FILE *fp;if(fp=fopen(d:employee.dat,rb+)=NULL)printf(Cant open file!);return;dodele3:;printf(请输入编号进行删除: );scanf(%d,&j);fflush(stdin);if(j=0)printf(您输入的编号有误,请重新输入n);goto dele3;for(i=0;i=employeenum;i+)if(numberi=j)goto dele;if(i=employeenum+1)printf(没有该编号,返回主菜单!);return;dele:;printf(您要删除的职工编号为: %dn,j);for(i=0;i0)printf(查到该职工信息是否进行删除?(y/n);scanf(%s,cw);if(strcmp(cw,y)=0)numberi=0;nameiN= ;sexiN= ;birthyeari=0;workyeari=0;salari=0; employeenum=employeenum-1;printf(删除成功!);goto dele1;if(i=employeenum+1)printf(没查到该编号!);if(employeenum=0)printf(当前系统中无信息,请添加后进行操作!);return;dele1:;printf(是否继续删除?(y/n);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);/=/功能:修改信息/主要思路:利用循环和数组重新输入信息/=/void Change(void)int j,i;char ch2;char cw2;FILE *fp;if(fp=fopen(d:employee.dat,rb+)=NULL)printf(Cant open file!);return;dochange2:;printf(请输入编号进行修改: );scanf(%d,&j);fflush(stdin);if(employeenum=0)printf(当前系统中无职工信息,请添加后在进行操作!);return;for(i=0;i=employeenum;i+)if(numberi=j)goto change;if(i=employeenum+1)printf(没有该编号,返回主菜单!);return;change:;printf(您要修改的职工编号为: %dn,j);if(j=0)printf(你输入的编号有误请重新输入n);goto change2;for(i=0;i0)printf(查到该职工信息是否进行修改?(y/n);scanf(%s,cw);if(strcmp(cw,y)=0)printf(要修改的姓名为: );scanf(%s,namei);fwrite(namei,1,1,fp);printf(要修改的性别为: );scanf(%s,sexi);fwrite(sexi,1,1,fp);printf(要修改的出生年份为: );scanf(%d,&birthyeari);fwrite(&birthyeari,4,1,fp);printf(要修改的任现职年限为: );scanf(%d,&workyeari);fwrite(&workyeari,4,1,fp);printf(要修改的工资为: );scanf(%d,&salari);fwrite(&salari,4,1,fp); printf(要修改的职称(助工、工程师、高级工程师)为: );scanf(%s,positioni);fwrite(positioni,1,1,fp);goto change1;if(strcmp(cw,n)=0)return;change1:;printf(是否继续修改?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);fclose(fp);/=/功能:统计信息/主要思路:利用循环选择不同的统计信息/=/void Tongji(void)char csNN=助工,工程师,高级工程师;/初始化以便于下边统计信息int select1,p=0,p1=0,p2=0,f=0,i,z;/select1为选择,p,p1,p2分别代表助工工程师高级工程师的人数,i,z用于循环,f用于计算低于平均工资的人数int salar1=0;float a,a1,a2;/用于计算高级工程师的比例FILE *fp;if(fp=fopen(d:employee.dat,rb+)=NULL)printf(Cant open file!);return;tongji:;printf( 统计各职称岗位的职工人数是多少,计算高级工程师的比例,请输入1: n);printf( 计算职工的平均工资并输出,请输入2: n);printf( 统计职工工资低于平均工资的人数,并输出他们的姓名和实发工资,请输入3: n);printf(您的选择为: );scanf(%d,&select1);fflush(stdin);if(select1=1)&(employeenum0)for(i=0,z=0;i0)/与助工相同p加一p+;if(strcmp(positionz,cs1)=0)&(numberz0)p1+;if(strcmp(positionz,cs2)=0)&(numberz0)p2+;printf(助工有:%dt工程师有:%dt高级工程师有:%dn,p,p1,p2);a=(float)p;a1=(float)p1;a2=(float)p2;printf(高级工程师的比例是:%.2f,a2/(a+a1+a2)*100);printf(%);else if(select1=2)&(employeenum0)for(i=0;i0;i+)salar1=salar1+salari;printf(职工平均工资为:%d/%d=%d,salar1,employeenum,salar1/employeenum);else if(select1=3)&(employeenum0) for(i=0;i0;i+)salar1=salar1+salari; for(i=0;i0;i+) if(salarisalar1/employeenum) f=f+1; printf(姓名:%st工资:%d,namei,salari);else if(employeenum=0)printf(当前系统中无职工信息,请添加后在进行操作!);return;else if(select1!=1)&(select1!=2)&(select1!=3)printf(您输入的选项有误请重新输入!n);goto tongji;fclose(fp);void Jiewei(void)printf(n);printf(企业职工人事信息管理系统n);printf(王栋 计算机 1101n);袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃

温馨提示

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

评论

0/150

提交评论