东莞理工学院C语言课程设计.docx
- 文档编号:5174312
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:26
- 大小:1.38MB
东莞理工学院C语言课程设计.docx
《东莞理工学院C语言课程设计.docx》由会员分享,可在线阅读,更多相关《东莞理工学院C语言课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
东莞理工学院C语言课程设计
東莞理工學院
C语言程序设计
课程设计报告书
院系名称机械工程学院
专业班级2013级机械设计制造及其自动化1班
组长
成员
指导教师陈雪芳
完成时间2014年6月1日
目录
1、系统功能及任务描述………………………..
1.1系统总体功能描述………………………….
1.2主要任务描述……………………
2.系统的实现(函数调用关系)……………………………
3、系统的测试……………………………
4、总结………………………………
4.1自我评价及收获……………………
4.2有待解决的问题及进一步完善的思路……
5、参考文献………………………….
6、附录
企业职工信息管理系统
1系统的功能及任务描述
1.1系统总体功能描述
1.问题描述
输入N个职工信息,通过该系统能实现对职工信息新增、修改、删除、查询,工资计算等功能。
2.功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
工号、姓名、部门、职位、月薪、年龄、性别。
(2)本系统显示这样的菜单:
请选择系统功能项:
a新增职工基本信息
b显示职工基本信息
c职工信息与统计
(1)按姓名查询
(2)统计并输出高于平均月薪的职工信息
(3)统计并输出低于平均月薪的职工信息
(4)统计并输出高于平均年龄的职工信息
(5)统计并输出低于平均年龄的职工信息
(6)统计并输出高于平均月薪且低于30岁的职工信息
d修改职工基本信息(输入工号并修改相应职工信息)
e保存职工信息
f.退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将职工信息保存到文件中。
(5)进入系统之前要先输入密码。
1.2主要任务描述
我们选的这个题目一共用了9个函数,包括主函数、菜单函数、初始化函数、密码验证函数、创建函数、显示函数、统计与查找函数、修改函数、保存至文件函数;7个功能模块:
验证密码、菜单、添加、显示、统计与查询、修改、保存模块。
将职工信息定义为一个worker类,在类中包含私有数据成员intnum;charname[10];charsex[4];intage;charbumen[10];charoffice[10];doublewage;分别表示学号、姓名、性别、年龄、部门、职位、月薪。
公有成员函数包括newj(),display(),update(),research(),save(),分别用来实现对学生信息的数据新建、显示数据、修改数据、查询数据、保存数据功能。
然后定义了一个show()菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。
主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数。
我们充分利用了本学期所学的if-else语句,for语句、while语句等循环结构(包括嵌套循环),switch语句等多分支结构,函数的巧妙运用,数组,指针,结构的配合使用也使我们的程序更加合理简洁,局部变量和全局变量的合理使用也使多个函数模块串联起来构成互通的程序系统,最后运用文件保存数据,完成整个系统的设计。
任务的分配(已按工作量排名);
组长:
陆世坤:
主要负责分配任务,主函数、初始化函数、密码验证函数、统计与查找函数、修改函数、共同商议修改程序错误、运行程序判断是否是期望结果、文档制作、函数调用关系编辑。
唐明华:
菜单函数、保存函数、共同商议修改程序错误、运行程序判断是否是期望结果、截图。
黄庆锋:
显示函数、打字员、共同商议修改程序错误。
郑振荣:
新增函数、共同商议修改程序错误。
2系统的实现
2.1系统的函数调用关系
查询与统计函数
修改函数
3.系统测试结果
密码错误:
密码正确显示菜单
选择1进行新增职工信息
2职工信息显示功能
3查询与统计功能菜单
查询与统计功能操作
4修改职工信息功能菜单
修改职工信息功能操作
5保存6退出系统
分析:
总体效果还可以,程序运行基本上正确,主要功能基本上正确,界面良好。
4总结
4.1自我评价
C语言的课程设计,一个很有意思的课题,在完成这个课题的过程中,我们合力确立目标、做出设计大纲、着手去做,然后发现问题,分析问题再解决问题,我们都尽自己最大的努力去完成这个课题,去完善这个课题,使它尽可能变得完美。
在完成这个课题的过程中,它让我们明白了同学之间相互帮忙、相互合作的乐趣和重要性;它让我们懂得在着手某件事之前先做一个详细计划的好处和重要性;它让我们体会到了将自己所学的东西应用到生活中的乐趣。
特别是当我们每个人的成果合并在一起形成一个可以完美运行得程序后,那种感觉对心灵的冲击简直是一种无法言喻快感!
在完成了课程设计以后,我们对C语言的理解更深了,很多的知识点都得到了巩固,以前的一些不是很懂的知识点也有了更深的理解。
期中主要对数组与指针,文件等方面的知识收获最多。
做完一个完整的程序设计后,我们对程序的整体性有了一个明确的认识,懂得了如何进行团队的合作,提高效率。
我们也还有很多需要注意的地方,我们部分人也发现自己的动手能力不是很强,明白了要多上机操作,为以后的工作打下基础。
多些进行一些团队性的活动,培养团队的精神。
合理分配时间,将大纲划写出来,做到心中有数,朝着某个目标进发。
4.2本问题解决方法及程序实现小结
我们的程序功能上还不是很完善,作为一个完整的信息管理系统,应该具备随时打开文件的功能,但由于时间的原因,我们并没有将打开文件的功能涵盖到每一个功能函数中,下次我们会注意的,在这个程序中,我们用了字符操作函数
这个字符操作函数是从其它的程序中发现并加以应用,我们加上这个函数后,从而使我们的程序更加工整,明了。
明显减少干扰。
在这个课程设计中,我们都学会了很多东西.
尚未解决的问题及下一步工作思路
程序中没有随时读取文件数据并查询修改的功能。
希望下次我们更加努力,做出一个更完整的程序。
5参考文献
【1】何钦铭颜晖主编《C语言程序设计》高等教育出版社
【2】肖捷陈雪芳主编《C/C++语言程序设计实训教程与水平考试指导》
东莞理工学院
附录:
程序实现代码
/*头文件(.h)*/
#include
#include
#include
#include
#include
#definemaxsize100
structworker
{/*定义数据结构*/
intnum;/*工号*/
charname[10];/*姓名*/
charbumen[10];/*部门*/
charsex[4];/*性别*/
charoffice[10];/*职位*/
intage;/*年龄*/
doublewage;/*月薪*/
};
/*以下是函数声明*/
voidnewj(structworkers[maxsize]);/*新建职工基本信息函数*/
voiddisplay(structworker*p);//显示职工基本信息函数
voidyanzheng();//密码验证
voidshow();//菜单
voidinitstu(structworker*p,intmax);//初始化
voidsearch(structworker*p);//查询与统计
voidupdate(structworkerp[]);//修改
voidsave(structworker*p);//保存到文件
/********************************************************************************************/
voidmain()
{
intchoice;//定义选择变量choice
structworkers[maxsize];//定义结构数组s
printf("请输入密码\n");
yanzheng();//调用密码验证函数,输入密码正确方可进入系统
initstu(s,maxsize);//初始化,以方便循环判断
while
(1)
{
show();//进入系统,调用主菜单显示函数,显示系统功能
scanf("%d",&choice);//输入选择
switch(choice)
{
case1:
newj(s);break;//用户选择菜单1:
添加职工信息
case2:
display(s);break;//用户选择菜单2:
显示职工信息
case3:
search(s);break;//用户选择菜单3:
查询与统计职工信息
case4:
update(s);break;//用户选择菜单4:
修改职工信息
case5:
save(s);break;//用户选择菜单5:
保存职工信息
case6:
default:
exit(0);//用户选择菜单6:
退出程序
}
printf("本次操作完毕,请继续选择操作\n");
printf("\n");
}
}
/********************************************************************************************/
voidyanzheng()//密码验证函数,设计:
陆世坤;打字:
黄庆锋。
{
inti;//定义循环变量i
charshuru[9],mima[9]={"12345678"};//定义密码输入存储数组shuru[9],预设置密码mima[9]。
while
(1)
{//永久循环直至密码正确break。
printf("\n密码:
\t");
for(i=0;i<9;i++)
{
scanf("%c",&shuru[i]);
printf("*");//输入密码,并显示为"*"。
if(shuru[i]=='\n')
{
shuru[i]='\0';break;//判断是否输入完毕,是则将结束符'\0'存入数组。
}
}
if(!
strcmp(mima,shuru))
{//判断密码是否正确,是则执行break,验证结束,进入程序。
printf("\n您输入的密码正确\n");
break;
}
else
printf("您输入的密码错误,请重新输入!
\n");
}
}
/********************************************************************************************/
voidshow()//主菜单显示函数该段程序代码由唐明华同学编辑
{
printf("***************欢迎进入企业职工信息管理系统***************\n");
printf("设计人员:
陆世坤.唐明华.黄庆锋.郑振荣.\n");
printf("\n");
printf("\n");
printf("***************1.新增4.修改********************\n");
printf("\n");
printf("***************2.显示5.保存********************\n");
printf("\n");
printf("***************3.查询与统计6.退出********************\n");
printf("\n");
printf("请选择您所要进行的操作(1-6)*输入错误退出程序*:
\n");
}
/********************************************************************************************/
voidinitstu(structworker*p,intmax)//初始化结构数组使得未输入的结构成员月薪wage是一个负数,为后面的函数条件判断作准备
{
inti;
for(i=0;i { p->wage=-1;//将所有结构成员月薪赋值为-1 p++; } } /********************************************************************************************/ voidnewj(structworkers[maxsize])//新建职工信息该段程序代码由郑振荣同学编辑 { inti,number;//i循环变量,number信息数 system("cls");//清屏 printf("***************欢迎使用企业职工信息新增功能***************\n"); printf("\n"); printf("请输入本次需新增的职工信息数\n"); scanf("%d",&number); if(number>maxsize) printf("对不起,您输入的人数超最大限定值%d\n",maxsize);//输入信息数不能超过预设最大值 //----依次录入相应个数的职工信息---- for(i=0;i { printf("请输入第%d个职工工号: \t",i+1);//输入工号 scanf("%d",&s[i].num); printf("姓名: \t");//输入姓名 scanf("%s",s[i].name); printf("性别: \t");//输入性别 scanf("%s",s[i].sex); printf("年龄: \t");//输入年龄 scanf("%d",&s[i].age); printf("部门: \t");//输入部门 scanf("%s",s[i].bumen); printf("职位: \t");//输入职位 scanf("%s",s[i].office); printf("月薪: \t");//输入月薪 scanf("%lf",&s[i].wage); } printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); } /********************************************************************************************/ voiddisplay(structworker*p)//显示所有职工信息该段程序代码由黄庆锋同学编辑 { system("cls");//清屏 printf("***************欢迎使用企业职工信息显示功能***************\n"); printf("\n"); printf("您输入的职工信息如下\n"); printf("\n"); printf("********************企业职工信息库*******************\n"); printf("\n"); printf("工号姓名性别年龄部门职位月薪\n"); printf("\n"); while(p->wage>=0) {//当结构成员wage大于等于0时执行循环 printf("%d%s%s%d%s%s%.2lf\n",p->num,p->name,p->sex,p->age,p->bumen,p->office,p->wage); p++; } printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); } /********************************************************************************************/ voidsearch(structworker*p)//按条件查询函数该段程序代码由陆世坤同学编辑 { inti,w=-1,count=0,ch;//i循环变量,w判断是否找到需要的信息,count统计找到的信息数,ch选择序号 doubleaverwage,average,countwage=0,countage=0;//averwage平均月薪,average职工平均年龄,countwage所有职工月薪和,countage所有职工年龄和; structworkerq1; structworker*q=&q1;//定义查询结构指针q system("cls");//清屏 printf("7.按姓名查找8.统计并输出高于平均月薪的职工信息"); printf("\n"); printf("9.统计并输出低于平均月薪的职工信息10.统计并输出高于平均年龄的职工信息"); printf("\n"); printf("11.统计并输出低于平均年龄的职工信息12.统计并输出高于平均月薪且低于30岁的职工信息"); printf("\n"); printf("0.退出查询\n"); printf("\n"); printf("请输入要进行的操作序号: \n"); printf("\n");i=0; while(p[i].wage>=0) {//当结构成员wage大于等于0时执行循环 countwage+=p[i].wage;//统计月薪和 countage+=p[i].age;//统计年龄和 i++; } averwage=countwage/i;//计算平均月薪 average=countage/i;//计算平均年龄 /********************************************************************************************/ while (1) { scanf("%d",&ch);//输入选择 if(ch==0)break;//退出本功能 switch(ch) { case7: printf("请输入要查询的职工姓名\n"); scanf("%s",&q->name); getchar();//读回车符 i=0; while(p[i].wage>=0){//当结构成员wage大于等于0时执行循环 if(strcmp(p[i].name,q->name)==0){w=i; //对w重新赋值,说明已找到 printf("工号: %d姓名: %s性别: %s年龄: %d部门: %s职位: %s月薪%.2lf\n", p[i].num,p[i].name,p[i].sex,p[i].age,p[i].bumen,p[i].office,p[i].wage);break;} i++; } if(w==-1)printf("对不起,没有您要的信息\n"); break; case8: i=0; while(p[i].wage>=0){//当结构成员wage大于等于0时执行循环 if(p[i].wage>averwage) { count++;//统计数目 printf("工号: %d姓名: %s性别: %s年龄: %d部门: %s职位: %s月薪%.2lf\n",p[i].num,p[i].name,p[i].sex,p[i].age,p[i].bumen,p[i].office,p[i].wage); } i++; } printf("以上是高于平均月薪的职工信息[共%d人]\n",count); break; case9: i=0;count=0; while(p[i].wage>=0){//当结构成员wage大于等于0时执行循环 if(p[i].wage count++;//统计数目 printf("工号: %d姓名: %s性别: %s年龄: %d部门: %s职位: %s月薪%.2lf\n",p[i].num,p[i].name,p[i].sex,p[i].age,p[i].bumen,p[i].office,p[i].wage); } i++; } printf("以上是低于平均月薪的职工信息[共%d人]\n",count); break; case10: i=0;count=0; while(p[i].wage>=0){//当结构成员wage大于等于0时执行循环 if(p[i].age>average){ count++;//统计数目 printf("工号: %d姓名: %s性别: %s年龄: %d部门: %s职位: %s月薪%.2lf\n",p[i].num,p[i].name,p[i].sex,p[i].age,p[i].bumen,p[i].office,p[i].wage); } i++; } printf("以上是高于平均年龄的职工信息[共%d人]\n",count); break; case11: i=0;count=0; while(p[i].wage>=0){//当结构成员wage大于等于0时执行循环 if(p[i].age count++;//统计数目 printf("工号: %d姓名: %s性别: %s年龄: %d部门: %s职位: %s月薪%.2lf\n",p[i].num,p[i].name,p[i].s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东莞 理工学院 语言 课程设计