C语言课程设计报告范文.docx

上传人:z**** 文档编号:61255036 上传时间:2022-11-20 格式:DOCX 页数:27 大小:402.44KB
返回 下载 相关 举报
C语言课程设计报告范文.docx_第1页
第1页 / 共27页
C语言课程设计报告范文.docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《C语言课程设计报告范文.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告范文.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、优质文本目 录1课程设计目的与意义11.1目的与意义12 总体功能设计12.1 分析题意12.2 功能分配13 系统存储结构说明13.1 系统存储信息说明13.2 系统存储结构设计13.3 系统文件使用说明14系统功能分析24.1系统功能概述24.2系统模块25系统功能实现及代码描述35.1输入职工信息35.2输出职工信息35.3 职工工资排序35.4 删除职工信息45.5 修改职工信息55.6 增加职工人员55.7查询单个员工65.8寻找工资相同的员工66系统测试76.1输入模块76.2输出模块76.3职工排序86.4删除职工信息86.5修改职工信息86.6增加职工的人数96.7修改初始密码

2、96.8查询单个职工106.9寻找工资相同的职工107体会12参考文献12附录13优质文本1课程设计目的与意义1.1目的与意义随着社会的开展,越来越多的信息使人们在查找,修改,删除,增加信息变得额外困难,此时设计相关的系统就变得非常的重要,能使人们快速的解决问题。应选择职工管理系统,使管理者对职工的信息能够快速查看。2 总体功能设计2.1 分析题意院职工工资管理系统包含职工的全部信息。每个职工信息是一条记录,包括编号、姓名、性别、出生年月、年龄、婚姻状况、家庭住址、工资级别等情况。每个人的信息都存储在结构体数组中。2.2 功能分配系统以菜单的形式运行,职工的信息用文件保存,计算职工工资总额和平

3、均工资,且能对工资上下排序,从文件中找出工资相同的职工。3 系统存储结构说明3.1 系统存储信息说明院职工信息是一条记录,包括编号、姓名、性别、出生年月、年龄、婚姻状况、家庭住址、工资级别等情况。除了年龄,工资是整型,其他的信息名都定义为字符数组。3.2 系统存储结构设计为了方便使用,定义了一个结构体。将编号,姓名,性别,出生年月,婚姻状况以及家庭住址定义为字符串,年龄,工资定义为整型变量。其定义如下struct worker char num10;char name20;char sex5;char day20;char marry10;char address20;int money;in

4、t age; ;同时为了系统运算,定义一个结构体数组structworker pN;以及一个全局变量整型m去计算实际输入的职工人数。3.3 系统文件使用说明为了保存和使用在程序中输入的信息,故使用read()和write()两个函数来完成此功能,其代码如下:void read()system(cls);inti;FILE *fp;if(fp=fopen(职工工资管理,rb+)=NULL)printf(tt文件不存在!n);exit(0);i=0;while(!feof(fp)fread(&pi,sizeof(struct worker),1,fp);i+;m=i-1;fclose(fp);vo

5、id write()FILE *fp;inti;if(fp=fopen(职工工资管理,wb+)=NULL)printf(翻开文件不存在!);exit(0);i=0;while(im)fwrite(&pi,sizeof(struct worker),1,fp);i+;fclose(fp);4系统功能分析4.1系统功能概述以菜单形式运行,职工信息输入功能,职工信息输出功能,职工工资排序功能,修改职工信息功能,删除职工信息功能,修改密码功能。4.2系统模块第一个模块是输入模块,用户输入职工的根本信息,如假设输错可在修改模块里修改信息。第二个模块是输出模块,将用户输入的职工全部显示出来。第三个模块是查

6、询单个员工信息,输入员工的姓名便可找到。第四个模块是修改初始密码。第五个模块是输入职工姓名便可以删除此员工的信息。第六个模块是修改职工信息,输入正确选项可修改职工信息。第七个模块是增加员工,输入增加员工数量便可以输入信息。第八个模块是寻找相同工资的员工,输入工资便可得到与之相同工资的人。图4-1 系统功能模块图5系统功能实现及代码描述5.1输入职工信息首先定义一个整型变量i=0作为下标,根据提示输入实际人数n后,然后输入一条职工信息;输入完一条职工信息,判断i的大小。如果i小于实际输入人数n,那么i的值加1,将继续循环输入职工信息,同时全局变量m也随之增加。如假设i大于n,那么循环条件不成立,

7、那么输入结束,保存职工信息。图5-1输入职工信息5.2输出职工信息首先定义一个整型变量i=0做为下标,然后判断i是否小于实际输入人数,如果i小于m成立,那么输出职工信息,i增加,然后继续循环判断i是否小于n。如果i小于m不成立那么输出结束。图5-2输出职工信息5.3 职工工资排序首先定义两个整型变量i=0,j=1;j表示比拟的趟数,而i那么是数组元素的下标。在运行程序中,首先判断j是否小于实际输入人数m ,如果成立,那么继续判断i是否小于实际人数m减去j 的值,如果成立,那么判断pi.money=pi+1.money是否成立,如果成立那么交换以i为下标的姓名以及工资。如果不成立,那么i增加,继

8、续判断i是否小于m-j,如果不成立,那么j增加,判断j是否小于m,如果不成立,那么定义i为0,判断i是否小于实际人数m,成立,那么输出职工姓名以及工资。不成立,那么排序结束。图5-3职工工资排序5.4 删除职工信息首先定义三个整型变量i=0,b=0作为找到这一职工的记号,t作为找到该职工的下标,字符串 x20。然后输入要删除职工的姓名,判断i是否小于全局变量m,如果成立,那么判断strcmp(x,pi.name)=0是否成立,如果成立那么t=i;b=1;然后判断i小于m是否成立,如果不成立,那么判断b是否等于1,成立,那么没有此员工;不成立那么将以t+1为下标的职工信息复制给为以t为下标的职工

9、。删除职工成功。图5-4删除职工信息5.5 修改职工信息首先定义两个整型变量i=0,t,字符数组 x20。i为数组下标,t为修改成立的记号。输入要修改职工的姓名,然后判断i是否小于全局变量m,如果成立,那么判断strcmp(x,pi.name)=0是否成立,如果成立,t=1,输出员工信息,然后修改。如果不成立那么i增加,继续循环判断i是否小于m,如果不成立,那么判断t是否等于1,如果成立,那么没有该职工的姓名。如果不成立,那么信息修改成功。图5-5修改职工信息5.6 增加职工人员首先定义两个整型变量i=1,a为输入要增加的职工人数。然后判断i是否小于等于输入的人数,如果成立那么输入职工信息,此

10、时结构体数组的下标为m;输入结束后,然后i增加,m也增加。然后继续循环判断i是否小于输入人数a,不成立那么增加信息成功。图5-6增加职工人员5.7查询单个员工首先定义两个整型变量a,i=0;a为选择时的输入,i为数组的下标。然后选择1 姓名查找 2 编号查找。如果选择1,那么输入职工姓名,然后判断i是否小于全局变量m,如果成立,那么strcmp(x,pi.name)=0是否成立,如果成立那么输出员工信息,如果不成立,i增加,然后循环判断i是否小于m,如果不成立,那么输出没有此姓名的职员。如果选择2,那么输入职工编号,然后判断i是否小于全局变量m,如果成立,那么strcmp(x,pi.num)=

11、0是否成立,如果成立,那么输出职工信息,如果不成立,i增加,然后循环判断i是否小于m,如果不成立,那么输出没有此编号的职员。图5-9查询单个员工5.8寻找工资相同的员工首先定义两个整型变量i=0,a;输入想查找的工资,然后判断i小于m是否成立,如果成立,那么判断x=pi.money是否成立,如果成立,那么输出员工姓名以及工资,t=1;如果不成立,i增加,然后判断i小于m是否成立,如果不成立,那么判断t是否等于1,如果成立,那么输出没有员工的工资与之相同。图5-9寻找工资相同的员工6系统测试6.1输入模块在菜单界面选择1时,系统会要求输入实际输入人数。在输入完后,会进入输入模块版面,按输出的提示

12、输入职工的信息。输出界面如下:图6-1输入模块6.2输出模块在菜单界面选择2时,程序会将所有的职工信息输出来,包括职工工资,以及平均工资。输出界面如下:图6-2输出模块6.3职工排序在菜单界面选择8时,系统会输出员工工资排序然后换行,按行从大到小的输出职工姓名和工资。输出界面如下。图6-3职工排序6.4删除职工信息在菜单界面选择5时,系统会要求是按什么方式删除。如假设按姓名,那么系统会寻找与之匹配的员工姓名然后进行删除,如假设没有那么会提示没有该员工。如假设按编号,那么系统会寻找与之匹配的员工编号然后进行删除,如假设没有那么会提示没有该员工。运行界面如下:图6-4删除职工信息6.5修改职工信息

13、在菜单界面选择6,然后输入要修改员工的姓名,系统会寻找与之匹配的职工姓名,如假设有那么会输出该职工的信息,然后输入要修改的序号。如假设没有,那么会输出没有该职工。运行界面如下:图6-5修改职工信息6.6增加职工的人数在菜单界面选择7,系统会提示输入增加的人数。然后跟着提示输入职工的信息。运行界面如下:图6-6增加职工的人数6.7修改初始密码在菜单的页面上选择修改密码的选项然后输入新的密码,按快捷键保存,密码修改成功。图6-7修改初始密码6.8查询单个职工在菜单界面选择3,然后输入按什么方式查询,如果是1 按姓名查询,那么系统会提示请输入被查询员工的姓名,然后系统寻找与之匹配的姓名,成功那么输出

14、其信息,不成功那么输出没有该职工。如果是2 按编号查询,那么系统会提示请输入被查询员工的编号,然后系统寻找与之匹配的编号,成功那么输出其信息,不成功那么输出没有该职工。图6-8查询单个职工6.9寻找工资相同的职工在菜单页面选择9 系统会提示请输入您的工资,输入完毕后,系统会寻找工资与之相同的职工。寻找结束后输出结果。运行界面如下:图6-9寻找工资相同的职工7体会在这两个星期的课程设计中,我对C语言程序设计有了一个更加深入的认识,从刚开始的懵懂到有了比拟深入的了解,能够比拟灵活的运用它。所以我们可以在实践体验中,体会C语言的乐趣和好处。在这段时间里,我不仅学到了新的知识,同时也使我对以前学的知识

15、有了一个更深更透彻的理解。比方:能够灵活的运用双重循环冒泡法,switch语句,子函数的调用,结构体的定义、引用、使用。虽然对c语言编程还有许多不明白,但在课程设计的这段时间我真的获益匪浅。以前上c语言课,根本上没有深入理解自己所编的程序,就是仿照书本编一个程序,再运行几遍,没出现错误就过了,根本就没去理解它是如何去运行,为什么要这么写。但这次的课程设计就不一样,要对每个程序都有一个深入透彻的理解,不然在运行时就会出现系统崩溃,执行不了。C语言要求比拟严格,我们在编程的时候应该十分仔细,一个小小的错误都可能导致程序的无法编译。所以在面对这个课程时,受老师启发以及提醒,在编程时要想清楚自己有几个

16、模块要用,不要急着去写主函数,把子函数写好后再去写主函数,这样不仅缩短了编程的时间同时又提高了程序的可读性。后面用到c语言的地方还有很多,我将努力学习c语言,学好计算机。参考文献1 哈比森. C语言参考手册M.北京:机械工业出版社,2016:23-28.2 P.J.Plauger.C标准库M. 北京:人民邮电出版社,2016:41-48.3 Steve Maguire. 编程精粹M.北京:人民邮电出版社,2016:55-59.4 Peter Van Der Linden.C.专家编程M北京:人民邮电出版社,2016:61-68.5 凯尼格.C陷阱与缺陷M.北京:人民邮电出版社,2016:98-

17、114.6 Peter Prinz.语言核心技术M. 北京:机械工业出版社,2007:124-126. 7 王新,孙雷.C语言课程设计M. 北京:清华大学出版社, 2016:142-147.8 恰汗.合牧尔.计算机C语言程序设计M. 北京:中国铁道出版社,2010:34-45.9 王为青.C语言实战105列M. 北京:电子工业出版社.2003:56-57.10 谭明金.C语言程序设计实例精粹M. 北京:电子工业出版社.2002:50-52.附录:#include #include #include #define N 100struct worker char num10;char name2

18、0;char sex5;char day20;char marry10;char address20;int money;int age; char g7=000000;/默认密码struct worker pN; int m=0; /实际输入人数void input(int n)system(cls); printf(nntt*输入员工根本信息*n);int i;for(i=m;in;i+) printf(nttt请输入%d个员工的信息nn,i+1); printf(ttt请输入编号:);scanf(%s,pi.num);printf(nttt请输入姓名:);scanf(%s,pi.name

19、);printf(nttt性别:);scanf(%s,pi.sex);printf(nttt出生年月年/月/日:);scanf(%s,pi.day);printf(nttt婚姻状况未婚/已婚:);scanf(%s,pi.marry);printf(nttt家庭住址:);scanf(%s,pi.address);printf(nttt工资:);scanf(%d,&pi.money);printf(nttt年龄:);scanf(%d,&pi.age);m+;system(cls);printf(nnnttt员工信息保存成功!);void output()int i;system(cls);prin

20、tf(*员工根本信息*n);printf(编号 姓名 性别 出生年月 婚姻状况 家庭住址 工资 年龄n);printf(-n);for(i=0;im;i+)printf(%s%10s%6s%15s%10s%15s%10d%8dn,pi.num,pi.name,pi.sex,pi.day,pi.marry,pi.address,pi.money,pi.age);printf(-n);float sum=0;int d;for(d=0;dm;d+)sum=sum+pd.money;printf(职工工资总额%.2f t平均工资%.2fn,sum,sum*1.0/m);printf(*n);void

21、 line()system(cls);int i,j;int t;char b20;for(j=1;jm;j+)for(i=0;im-j;i+)if(pi.money=pi+1.money) t=pi+1.money;pi+1.money=pi.money; pi.money=t;/交换工资strcpy(b,pi.name);strcpy(pi.name,pi+1.name);strcpy(pi+1.name,b);/交换姓名printf(nnttt 员工工资的上下顺序:n);for(i=0;im;i+)printf(nntttt%s %d元 n,pi.name,pi.money);print

22、f(t n);printf(n);void research()printf(tt*查找*n);char x20;int i,a;printf(ntttt(1)姓名查找n ntttt(2)编号查找n);printf(nttt请输入您的查找方式:);scanf(%d,&a);switch(a)case 1:system(cls);printf(tt*查找*n);printf(nnnttt请输入被查询职工的姓名:);scanf(%s,x);for(i=0;im;i+)if(strcmp(x,pi.name)=0)printf(n编号 姓名 性别 出生年月 婚姻状况 家庭住址 工资 年龄nn); p

23、rintf(%s%10s%6s%15s%10s%15s%10d%8dnn,pi.num,pi.name,pi.sex,pi.day,pi.marry,pi.address,pi.money,pi.age); break;break;case 2:system(cls);printf(nntt*查找*n);printf(nnnttt请输入被查职工的编号:);scanf(%s,x);for(i=0;im;i+) if(strcmp(x,pi.num)=0)printf(n编号 姓名 性别 出生年月 婚姻状况 家庭住址 工资 年龄nn); printf(%s%10s%6s%15s%10s%15s%1

24、0d%8dnn,pi.num,pi.name,pi.sex,pi.day,pi.marry,pi.address,pi.money,pi.age);break;break;void delet()system(cls);char x20;int i,t,b,a=0;printf(tt*删除员工*n);printf(nttt(1)姓名查找后删除n nttt(2)编号查找后删除n);printf(nttt请输入您的删除方式:);scanf(%d,&a);switch(a)case 1:system(cls); printf(nntt*删除员工*n); printf(nnntt请输入删除员工的姓名:

25、); scanf(%s,x); for(i=0;im;i+) if(strcmp(x,pi.name)=0) t=i; b=1; break; break; case 2:system(cls); printf(nntt*删除员工*n); printf(nnntt请输入删除员工的编号:);scanf(%s,x); for(i=0;im;i+) if(strcmp(x,pi.num)=0) t=i; b=1; break; break; if(b!=1)printf(tt抱歉,没有您想删除的员工!n);elsefor(;tm;t+)strcpy(pt.num,pt+1.num);strcpy(p

26、t.address,pt+1.address);strcpy(pt.day,pt+1.day);strcpy(pt.marry,pt+1.marry);strcpy(pt.name,pt+1.name);strcpy(pt.sex,pt+1.sex);pt.money=pt+1.money;pt.age=pt+1.age;printf(nntt删 除 成 功!n);m-;void edit()system(cls);char x20;int i,t,b,a,ch;printf(nntt*修改职工信息*n); printf(nttt(1)姓名查找后修改n nttt(2)编号查找后修改n);pri

27、ntf(nttt请输入您的查找方式:);scanf(%d,&a); switch(a) case 1:system(cls); printf(nntt*修改职工信息*n); printf(nnttt请输入被修改员工的姓名:);scanf(%s,x); for(i=0;im;i+) if(strcmp(x,pi.name)=0) t=i; b=1; break; break; case 2:system(cls); printf(nntt*修改职工信息*n); printf(nnttt请输入被修改员工的编号:); scanf(%s,x); for(i=0;im;i+) if(strcmp(x,p

28、i.num)=0) t=i; b=1; break; break; if(b!=1)printf(nnttt抱歉,没有该员工!n);elseprintf(nttt(1)编号 %snn,pt.num);printf(ttt(2)性别 %snn,pt.sex);printf(ttt(3)出生年月 %snn,pt.day);printf(ttt(4)婚姻状况 %snn,pt.marry);printf(ttt(5)家庭住址 %snn,pt.address);printf(ttt(6)工资 %dnn,pt.money);printf(ttt(7)年龄 %dnn,pt.age);printf(ttt请输

29、入修改的序号:);scanf(%d,&ch);system(cls);printf(tt* 请输入修改的信息*n);switch(ch) case 1:printf(nttt编号:);scanf(%s,pt.num);break; case 2:printf(nttt性别:);scanf(%s,pt.sex);break; case 3:printf(nttt出生年月:);scanf(%s,pt.day);break; case 4:printf(nttt婚姻状况:);scanf(%s,pt.marry);break; case 5:printf(nttt家庭住址:);scanf(%s,pt.

30、address);break; case 6: printf(nttt工资:);scanf(%d,&pt.money);break; case 7: printf(nttt年龄:);scanf(%d,&pt.age);break; printf(nnttt修 改 成 功!n);void search()system(cls);printf(nttt*寻找*n);int x;printf(nnttt请输入您的工资:);scanf(%d,&x);printf(nnttt与您工资相同的有:);int i,t=0;for(i=0;im;i+)if(x=pi.money)printf(%s ,pi.na

31、me);t=1;if(t!=1)printf( 没有员工与您工资相同n);elseprintf(n);void add()int a,i=1;system(cls);printf(nntt*增加员工信息*n);printf(nntt您想增加几位员工的信息:);scanf(%d,&a);while(i=a)system(cls);printf(nttt请输入第%d位员工的信息nn,i);printf(ttt员工编号:);scanf(%s,pm.num);printf(nttt姓名:);scanf(%s,pm.name);printf(nttt性别:);scanf(%s,pm.sex);print

32、f(nttt出生年月(year/month/day):);scanf(%s,pm.day);printf(nttt婚姻状况:);scanf(%s,pm.marry);printf(nttt家庭住址:);scanf(%s,pm.address);printf(nttt工资:);scanf(%d,&pm.money);printf(nttt年龄:);scanf(%d,&pm.age);m=m+1;i+;printf(nntt增 加 员 工 信 息 成 功!n);int menu()system(cls);int x;printf(nt 职工工资管理系统nn);printf( t (1)输入员工信息

33、 (2)显示员工信息ttnn);printf( t (3)查询单个职工 (4)修改密码tnn);printf( t (5)删除员工信息 (6)修改员工信息ttnn);printf( t (7)增加员工信息 (8)查看工资排序ttnn);printf( t (0)退出系统 (9)寻找相同工资的员工ttttn);printf(tnn);printf(tt请输入您的选择(0-8):);scanf(%d,&x);if(x=0) return x;else printf(tt请重新输入选择!n); system(pause);getchar();menu();void write()FILE *fp;i

34、nt i;if(fp=fopen(职工工资管理,wb+)=NULL)printf(翻开文件不存在!);exit(0);i=0;while(im)fwrite(&pi,sizeof(struct worker),1,fp);i+;fclose(fp);void read()system(cls);int i;FILE *fp;if(fp=fopen(职工工资管理,rb+)=NULL)printf(tt文件不存在!n);exit(0);i=0;while(!feof(fp)fread(&pi,sizeof(struct worker),1,fp);i+;m=i-1;fclose(fp);void

35、editcode()system(cls);printf(tt*修改密码*nn); FILE *fp=NULL; char pas6; printf(tt请输入新密码六位:); scanf(%6s,pas); fp=fopen(pass.txt,wb); fwrite(&pas,sizeof(pas),1,fp);fclose(fp); printf(ntt设置新密码成功!n); void main()FILE *pf; int a=0,d,x,e=1;char h6;if (pf=fopen(pass.txt,rb) fread(&g,sizeof(g),6,pf); fclose(pf); dosystem(cls);printf(nnnnnnttt 职工工资管理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁