C语言课程设计报告模板.pdf
1 中国地质大学(武汉)课程设计报告题目 c语言程序设计姓名学号专业统计学所 在 院 系经济管理学院指 导 老 师江俊君日期 2016/6/11 2 目 录目 录.错误!未定义书签。1课程论文题目.错误!未定义书签。2程序设计思路.错误!未定义书签。3功能模块图.错误!未定义书签。4数据结构设计.错误!未定义书签。5算法设计.错误!未定义书签。6程序代码.错误!未定义书签。7程序运行结果.错误!未定义书签。8编程中遇到的困难及解决方法.错误!未定义书签。9总结心得及良好建议.错误!未定义书签。10致谢.错误!未定义书签。3 1课程论文题目职工信息管理系统内容:要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。功能:实现简单的职工工资信息管理,职工工资的基本信息包括编号、姓名、基本工资、奖金、工资总额等1.系统以菜单方式工作。2.职工信息录入功能(职工信息用文件保存)。3.职工信息浏览功能。4.职工信息查询功能。查询方式。(1)按学历查询。(2)按工号查询。4 2程序设计思路(1)需求分析系统要以菜单方式工作,因而根据题目要求,提供键盘式选择菜单实现功能选择,职工信息采用文件保存,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、等操作;要实现职工信息的查询,则要提供查找功能(包括按学历查询和按工号查询两种查询方式);要实现职工信息的删除、修改,则要提供文件记录的删除、修改功能。(2)总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:职工信息输入模块、职工信息浏览模块、职工信息查询模块、职工信息删除与修改模块(3)数据信息建立职工信息结构体,结构体成员包括工号、姓名、性别、年龄、学历、工资、住址和电话。Struct employeechar num20;char name8;char sex10;char age10;char xueli30;char wanges10;char tel15;char addr50;emN5 3功能模块图菜录入模块浏览查询模块学 历 查询工号查询6 4.数据结构设计建立职工信息结构体,结构体成员包括工号、姓名、性别、年龄、学历、工资、住址和电话。Struct employeechar num20;入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void append()函数来实现。2.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。3.按职工号查询模块:可以按职工号来查询职工的相关信息,通过自己定义的void search_num()函数来实现。8.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。4.退出模块:退出职工信息管理系统,通过头文件中的exit(0)函数来实现。1.录入模块void append()i nt i,n;FILE*fp;fp=fopen(employee_list,wb);um);printf(请输入姓名:);scanf(%s,emi.name);getchar();printf(请输入性别(f-女 m-男):);scanf(%s,&emi.sex);printf(请输入年龄:);scanf(%s,&emi.age);printf(请输入学历:);scanf(%s,emi.xueli);printf(请输入工资:);scanf(%s,&emi.wanges);printf(请输入住址:);scanf(%s,emi.addr);printf(请输入电话:);scanf(%s,emi.tel);printf(n);save(n);7 2.浏览模块void display()i nt i;int m=load();printf(职工号 t 姓名 tt性别 tt年龄 n);printf(学历 tt工资 tt住址 tt电话 n);for(i=0;im;i+)printf(%dt,emi.num);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);printf(n);2.查询模块void search()i nt a;printf(n按职工号查询请按1n 按学历查询请按2n 返回主菜单请按3n);scanf(%d,&a);switch(a)case 1:printf(按职工号查询 n);search_num();break;case 2:printf(按学历查询 n);search_xueli();break;case 3:main();break;default:printf(您输入有误,请重新选择!n);break;(1)按工号查询void search_num()i nt num,i,t;int m=load();um)printf(n已找到此人,其记录为:n);8 printf(职工号 t姓名 tt性别 tt年龄 n);printf(学历 tt工资 tt住址 tt电话 n);printf(%dt,emi.num);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);printf(n);break;if(i=m)ueli,xueli)=0)printf(n已找到,其记录为:n);printf(职工号 t姓名 tt性别 tt年龄 n);printf(学历 tt工资 tt住址 tt电话 n);printf(%dt,emi.num);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);printf(n);i f(i=m)printf(n对不起,查无此人n);printf(n);printf(返回查询函数请按1,继续查询学历请按2n);scanf(%d,&t);switch(t)case 1:search();break;case 2:search_xueli();break;default:break;9 6程序代码#include#include 入职工信息 n);printf(2.浏览职工信息 n);printf(3.查询职工信息 n);printf(4.退出 n);printf(请按功能序号:n);scanf(%d,&n);switch(n)case 1:append();break;case 2:display();break;case 3:search();break;case 4:exit(0);n=0;break;default:printf(输入错误指令 n);printf(n按任意键继续n);getch();void append()i nt i,n;FILE*fp;fp=fopen(employee_list,wb);um);printf(请输入姓名:);scanf(%s,emi.name);getchar();printf(请输入性别(f-女 m-男):);scanf(%s,&emi.sex);printf(请输入年龄:);scanf(%s,&emi.age);printf(请输入学历:);scanf(%s,emi.xueli);printf(请输入工资:);scanf(%s,&emi.wanges);printf(请输入住址:);scanf(%s,emi.addr);printf(请输入电话:);scanf(%s,emi.tel);printf(n);10 save(n);void save(int n)um);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);printf(n);void search()i nt a;printf(n按职工号查询请按1n 按学历查询请按2n 返回主菜单请按3n);scanf(%d,&a);switch(a)case 1:printf(按职工号查询 n);search_num();break;case 2:printf(按学历查询 n);search_xueli();break;case 3:main();break;default:printf(您输入有误,请重新选择!n);break;void search_num()i nt num,i,t;int m=load();um)printf(n已找到此人,其记录为:n);printf(职工号 t姓名 tt性别 tt年龄 n);printf(学历 tt工资 tt住址 tt电话 n);printf(%dt,emi.num);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);11 printf(n);break;if(i=m)ueli,xueli)=0)printf(n已找到,其记录为:n);printf(职工号 t姓名 tt性别 tt年龄 n);printf(学历 tt工资 tt住址 tt电话 n);printf(%dt,emi.num);printf(%st,emi.name);printf(%st,emi.sex);printf(%st,emi.age);printf(%st,emi.xueli);printf(%st,emi.wanges);printf(%st,emi.addr);printf(%st,emi.tel);printf(n);i f(i=m)printf(n对不起,查无此人n);printf(n);printf(返回查询函数请按1,继续查询学历请按2n);scanf(%d,&t);switch(t)case 1:search();break;case 2:search_xueli();break;default:break;12 7程序运行结果1.运行程序菜单模块初始化,如图1.按 1 进入职工信息录入模块,输入职工信息工号007,姓名 007,性别 M,年龄 30,学历 zhongguodizhidaxue,工资 9999,住址 beiqu21d 电话 888888 如图13 2.在输入完 N个数据后,按2 进入职工信息浏览模块,看到信息3.按 3 进入职工查询模块,如图按 1 进入按职工号查询模块,输入007 查询,如图14 按 2 进入学历查询模块,输入zhongguodizhidaxue,如图按 1 返回查询函数,按4 退出,如图15 8编程中遇到的困难及解决方法这一次老师让我们从第8 题和第 21 题中选,瞄了两眼,决定选职工信息管理第8 题,没想到这么难弄,足足用了两周时间才搞定。上机好几次之后,遇到一些小问题需要解决而我又不太熟悉的就去查书、上网或者问同学。其中以查书居多。比如对于结构体和全局、局部变量,总是会出现数据没用的现象,问同学后发现把结构体放在主函数前作全局变量,就没事了。还有在数组的比较就是strcmp(a,b)中发自现只有两个 a、b 一样类型时才有用。其中有一些特别简单的问题,比如函数中没有返回值,类型就只能是空(void)的等。最重要的是对文件这个类型的认识。因为对其极其不熟悉,所以可以说我是自己自学了一遍对于文件的读写,写文件时几乎从书上照搬了过来,并且常出错,如fwrite()写进文件中括号里各项的输入,最后在上网查阅后得以找到解决方法。不过最终完成了这次编程。16 9总结心得及建议上机实习需要有一定的C 语言基础,其是学习程序设计语言必不可少的实践环节,某些东西必须通过上机才能发现,比如对知识点的掌握程度,一个不小心就会出现一串令人崩溃的error。等课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。10致谢此次课程设计的完成是在我们的课任老师江俊君老师的细心指导下进行的。老师上课教授了我们大量的知识,并且每次上课都会进行演示,以求让我们更加熟悉c 语言。此外,在每次设计遇到问题时老师不辞辛苦的讲解使得我的设计才能顺利进行。修改程序的整个过程中,花费了江老师很多的宝贵时间和精力,在此向老师表示衷心地感谢!