C程序专业课程设计大作业报告.doc
《C程序专业课程设计大作业报告.doc》由会员分享,可在线阅读,更多相关《C程序专业课程设计大作业报告.doc(21页珍藏版)》请在咨信网上搜索。
课程设计(大作业)汇报 课程名称: 程序设计基础课程设计 设计题目: 职职员作量统计系统设计 院 系: 班 级: 设 计 者: 学 号: 指导老师: 设计时间: .6.25~.6.29 课程设计(大作业)任务书 姓 名: 院(系): 专 业: 学 号: 任务起止日期:.6.25~.6.29 课程设计题目:职职员作量统计系统设计 课程设计要求: 编写有一个职职员作量统计程序,信息包含职职员号和完成产品数量。 具体功效 1.系统以菜单方法工作 2.输入职职员号和完成产品数量(许可同一职员有数次输入)并以磁盘文件保留; 3.对每个职员完成产品数量实现累计。 4.按完成数量对职员排序,并确定她们名次。按完成产品数量由多到少次序,输出名次、同一名次职员人数及她们工号(工号由小到大次序输出)。 5.查询职员完成产品信息。 (1)按职员号查询 2)按名次查询 工作计划及安排: 因为我们设计题目是:职职员作量统计系统设计所以我们对我们课程有以下安排: 6月25日早晨:我们先分析了我们课程需要要求,对题目所要求作出一个安排,对设计所要求做出一个全方面计划,选定我们所要用数据和函数,在计算机上操作先写出我们所需要头文件,然后在写出我们菜单方法格式; 六月25日下午:根据我们早上所写出菜单格式开始写我们主程序: ⑴写一个函数输入职职员号和职员所完成产品数量(许可同一职员有数次输入)并写出所需要函数作用和用途; ⑵写一个函数和磁盘文件用来存放每个职员信息; 6月26日早晨:根据先前完成程序,写一个函数对完成数量职员排序,并确定她们名次。按完成产品数量由多到少次序,而且输出名次、同一名次职员人数及她们工号(工号由小到大次序输出); 6月26日早晨:根据先前完成程序写一个对职员信息查询,①按职员号查询;②按名次查询; 6月27日早晨~下午:调整程序,使程序愈加美观,优化程序。还加入了一个将数据从磁盘读出小函数,方便进行程序操作和运行。 6月28日早晨:深入了解程序,为答辩做准备。 剩下时间对程序进行修改和撰写程序试验汇报。而且经过总体设计和具体设计将程序分解开,并进行具体说明。 指导老师签字 年 月 日 课程设计(大作业)成绩 学号: 姓名: 指导老师: 课程设计题目:职职员作量统计系统设计 总结: 经过这次课程设计,我收获了很多。从以前不喜爱程序设计到现在对程序慢慢产生爱好,从不知道该怎样下手到慢慢有了思绪和框架结构,以前认为编程极难、很繁杂没有思绪,现在我知道只要构思出大致框架、写出总体设计思绪,编程就已经成功二分之一了,在编程过程中在逐步细分、数次上机调试。程序就基础完成了。 在这次设计中,我们也碰到了很多问题,比如:将数据写入磁盘,在从磁盘中取数据;将个职员完成产品总数排序得出名次,并将产品总数相同职员按工号由小到大输出;还有按职员号和名次来查询职员信息等。碰到问题时,我们优异行同组同学讨论并在书本中查找,假如还没处理,就请教其它同学。碰到问题太复杂,我们无法处理时就向老师请教。就这么一点一滴积累,一点一点修改,最终完成了课程设计。在这个过程中,有迷惑、有烦恼、也有喜悦。 对于我个人来说,在这次实训中碰到问题有: 1、对文件操作不熟悉,如用fopen函数打开数据文件,对“wb”和“rb”区分和怎样使用混淆了。经过查找资料,我知道了“wb”只以写方法从磁盘打开文件,而“rb”是以读方法从磁盘读出数据;2、将各职员产品数累加时,我用了全局变量结构体数组stu[i].count来存放职员产品数stu[i].product[j]累计后总和,不过用stu[i].count来存放时,stu[i].count没有初始化,造成输出数总是随机数;3、在写按职员号和名次查询函数时,没有用到判定语句,造成查找时总是犯错。在碰到这些问题时,即使调试了很数次还是犯错,但最终还是经过和小组组员讨论,请教老师、同学,最终把这些问题全部处理了。 这次设计使我受益匪浅,在以后学习中,我将以愈加饱满激情,愈加主动态度来面对程序设计这门课程,也要将这份激情延续到其它课程中。 指导老师评语: 成绩: 填表时间: 指导老师署名: 课程设计(大作业)汇报 目录 课程设计(大作业)汇报 - 1 - 课程设计(大作业)任务书 - 2 - 一、课程设计目标和要求 - 5 - 1.课程设计目标 - 5 - 2. 课程设计要求 - 5 - 二、总体设计 - 5 - 三、具体设计 - 6 - 1、数据结构设计 - 6 - 2.函数说明 - 6 - 3.函数设计 - 7 - 四、程序清单和实施结果 - 7 - 1.头文件 - 7 - 2.主函数源程序代码和运行结果 - 8 - 3各小函数运行结果. - 10 - 五、调试和测试 - 13 - 六、结语 - 14 - 一、课程设计目标和要求 1.课程设计目标 (1) 综合利用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单信息管理程序设计。 (2) 充足表现和体会函数在程序设计中必需性和实用性,并反应主函数main()在程序设计中实现思绪和方法。 2. 课程设计要求 编写有一个职职员作量统计程序,信息包含职职员号和完成产品数量。 具体功效: 1.系统以菜单方法工作 2.输入职职员号和完成产品数量(许可同一职员有数次输入)并以磁盘文件保留; 3.对每个职员完成产品数量实现累计。 4.按完成数量对职员排序,并确定她们名次。按完成产品数量由多到少次序,输出名次、同一名次职员人数及她们工号(工号由小到大次序输出)。 5.查询职员完成产品信息 (1)按职员号查询 (2)按名次查询 二、总体设计 对程序操作退出 对职员排名查询 对职员号查询 对职员完成产品排序 职员信息读出 职员信息保留 统计职员工作量 职员信息录入 职职员作量统计程序 依据系统要求,系统总体设计图1 三、具体设计 1、数据结构设计 #define N 100 //定义常数表示职员数 int h=0,m=0; //定义全局变量表示总职员人数 struct workstation //定义数据结构体 { int no; //职员号 int product[N]; //职员完成产品数量 int rank; //职员完成产品量排名 int count; //每个职员完成总产品量 }stu[N]; 2.函数说明 (1) 主函数 main()许可用户经过菜单进行功效选择,使用对应功效代码来调用对应函数功效。 (2) 其它各功效函数包含 函数名 功效 void menu_select() 输出程序功效菜单 void enter() 键盘输入职员数据(职员号和完成产品数) void count1() 将各职员产品数累计 void save() 将职员数据写入磁盘保留 void read1() 将职员数据从磁盘读出 void rank1() 用各职员产品总数排序而且输出名次 void search() 按职员号查询职员信息 void lookfor() 按名次查询职员信息 void over() 退出程序 3.函数设计 (1)主菜单函数menu_select() 功效:输出菜单选项 void menu_select(void) //输出程序功效主菜单,代表所选菜单项 { printf("***********************\n"); printf("**********菜单**********\n"); printf("0.输入职员信息统计\n"); printf("1.统计职职员作量\n"); printf("2.保留职员信息\n"); printf("3.读出职员信息统计\n"); printf("4.对完成产品数量排序\n"); printf("5.按职员号查询职员完成产品信息\n"); printf("6.按职员名次查询职员完成产品信息\n"); printf("7.退出程序\n"); printf("***********************\n"); printf("***********************\n"); } } 四、程序清单和实施结果 1.头文件 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 100 //定义常数表示职员数 int h=0,m=0; //定义全局变量表示总职员人数 struct workstation //定义数据结构体 { int no; //职员号 int product[N]; //职员完成产品数量 int rank; //职员完成产品量排名 int count; //每个职员完成总产品量 }stu[N]; int main () //许可用户经过菜单进行功效选择,使用对应功效代码来调用对应函数功效 char b='Y',c; void menu_select(void); // 主菜单函数 void enter(void); //输入职员信息统计 void save(void); //保留职员信息统计 void read1(void); //读出职员信息统计 void count1(void); //统计职职员作量 void rank1(void); //对完成产品数量排序 void search(void); //按职员号查询职员完成产品信息 void lookfor(void); //按职员名次查询职员完成产品信息 void over(void); //退出程序 2.主函数源程序代码和运行结果 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 100 //定义常数表示职员数 int h=0,m=0; //定义全局变量表示总职员人数 struct workstation //定义数据结构体 { int no; //职员号 int product[N]; //职员完成产品数量 int rank; //职员完成产品量排名 int count; //每个职员完成总产品量 }stu[N]; int main () //许可用户经过菜单进行功效选择,使用对应功效代码来调用对应函数功效 { char b='Y',c; void menu_select(void); // 主菜单函数 void enter(void); //输入职员信息统计 void save(void); //保留职员信息统计 void read1(void); //读出职员信息统计 void count1(void); //统计职职员作量 void rank1(void); //对完成产品数量排序 void search(void); //按职员号查询职员完成产品信息 void lookfor(void); //按职员名次查询职员完成产品信息 void over(void); //退出程序 menu_select(); for (;b!='N'&&b!='n';) { printf("输入你选项0-7:\n"); scanf("%c",&c); switch(c) { case '0':enter();break; case '1':count1();break; case '2':save();break; case '3':read1();break; case '4':rank1();break; case '5':search();break; case '6':lookfor();break; case '7':return 0; } printf("继续输入请输Y,结束输入N 或 n:"); getchar(); b=getchar(); //把printf输出字符送回for循环 getchar(); } return 0; } void menu_select(void) //输出程序功效主菜单,代表所选菜单项 { printf("***********************\n"); printf("**********菜单**********\n"); printf("0.输入职员信息统计\n"); printf("1.统计职职员作量\n"); printf("2.保留职员信息\n"); printf("3.读出职员信息统计\n"); printf("4.对完成产品数量排序\n"); printf("5.按职员号查询职员完成产品信息\n"); printf("6.按职员名次查询职员完成产品信息\n"); printf("7.退出程序\n"); printf("***********************\n"); printf("***********************\n"); } (1)主菜单运行结果: 3各小函数运行结果. (1)void count1(void) //统计职职员作量 { int i,j; for(i=0;i<h;i++) { stu[i].count=0; for(j=0;stu[i].product[j]!=-1;j++) { stu[i].count+=stu[i].product[j]; //累加每个职员产品 } } } (2)void read1(void) //读出职员信息统计 { FILE *fp; //定义指向FILE类型文件指针变量 int i; if((fp=fopen("E:\\qusi.txt","rb"))==NULL) //以读方法打开磁盘 { printf("文件错误!"); exit(0); } for(i=0;!feof(fp);i++) { if(fread(&stu[i],sizeof(struct workstation),1,fp)!=1) //把磁盘中数据读到stu[i]数组中 { return; } else { printf("%-4d%5d\n",stu[i].no,stu[i].count); //输出读入磁盘信息 } } fclose(fp); // //关闭磁盘 } (3)、void search(void) //按职员号查询职员完成产品信息 { FILE *fp; int i,j=0,n; if((fp=fopen("E:\\qusi.txt","rb"))==NULL) { printf("文件为空!"); exit(0); } for(i=0;!feof(fp);i++) { if(fread(&stu[i],sizeof(struct workstation),1,fp)!=1) { break; } m++; //统计读了多少次,多少次就代表多少个职员 } fclose(fp); printf("输入你所要查找职员号:\n"); scanf("%d",&n); //输入一个查找职员号 for(i=0;i<m;i++) { if(stu[i].no==n) //判定所输入工号 { printf("%3d%5d\n",stu[i].no,stu[i].count); j=1; } } if(j==0) { printf("查找数据不存在:\n"); } } (4) 函数void over() 功效:结束程序 void over() 五、调试和测试 所谓程序调试是对我们在写程序出现错误进行查错和排错。对此程序我们进行了以步骤: 人工检验,即静态检验。此过程我们对于写好程序进行了排查,而且在有错误地方进行了注释,还有对我们所碰到错误进行了分析而且更正。 上机调试。经过上机调试发觉错误为动态检验,这时我们发觉了我们在写程序过程中出现很多错误和警告,我们依据提醒逐一更正。 运行程序。这一步骤我们逐一检验每个菜单是否运行正常和正确,在这个过程中我们出现了很多格式和函数调用不正确,比如我们在上机调试时候我们程序就出现了很多困难,在我们菜单选项中我们选项2是“统计职职员作量”我们用结构体stu[i].count来进行累加,我们在写程序时候用结构体no代表职员号,用结构体product来代表职员所完成产品量,我们选项3是“对完成产品数量排序”在输入时候要求根据职员完成产品数量从大到小排序,不过我们在输出时候把结构体product输出来代表职员全部产品量,不过我们调试总是出现错误,职员排序总是输犯错误,以后经过我们细心查找才发觉我们输出出现错误了,我们使用结构体stu[i].count来对职员产品进行累加,所以我们输出应该用stu[i].count来输出职员产品数,经过我们修改最终找出了错误,我们在排序输出名次时候,第一名总是以第0名输出,以后经过我们查找我们才发觉我们用来统计名次数是从0开始以后我们把它改从1开始就对了,我们在对职员信息查询是也出现了点问题,不过经过我们查询和调试我们还是更正了那些出现错误和警告。 具体调试过程以下: (1)统计职职员作量 void count1(void) { int i,j; for(i=0;i<h;i++) { for(j=0;i<h;j++) { stu[i].count+=stu[i].product[j]; //累加每个职员产品 } } } 修改为: void count1(void) { int i,j; for(i=0;i<h;i++) { stu[i].count=0; for(j=0;stu[i].product[j]!=-1;j++) //在写void enter(void)时,写了一条命令“在是否继续输入职员产品数后加了一条stu[i].product[j]=-1” { stu[i].count+=stu[i].product[j]; //累加每个职员产品 } } } (2)按职员号查询时 int i,n; for(i=0;i<m;i++) //m统计有多少个职员 { if(stu[i].no==n) //判定所输入工号 printf("%3d%5d\n",stu[i].no,stu[i].count); else printf("查找数据不存在:\n"); } 修改为: int i,j=0,n; for(i=0;i<m;i++) //m统计有多少个职员 { if(stu[i].no==n) //判定所输入工号 { printf("%3d%5d\n",stu[i].no,stu[i].count); j=1; } } if(j==0) { printf("查找数据不存在:\n"); } } 总而言之,在我们对程序进行了细心调试和测试以后,我们程序正常运行了,不过其中还是有很多不足地方。比如我们在从磁盘读出数据时候就有数据遗失,不过经过我们修改以后就变得完善了,在我们对职员信息查询时候也碰到不少问题,不过我们还是依据调试不正确而加也修更正确了。 六、结语 经过这几天C程序课程设计,我们小组既发觉了很多不足,又学到了很多我们上课没有掌握只是,也学到了很多以前不懂知识。使我们对这门课程有了更深一步了解,而且也对它产生了一定爱好,对我们以后学习有了关键作用。其中,老师对我们帮助也是其到了极大作用,我们有不明白或是模糊地方就像老师请教,以后我们还将对此进行深入了解,增加我们知识,为我们以后学习打好基础,在此我们小组组员对对老师给我们帮助表示感谢!- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 专业课程 设计 作业 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文