欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C++课程设计投票程序.doc

    • 资源ID:2384449       资源大小:271KB        全文页数:16页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++课程设计投票程序.doc

    各专业全套优秀毕业论文图纸C/C+程序设计课程设计课程设计题目: 投票程序 系 别: 计算机科学与工程 专 业: 信息管理与信息系统 小组成员: XXX 设 计 者: XXX 指导教师: XXX 批语:河南城建学院2014年 12 月 25 日设计题目:投票程序1一、设计要求和分工11、设计要求12、设计目标2二、数据结构设计2数据结构设计描述2三、变量的定义和作用4四、系统各模块( 函数)的组成,功能61、 输入模块:62、 统计模块:63、 输出功能:7五、各功能模块的算法处理流程图及相关说明81、 输入模块的算法处理流程图及相关说明:82、统计模块的算法处理流程图及相关说明:82、 输出模块的算法处理流程图及相关说明:9六、程序设计过程中遇到的问题及解决过程101、 问题一及解决过程:102、 问题二及解决过程:103、 问题三及解决过程:11七、 课程设计总结或体会111、总结112、体会12附录:源程序12参考文献14设计题目:投票程序一、设计要求和分工1、设计要求要求在设计过程中,充分发挥自己的独立工作能力及创造能力,对每个问题都应进行分析、比较,并提出自己的见解,反对盲从,杜绝抄袭。在设计过程中必须做到:1.随时复习教科书、听课笔记及习题;2.做好准备工作,充分发挥自己的主观能动性和创造性,及时查阅相关资料;3.认真编程;4.按预定计划及时完成任务。2、设计目标设有代号为a,b,c的三位亚洲小姐候选人,根据投票者在选票上对他们代号的填写顺序分别记分5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选亚洲小姐。请注意:若同一张票上写有两个相同代号,或者投票者在选票上填写的代号不是a,b,c的三位亚洲小姐候选人的代号,则显示“此票无效”;对候选人按照他们的得分排序,然后比较前两名候选人得分是否相同。如果相同,则显示“重新投票”;否则显示三个候选者得分并输出“祝贺X当选冠军”,X为最高分候选者。例如:投票人数:6 输入投票内容: a b cc a bc b a c a a    该票无效!r c a    该票无效!c b a  三位候选人得分: a:  12 b:  13 c:  15  “祝贺X当选冠军”,X为最高分候选者。二、数据结构设计数据结构设计描述开始定义结构体、相关变量和常量输入投票人数和投票内容选票代号是否重复是否含有其他人NY该票无效统计相应候选人的票数并排序输出投票结果YN判断前两名总票数是否相等重新投票输出获胜者结束三、变量的定义和作用#include<stdio.h> #include<conio.h> /以上两个是包含库。struct hxr int code; int score; /定义代号、得分两个整型数据。 hxr3; /定义一个结构体存放候选人数据。main() /入口函数。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定义接收投票的变量。 struct hxr hxr3; /用hxr定义结构体数组。 printf("请输入投票总人数:n"); scanf("%d",&k); /将投票人数放入标量k。 printf("请输入投票:n"); getchar(); /拦截scanf的最后一个回车。 while(end=0) /while语句进行循环判定,if出现出现前两名并列第一时,返回while语句重新投票else输出冠军结束程序。 for(i=0;i<3;i+) hxri.code=i; hxri.score=0; /初始化结构体数组。 for(i=1;i<=k;i+) scanf("%c%c%c",&x,&y,&z); /将投票按照x,y,z的顺序输入。 getchar();/拦截回车,否则最后一个字符输入完毕按回车之后,回车的输入没有东西接收,就会变成下次循环的第一个字符scanf就会接收,那么二次循环的第一个字符就智能读到回车了,所以第一次结尾用getchar()拦截回车. if(x!=y&&x!=z&&y!=z)&&(x='a'| x='b'|x='c')&&(y='a'| y='b'|y='c')&&(z='a'| z='b'|z='c') / 只有所投票中3位候选人各出现一次且所投票必须是a,b,c以内的字母此票才有效,不符合执行if下面的prinft语句。 hxr0.score+=(x='a'?5:(y='a'?3:2); hxr1.score+=(x='b'?5:(y='b'?3:2); hxr2.score+=(x='c'?5:(y='c'?3:2); /三目运算判断三个投票人一轮投票的结果,每有人投一次就判断累加一次。 printf(" score: %d %d %dn",hxr0.score,hxr1.score,hxr2.score); / 输出投入该票后,三个人累计得分。 continue; / continue 语句的用法是跳过continue下面的语句进入下一次循环! printf("此票无效n"); for(i=0;i<3;i+) if(temp<hxri.score) temp=hxri.score; j='a'+i; / 寻找得分最高的人,最高得分保存在temp里,这个人的名字(a、b或c)保存在j里。 printf("people %c score %dn",'a'+hxri.code,hxri.score); / 输出3个人各自的得分情况。 if(hxr0.score=hxr1.score)&&hxr0.score>=hxr2.score) | ( (hxr0.score=hxr2.score)&&hxr0.score>=hxr1.score) | (hxr1.score=hxr2.score)&&hxr1.score>=hxr0.score) printf("重新投票n");/ 如果出现前两名并列第一,则打印“重新投票”。 else printf("祝贺%c当选冠军,%c为最高分候选者。n",j,j); / 否则输出得分最高者的名字。 end=1; getchar(); / 增加一个输入命令,防止程序直接退出看不到结果。四、系统各模块( 函数)的组成,功能1、 输入模块:main() /入口函数。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定义接收投票的变量。 struct hxr hxr3; /用hxr定义结构体数组。 printf("请输入投票总人数:n"); scanf("%d",&k); /将投票人数放入标量k。 printf("请输入投票:n"); getchar(); /拦截scanf的最后一个回车。 while(end=0) /while语句进行循环判定,if出现出现前两名并列第一时,返回while语句重新投票else输出冠军结束程序。 for(i=0;i<3;i+) hxri.code=i; hxri.score=0; /初始化结构体数组。 for(i=1;i<=k;i+) scanf("%c%c%c",&x,&y,&z); /将投票按照x,y,z的顺序输入。 getchar();/拦截回车,否则最后一个字符输入完毕按回车之后,回车的输入没有东西接收,就会变成下次循环的第一个字符scanf就会接收,那么二次循环的第一个字符就智能读到回车了,所以第一次结尾用getchar()拦截回车.2、 统计模块:if(x!=y&&x!=z&&y!=z)&&(x='a'|x='b'|x='c')&&(y='a'| y='b'|y='c')&&(z='a'| z='b'|z='c') / 只有所投票中3位候选人各出现一次且所投票必须是a,b,c以内的字母此票才有效,不符合执行if下面的prinft语句。 hxr0.score+=(x='a'?5:(y='a'?3:2); hxr1.score+=(x='b'?5:(y='b'?3:2); hxr2.score+=(x='c'?5:(y='c'?3:2); /三目运算判断三个投票人一轮投票的结果,每有人投一次就判断累加一次。 printf(" score: %d %d %dn",hxr0.score,hxr1.score,hxr2.score); / 输出投入该票后,三个人累计得分。 continue; / continue 语句的用法是跳过continue下面的语句进入下一次循环! printf("此票无效n"); 3、 输出功能:for(i=0;i<3;i+) if(temp<hxri.score) temp=hxri.score; j='a'+i; / 寻找得分最高的人,最高得分保存在temp里,这个人的名字(a、b或c)保存在j里。 printf("people %c score %dn",'a'+hxri.code,hxri.score); / 输出3个人各自的得分情况。 if(hxr0.score=hxr1.score)&&hxr0.score>=hxr2.score) | ( (hxr0.score=hxr2.score)&&hxr0.score>=hxr1.score) | (hxr1.score=hxr2.score)&&hxr1.score>=hxr0.score) printf("重新投票n");/ 如果出现前两名并列第一,则打印“重新投票”。 else printf("祝贺%c当选冠军,%c为最高分候选者。n",j,j); / 否则输出得分最高者的名字。 end=1; getchar(); / 增加一个输入命令,防止程序直接退出看不到结果。五、各功能模块的算法处理流程图及相关说明1、 输入模块的算法处理流程图及相关说明:开始定义结构体、相关变量和常量输入投票人数和投票内容图一,输入模块流程图说明:首先定义输入相关的变量、常量和结构体,char x,y,z;为接收投票的变量,struct hxr hxr3;hxr为定义的结构体数组;输入投票人数和投票内容,投票人数标量为:k。2、统计模块的算法处理流程图及相关说明:开始选票代号是否重复是否含有其他人NY该票无效统计相应候选人的票数并排序图二,统计模块流程图说明:if(x!=y&&x!=z&&y!=z)&&(x='a'|x='b'|x='c')&&(y='a'|y='b'|y='c')&&(z='a'| z='b'|z='c') / 判断所投票中3位候选人是否各出现一次且所投票是a,b,c以内的字母,若不符合合执行if下面的prinft语句,若是,通过hxri.score+累加执行三目运算统计三个投票人投票的结果。2、 输出模块的算法处理流程图及相关说明:开始YN判断前两名总票数是否相等重新投票输出获胜者结束图三,输出模块流程图说明:首先通过temp=hxri.score; j='a'+i;将得分最高的人,最高得分保存在temp里,并将这个人的名字(a、b或c)保存在j里。然后用printf("people %c score %dn",'a'+hxri.code,hxri.score);输出3个人各自的得分情况;最后判定前两名的分数是否相等,若相等输出重新投票,否则输出“祝贺x当选冠军,x为最高分候选者。”并结束程序。六、程序设计过程中遇到的问题及解决过程1、 问题一及解决过程: 问题一:hxri.code和hxri.score未进行初始化,导致程序出错。解决过程:通过仔细检查,发现问题并对结构体数组 hxri.code=i; hxri.score=0; 进行初始化。2、 问题二及解决过程: 问题二:使用if(x!=y&&x!=z&&y!=z)进行判定时,只对所投票中3位候选人各出现一次进行了判定,但是若输入的选票不在a,b,c三位候选人以内则无法判定为废票。解决过程:通过在原来的基础上增加限定条件进行改善,出现的问题得到了解决;修改后的代码如下: if(x!=y&&x!=z&&y!=z)&&(x='a'|x='b'|x='c')&&(y='a'|y='b'|y='c')&&(z='a'| z='b'|z='c')3、 问题三及解决过程:问题三:三位候选人的分数如果用ifelse语句进行判断的话代码会很繁琐,而且不易进行累加积分,所以很难计算三位候选人的分数。解决过程:通过查阅书籍,询问同学发现三目运算能起到与ifelse语句相的效果而且更为简洁明了,代码如下:hxr0.score+=(x='a'?5:(y='a'?3:2); hxr1.score+=(x='b'?5:(y='b'?3:2);hxr2.score+=(x='c'?5:(y='c'?3:2);七、 课程设计总结或体会1、总结刚开始听说课程设计的时候有些不知所措,然后了解到课程设计就是对我们前一段学习的的考察和总结,总之觉得还是升华了很多。在选定题目的时候思索了很久,不知道该选哪个题目好?其实每个题目都是有各自的难点的,最后经过思考选择了投票程序,一开始觉得这个题目应该会很简单,但是随着深入了解才发现其实挺困难的。然后就有些迷茫与失落,想放弃但是还是坚持下来了。刚开始的时候一直摸不着头脑,不知从哪里写起,如何引用函数,如何定义常量、变量和数组,用什么语句,怎样进行嵌套,如何构造判断条件等等。所以就从一无所知开始了,然后就一点点的开始编写,刚开始编写的很像伪代码,越往后写完问题越多,头疼了许久后再鼓起勇气,终于在经过两天的努力下总体框架已经写好,虽然还是有诸多的问题,但是一点点的改进总能做好。但是真正的问题才刚刚开始,因为我只是停留在编写代码解决眼前的问题上,没有把思维放在问题后更深的实质和更多的情况上,虽说是摸着石头过河,但是我坚信清晰的思路和严密的逻辑会带来正确的判断和结果。在代码完成总体完成后的昨天我发现这段代码并没有符合我的要求,我的要求是代码要简洁、有效而不是繁多、冗杂,代码不能有任何的语义冲突也不能有一点点的疏忽。这些都是靠不断地提高要求和不断地检验才能达成的。就在今天12月25日,这个代码我又改了五次,有很多人说其实凑合就行了,也有很多人说太简短了(在他们看来简短的代码就是简单的代码),还有人让我换一种方法,但是我知道我一点开始了就停不下来,我坚信我能够通过自己的努力把它改成很合理的代码,虽然我也担心自己做不到,但是我的灵魂已经被他深深地吸引了,从我见到她的那刻起。2、体会我知道没有哪个人是完美的,但是我会努力做到最好,我就是这样一个人,不管多苦都会笑和坚持;我知道自己知识不够,但是我会问别人不过他知道多少,也不过他怎么说我,我会查任何一个我不懂得代码、函数、语句,一次次直到一个个弄明白,因为我就是这样一个人,尽管此时浑身疼痛,但是我还是在这里坐着坚持,因为这就是我不管多苦只会笑和坚持!、通过此次的课程设计我学到了很多,比如非格式输入的作用,三目运算,以及复杂的关系判断等等。我很有收获,我的付出都是值得的。附录:源程序#include<stdio.h> #include<conio.h> /以上两个是包含库。struct hxr int code; int score; /定义代号、得分两个整型数据。 hxr3; /定义一个结构体存放候选人数据。main() /入口函数。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定义接收投票的变量。 struct hxr hxr3; /用hxr定义结构体数组。 printf("请输入投票总人数:n"); scanf("%d",&k); /将投票人数放入标量k。 printf("请输入投票:n"); getchar(); /拦截scanf的最后一个回车。 while(end=0) /while语句进行循环判定,if出现出现前两名并列第一时,返回while语句重新投票else输出冠军结束程序。 for(i=0;i<3;i+) hxri.code=i; hxri.score=0; /初始化结构体数组。 for(i=1;i<=k;i+) scanf("%c%c%c",&x,&y,&z); /将投票按照x,y,z的顺序输入。 getchar();/拦截回车,否则最后一个字符输入完毕按回车之后,回车的输入没有东西接收,就会变成下次循环的第一个字符scanf就会接收,那么二次循环的第一个字符就智能读到回车了,所以第一次结尾用getchar()拦截回车. if(x!=y&&x!=z&&y!=z)&&(x='a'| x='b'|x='c')&&(y='a'| y='b'|y='c')&&(z='a'| z='b'|z='c') / 只有所投票中3位候选人各出现一次且所投票必须是a,b,c以内的字母此票才有效,不符合执行if下面的prinft语句。 hxr0.score+=(x='a'?5:(y='a'?3:2); hxr1.score+=(x='b'?5:(y='b'?3:2); hxr2.score+=(x='c'?5:(y='c'?3:2); /三目运算判断三个投票人一轮投票的结果,每有人投一次就判断累加一次。 printf(" score: %d %d %dn",hxr0.score,hxr1.score,hxr2.score); / 输出投入该票后,三个人累计得分。 continue; / continue 语句的用法是跳过continue下面的语句进入下一次循环! printf("此票无效n"); for(i=0;i<3;i+) if(temp<hxri.score) temp=hxri.score; j='a'+i; / 寻找得分最高的人,最高得分保存在temp里,这个人的名字(a、b或c)保存在j里。 printf("people %c score %dn",'a'+hxri.code,hxri.score); / 输出3个人各自的得分情况。 if(hxr0.score=hxr1.score)&&hxr0.score>=hxr2.score) | ( (hxr0.score=hxr2.score)&&hxr0.score>=hxr1.score) | (hxr1.score=hxr2.score)&&hxr1.score>=hxr0.score) printf("重新投票n");/ 如果出现前两名并列第一,则打印“重新投票”。 else printf("祝贺%c当选冠军,%c为最高分候选者。n",j,j); / 否则输出得分最高者的名字。 end=1; getchar(); / 增加一个输入命令,防止程序直接退出看不到结果。参考文献C/C+程序设计张树粹主编

    注意事项

    本文(C++课程设计投票程序.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开