电视投票系统综合课程设计
课程设计投票器设计说明书
单片机课程设计说明书课题:班级投票显示器专业:测控技术与仪器班级:机122-1:许铎学号:201256502116指导老师:王东兴组员:贺茂森、段亚东、王向东烟台大学机电汽车工程学院目录第一章设计任务和内容 (3)1.1 设计任务 (3)1.2 设计要求 (3)1.3 设计内容 (3)第二章电路设计 (4)2.1 总体设计 (4)2.2 详细设计 (5)2.2.1 单片机引脚功能 (5)2.2.3时钟电路 (6)2.2.4复位电路 (7)2.2.5 数码管显示电路 (8)第三章程序设计与仿真 (10)3.1 投票显示系统总体功能实现 (10)2.2 系统流程图 (11)3.3 程序编写 (13)3.4 仿真与调试 (15)第四章总结和未来改良设想 (21)第一章设计任务和内容1.1 设计任务分组按照选定题目的设计任务,设计各种单片机应用系统,设计工作量至少要包含:〔1〕用MCS-51单片机,12MHz时钟,常规的上电和手动复位电路;〔2〕 3个以上的按键;〔3〕 LED或/和数码管或/和LCD显示及其接口;〔4〕至少2路输入信号,可以是模拟量或数字量。
1.2 设计要求〔1〕设计一个投票系统,具有计票显示功能;〔2〕可实现6人同时进行投票,累计票数在显示器上显示;〔3〕主持人使用一个按键开关控制开始投票,终止投票和清零;〔4〕投票开始后每人能且仅能投一次票,多投无效;1.3 设计内容〔1〕编写项目功能说明书,确定应用系统的功能和具体参数;〔2〕设计电路原理图;〔3〕编写C语言源程序,程序中加注必要的注解说明;(4)实物制作与调试;〔5〕编写设计说明书。
第二章电路设计2.1 总体设计整个设计以AT89C51单片机为核心,点触开关控制信号通过单片机I/O 口,单片机处理信号并将结果通过LED 数码管显示,最终按键复位单片机。
总体设计如下列图。
2.2 详细设计2.2.1 单片机引脚功能·P0口 8位、漏极开路的双向I/O口。
在线投票系统课程设计报告
className = "org.apache.derby.jdbc.ClientDriver";
ﻩurl = "jdbc:derby://localhost:1527/myeclipse";
ﻩusername = "classiccars";
ﻩﻩpassword = "classiccars";
}
开发工具:MyEclipse
在线投票系统功能:
功能 1:投票
功能 2:查看投票ﻫ功能3:对同一IP地址的用户重复投票的限制
功能4:管理员功能,实现发布新问题,删除主题,查看所有主题投票统计,修改统计结果。
2)实现该系统可划分为三个模块:显示投票选项,参与投票和显示投票结果。下面来分别介绍。
投票界面:
ﻩ}
ﻩpublicString getNum() {
ﻩﻩreturnnum;
}
ﻩpublicvoidsetNum(String num) {
ﻩthis.num= num;
}
publicString getOrder() {
returnorder;
ﻩ}
ﻩpublicvoidsetOrder(String order) {
import java.sql.Statement;
智慧投票系统使用设计方案
智慧投票系统使用设计方案智慧投票系统是一种基于技术手段的投票方式,旨在提高投票的效率和公正程度。
下面给出一个智慧投票系统的设计方案。
一、系统架构智慧投票系统采用分布式架构,包括前端、后端和数据库三个主要组成部分。
1. 前端:提供用户界面,包括投票页面、选项选择、投票倒计时、投票结果展示等。
2. 后端:负责处理用户请求、用户身份验证、投票计算、数据存储等核心功能。
3. 数据库:存储用户信息、投票选项、投票结果等相关数据。
二、技术实现1. 前端技术:采用HTML/CSS/JavaScript等前端技术,实现用户界面的展示和交互。
2. 后端技术:采用Java、Python等编程语言,使用Spring框架实现后端逻辑的处理。
3. 数据库技术:使用MySQL等关系型数据库,存储用户信息、投票选项和投票结果等数据。
4. 安全性设计:使用HTTPS协议保护用户数据传输的安全,使用用户身份验证确保投票的合法性。
5. 技术扩展性:采用微服务架构,将功能模块划分为不同的服务,方便后续的功能扩展和维护。
三、功能设计1. 用户注册:用户可以注册个人账号,或者通过第三方平台账号登录。
2. 选项创建:管理员可以创建投票选项,设置选项名称、描述、投票生效时间等相关信息。
3. 投票发起:用户可以选择投票选项,并进行投票。
4. 统计分析:系统可以实时统计投票的结果,并对结果进行展示和分析,包括图表展示、数据分析等。
5. 投票倒计时:系统可以设置投票的倒计时时间,提醒用户进行投票。
6. 投票结果公示:系统可以设置投票结果的公示时间,确保投票公正和透明。
7. 投票安全性:系统可以确保投票的安全性和合法性,防止重复投票和非法操作。
四、系统优势1. 提高投票效率:智慧投票系统可以减少纸质投票的流程和时间,提高投票的效率。
2. 提升投票公正性:智慧投票系统可以实现投票结果的实时统计和公示,减少人为操作的干扰,提升投票的公正性。
3. 数据存储方便:智慧投票系统将用户信息、投票选项和投票结果等数据存储在数据库中,方便数据的存储和查询。
投票系统c语言课程设计
投票系统c语言课程设计一、教学目标本课程的教学目标是使学生掌握投票系统的设计与实现方法,培养学生的C语言编程能力和算法思维。
具体分为以下三个部分:1.知识目标:学生需要了解投票系统的基本原理和工作流程,掌握C语言的基本语法和数据结构,熟悉面向对象编程思想。
2.技能目标:学生能够使用C语言独立完成一个简单的投票系统,具备一定的算法分析和解决问题的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生独立思考和团队协作的能力,使学生认识到编程对于解决实际问题的重要意义。
二、教学内容本课程的教学内容主要包括以下几个部分:1.投票系统的基本原理和工作流程,包括选民投票、计票、统计结果等环节。
2.C语言的基本语法,如数据类型、运算符、控制结构、函数等。
3.数据结构的基本概念,如数组、链表、栈、队列等。
4.面向对象编程思想,如类、对象、封装、继承、多态等。
5.投票系统的实现,包括系统分析、设计、编码、测试等环节。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:教师通过讲解投票系统的原理、C语言的语法和数据结构等基础知识,使学生掌握基本概念和理论。
2.讨论法:教师学生就投票系统的实现方法和解决问题的策略进行讨论,培养学生的思维能力和沟通能力。
3.案例分析法:教师通过分析实际案例,使学生了解投票系统的实际应用和解决具体问题的方法。
4.实验法:学生动手编写代码,实现一个简单的投票系统,培养学生的实际操作能力和创新能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计原理与应用》。
2.参考书:《数据结构教程》、《面向对象编程思想》。
3.多媒体资料:PPT课件、教学视频、网络资源等。
4.实验设备:计算机、网络环境、编程工具等。
5.在线编程平台:如LeetCode、牛客网等,供学生进行练习和交流。
投票系统期末大作业课程设计报告
武汉轻工大学《Web程序设计》大作业设计报告学号:姓名:日期:【目的】通过制作一个投票系统来掌握服务器端语言与前端语言的交互、数据库的基本操作,以及Web程序开发的基本方法和思路。
【要求】一、应该具有以下功能:1〉投票界面有一个表格显示了各位老师的编号,姓名,得票数2〉表格的第四列是投票链接,单击链接,该教师票数加一,并显示在界面上3〉得票数显示为一个红色的进度条4〉防止刷票二、扩展功能表格的第四列改为复选框,增加一个提交投票按钮【撰写课程设计报告要求】按照软件工程思想规范整个系统的开发流程,并反映在设计文档中,主要包括下列步骤:1.需求分析1〉投票界面有一个表格显示了各位老师的编号,姓名,得票数2〉表格的第四列是投票链接,单击链接,该教师票数加一,并显示在界面上3〉得票数显示为一个红色的进度条4〉防止刷票5〉表格的第四列改为复选框,增加一个提交投票按钮2.系统框架3.模块设计(1)Web视图层使用Jsp页面展示数据表,以及页面链接进行投票,以及JSTL方法表示session中的数据。
①Table展示数据<table align="center" width="1000px" border="1px solid #aaa" cellpadding="0" cellspacing="0"onselectstart="return false" οnselect="document.selection.empty()"><tr align="center"><td>编号</td><td>姓名</td><td>票数</td><td>操作</td></tr><c:forEach items="${TeacherInfo}" var="TeacherInfo"><tr align="center"><td>${ TeacherInfo.teacher_id }</td><td>${ TeacherInfo.teacherName }</td><td width="60%"><div class="skillbar html"><div class="filled" data-width="${ TeacherInfo.vote_t }"></div><span class="percent">${ TeacherInfo.vote_t }</span></div></td><td><ahref="../Servlet/ServletV ote?teacherId=${ TeacherInfo.teacher_id }&teacherName=${ TeacherInfo.teacherNa me }&teacherVote=${ TeacherInfo.vote_t }">V oteHere</a> </td><td><input type="checkbox" name="teacherId" value="${ TeacherInfo.teacher_id }"></td><td>${TeacherInfo.voteTimes}</td></tr></c:forEach></table>②<a href=” ”> 进行投票<ahref="../Servlet/ServletV ote?teacherId=${ TeacherInfo.teacher_id }&teacherName=${ TeacherInfo.teacherNa me }&teacherVote=${ TeacherInfo.vote_t }">V oteHere</a>③CSS制作动态进度条(2)Sevlet控制层控制投票次数防止刷票,链接DAO层传输数据。
大班综合投票教案
大班综合投票教案一、教学目标:1. 了解投票的基本概念和流程。
2. 学会表达自己的意见和选择。
3. 培养团队合作和民主意识。
二、教学重点:1. 投票的概念和流程。
2. 学会表达自己的意见和选择。
三、教学难点:1. 投票的公平性和民主性。
2. 学会尊重他人的意见和选择。
四、教学准备:1. 投票主题和选项。
2. 投票表格和笔。
3. 计时器。
五、教学过程:1. 导入:教师向学生介绍投票的概念和重要性。
2. 讲解:教师讲解投票的流程和规则。
3. 示范:教师进行一次模拟投票,让学生了解投票的整个过程。
4. 实践:学生分成小组,进行一次真实的投票活动。
5. 总结:教师和学生一起总结投票的结果和体验。
6. 反思:教师引导学生思考如何改进投票过程,以提高公平性和民主性。
7. 扩展:教师提出一些与投票相关的问题,引导学生进行深入思考。
8. 作业:学生完成一篇关于投票的小作文。
9. 反馈:教师对学生的表现进行评价和反馈。
10. 结束:教师总结课程的主要内容和目标,鼓励学生在日常生活中多参与投票活动。
六、教学策略:1. 采用小组讨论的方式,激发学生的思考和参与度。
2. 通过模拟投票活动,让学生亲身体验投票的过程和意义。
3. 引导学生进行反思和总结,培养他们的批判性思维能力。
七、教学方法:1. 讲授法:教师向学生讲解投票的基本概念和流程。
2. 示范法:教师进行模拟投票,让学生了解投票的整个过程。
3. 实践法:学生进行真实的投票活动,培养他们的实际操作能力。
八、教学评价:1. 观察学生在投票活动中的表现,评价他们的参与度和合作意识。
2. 收集学生的作业和小作文,评价他们的表达和思考能力。
3. 听取学生的反馈和意见,评价教学效果和改进方向。
九、教学拓展:1. 组织一次班级选举活动,让学生亲身参与,提高他们的民主意识。
2. 邀请社区工作者或政治专业人士来校进行讲座,让学生了解真实的投票过程和意义。
3. 开展一次关于民主和投票的课题研究,让学生深入探讨相关话题。
投票管理系统课程设计c
投票管理系统课程设计c一、教学目标本课程旨在让学生了解和掌握投票管理系统的基本原理和实际应用,通过学习,学生应能够:1.知识目标:理解电子投票系统的基本概念、架构和工作原理;掌握常见的投票算法和安全性分析。
2.技能目标:能够设计简单的投票管理系统,进行投票数据的收集、统计和分析;能够对投票系统进行安全性能评估。
3.情感态度价值观目标:培养学生对、公正、透明投票过程的认同,提高其对信息技术在投票系统中应用的意识和责任感。
二、教学内容教学内容将围绕投票管理系统的基本概念、架构、算法和安全性能展开,具体包括:1.电子投票系统的基本概念:介绍电子投票系统的定义、特点和分类。
2.投票管理系统的架构:讲解投票管理系统的组成,包括投票站、投票箱、投票算法等。
3.投票算法:介绍常见的投票算法,如简单多数投票、排序投票等,并通过实例进行分析。
4.安全性分析:讲解投票系统的安全性要求,分析可能存在的安全风险和攻击手段,以及相应的防护措施。
三、教学方法为了提高学生的学习兴趣和主动性,将采用多种教学方法,包括:1.讲授法:讲解基本概念、原理和算法。
2.案例分析法:通过分析实际案例,使学生更好地理解投票管理系统的工作原理和应用。
3.讨论法:学生进行小组讨论,分享对安全性分析和投票算法的研究成果。
4.实验法:安排实验课程,让学生动手设计简单的投票管理系统,提高其实践能力。
四、教学资源教学资源包括:1.教材:《投票管理系统设计与实现》。
2.参考书:介绍电子投票系统、算法和安全性的相关书籍。
3.多媒体资料:包括PPT、视频教程等。
4.实验设备:计算机、网络设备等,用于实验课程的开展。
五、教学评估为了全面、客观地评估学生的学习成果,将采用以下评估方式:1.平时表现:包括课堂参与度、小组讨论和实验操作等,占总评的30%。
2.作业:布置与课程相关的研究性作业,如投票算法的设计与分析,占总评的20%。
3.考试:包括期中考试和期末考试,内容涵盖课程基础知识与实践应用,占总评的50%。
在线投票管理系统课程设计
在线投票管理系统课程设计一、课程目标知识目标:1. 学生能够理解在线投票管理系统的基本原理与功能需求;2. 学生能够掌握在线投票管理系统中数据库设计、前端页面设计与后端逻辑处理的基本方法;3. 学生能够了解在线投票管理系统在实际应用中的安全性问题及解决方案。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的在线投票管理系统;2. 学生能够运用编程语言和数据库技术完成系统的功能开发;3. 学生能够通过小组合作,提高团队协作能力和沟通能力。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣,提高对信息技术的认识;2. 学生在课程学习中,树立正确的网络安全意识,关注信息时代的社会问题;3. 学生通过课程实践,培养创新意识,增强解决实际问题的自信心。
课程性质:本课程为信息技术课程,结合实际应用场景,培养学生的编程能力和解决问题的能力。
学生特点:六年级学生已具备一定的信息技术基础,对新鲜事物充满好奇,具备一定的自主学习能力。
教学要求:结合学生特点,注重实践操作,引导学生运用所学知识解决实际问题,提高学生的综合素养。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 在线投票管理系统的基本概念与功能模块介绍:包括投票、计票、用户管理等功能;- 相关教材章节:第三章《数据库应用》第一节《数据库基本概念》。
2. 数据库设计:学习数据库表结构设计、数据关系与约束;- 相关教材章节:第三章《数据库应用》第二节《数据库设计》。
3. 前端页面设计:HTML、CSS、JavaScript基础知识,实现页面布局与交互;- 相关教材章节:第二章《网页设计与制作》。
4. 后端逻辑处理:学习一种编程语言(如Python)的基本语法,实现数据接收、处理与响应;- 相关教材章节:第四章《编程语言》。
5. 系统安全与维护:了解在线投票管理系统的安全性问题,学习常见的安全防护措施;- 相关教材章节:第五章《网络信息安全》。
班级投票显示器课程设计
班级投票显示器课程设计一、课程目标知识目标:1. 学生能理解投票显示器的基本概念,掌握其工作原理。
2. 学生能运用所学的电子元件,设计并搭建一个简易的班级投票显示器。
3. 学生能理解并描述投票显示器在现实生活中的应用。
技能目标:1. 学生能够运用信息技术,进行资料搜集、整理和分析,培养信息处理能力。
2. 学生能够运用所学的电子知识,进行电路设计和搭建,提高动手实践能力。
3. 学生能够通过小组合作,学会沟通与协作,培养团队合作精神。
情感态度价值观目标:1. 学生能够积极主动参与课程学习,培养对电子科技的兴趣和热情。
2. 学生能够认识到科技对生活的改变,增强创新意识和实践能力。
3. 学生能够通过投票显示器的设计与制作,体会团队合作的重要性,培养公平、公正的价值观。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术与电子技术的融合课程,注重实践性和应用性。
2. 学生特点:五年级学生具有一定的信息素养和动手能力,对新鲜事物充满好奇心,喜欢合作与分享。
3. 教学要求:结合学生的年龄特点,采用启发式、探究式教学方法,激发学生的兴趣,培养其创新精神和实践能力。
二、教学内容1. 投票显示器的基本概念与原理:- 投票显示器的工作原理及其在生活中的应用案例。
- 介绍相关的电子元件,如LED灯、按钮、开关、集成电路等。
2. 电路设计与搭建:- 使用简单的电子元件,设计并搭建一个班级投票显示器。
- 学习电路图的绘制,理解电路连接方式。
3. 编程与调试:- 学习简单的编程知识,编写程序控制投票显示器的显示效果。
- 调试电路和程序,解决制作过程中出现的问题。
4. 小组合作与展示:- 学生分组进行项目设计,共同完成投票显示器的制作。
- 各小组展示作品,分享制作过程和经验。
教材章节关联:本教学内容与教材中以下章节相关:1. 第五章《电子元件及其应用》2. 第六章《电路设计与搭建》3. 第七章《编程与调试》教学进度安排:1. 第一周:学习投票显示器的基本概念与原理,了解生活中的应用实例。
投票系统的JAVA课程设计
投票系统的JAVA课程设计一、课程目标知识目标:1. 理解Java语言面向对象编程的基本原理,掌握类的定义、对象创建及方法调用;2. 学会使用Java集合框架处理数据,理解泛型的概念及其应用;3. 掌握Java异常处理机制,提高程序的健壮性;4. 了解投票系统的基本功能需求,能运用所学知识进行系统设计。
技能目标:1. 能够运用面向对象思想设计并实现投票系统的各个功能模块;2. 独立编写Java代码,实现用户投票、查看结果等操作,并处理可能出现的异常;3. 学会使用调试工具进行程序调试,优化代码质量,提高系统性能;4. 培养团队协作能力,通过与同学合作完成课程设计,共同解决实际问题。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情,增强自主学习能力;2. 引导学生关注社会热点问题,培养学生将所学知识应用于实际问题的意识;3. 培养学生的团队合作精神,提高沟通与协作能力;4. 培养学生严谨、认真的学习态度,养成良好的编程习惯。
课程性质:本课程设计属于实践性课程,旨在让学生在实际项目中运用所学知识,提高编程能力和问题解决能力。
学生特点:学生已具备一定的Java基础,具有较强的学习能力和动手能力,但对实际项目的开发流程和团队协作经验不足。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践和团队协作,提高学生的编程能力和实际问题解决能力。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. 面向对象编程基础:- 类的定义、属性、方法;- 对象的创建与使用;- 封装、继承、多态性。
2. Java集合框架:- List、Set、Map接口及其实现类;- 泛型编程;- 集合的使用场景及性能分析。
3. Java异常处理:- 异常的分类;- try-catch-finally结构;- 异常的抛出与捕获;- 自定义异常。
4. 投票系统设计与实现:- 需求分析;- 模块划分与设计;- 数据库设计与操作;- 投票、查看结果等功能的实现。
电视投票系统的设计与实现
图 2 电视投票技术流程
图 3 电视投票业务层
73
智慧 广电
图 4 电视投票数据代理层
图 5 电视投票系统实体类类图
热部署,从而保证日常的升级和维护。 (4)Service 监 听 器: 对 新 进 来
的 Service 进行监听和管理,并向任务 缓冲池进行添加任务,对客户端进行 及时响应。
(5) 任 务 缓 冲 池: 对 Service 进 行任务缓冲,缓冲池有两级,一个是 写入任务缓冲,一个是错误队列缓冲。
2 电视投票系统总体设计
呼出,以缩屏的方式让投票互动界面
广告和 TV 界面完整共存,强制到达, 2.1 系统设计需求
多次呈现,全面覆盖,精确锁定栏目
电视投票系统技术平台涉及的关
2.2 系统总体结构
电视投票系统平台分为前台和后 台两个部分,结构如图 1 所示。
(1) 内 网 Web 服 务 器, 用 于 发 布投票业务。基于 Internet 的 Web 服 务器和 WAP 服务器用于实现对 PC 互 联网以及手机 WAP 投票的支持。
(6)错误队列缓冲池:保存错误 任务队列。
(7)错误任务处理器:任务缓冲 池中,将执行失败的任务放到错误缓 冲队列中;在错误缓冲队列中,对任 务执行异常判断以及是否可以完成做 系统分析,如果该任务错误属于不可 修复的,则对任务排除,否则把任务 修复,放回到任务队列中。
智慧 广电
电视投票系统的设计与实现
周南岚 江苏省广播电视总台(集团)教育频道
摘要:本文探讨了电视投票系统的特点、优势、设计需求,提出了一种电视投票系统的设计方案,给出了 系统总体结构、技术流程、安全策略等。系统利用 互联网应用开发技术和 ZeroC Ice 中间件技术构建, 并将投票系统应用到当地数字电视节目中,取得了较好的效果。
模电课程设计多人投票
模电课程设计多人投票一、教学目标本节课的教学目标是让学生掌握模拟电子技术中多人投票系统的原理和设计方法。
知识目标要求学生了解多人投票系统的基本概念、工作原理和典型应用;技能目标要求学生能够运用所学知识设计并实现一个简单的多人投票系统;情感态度价值观目标则是培养学生对模电技术的兴趣,提高学生团队协作和解决问题的能力。
二、教学内容本节课的教学内容主要包括多人投票系统的原理、设计和应用。
首先,介绍多人投票系统的基本概念和分类,让学生了解不同类型的投票系统及其特点。
其次,详细讲解多人投票系统的工作原理,包括信号处理、表决逻辑和输出判决等。
接着,介绍多人投票系统的设计方法,引导学生掌握系统参数选取、硬件设计和软件编程等关键技术。
最后,通过实例分析,使学生了解多人投票系统在实际应用中的重要作用。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法相结合的方式进行教学。
首先,运用讲授法向学生传授多人投票系统的相关理论知识。
其次,通过讨论法引导学生探讨多人投票系统的应用场景和设计方法,激发学生的思考。
然后,采用案例分析法分析实际应用中的多人投票系统,使学生对所学知识有更深刻的理解。
最后,利用实验法让学生动手设计并实现一个简单的多人投票系统,提高学生的实践能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:教材《模拟电子技术》、参考书《多人投票系统设计指南》、多媒体资料(包括多人投票系统的原理动画、实际应用视频等)、实验设备(如微控制器、传感器等)。
这些教学资源将有助于丰富学生的学习体验,提高教学效果。
五、教学评估本节课的教学评估将采取多元化方式进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括平时表现、作业、考试等。
平时表现主要考察学生在课堂上的参与程度、提问回答等情况,占总评的20%。
作业分为课堂练习和课后作业,主要考察学生对多人投票系统原理和设计方法的理解和应用,占总评的30%。
电视大赛观众投票与排名系统C语言设计说明
1.课题简介 (3)2.设计方案 (4)3.具体设计 (4)3.1 程序原理 (4)3.2关键代码段源码及分析 (5)4.测试 (10)4.1测试过程中遇到的问题记录 (13)4.2测试结果 (13)5.总结 (15)设计体会 (15)参考文献 (15)1.课题简介在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同,在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。
现在要求编写一程序模拟实现上述系统的功能2.设计方案1.总体思路:利用学到的C语言编程知识和编程技巧,完成一个小型管理信息系统的开发,帮助学生熟悉开发一个系统的整个过程:系统分析、程序的设计、编写与调试等过程。
2.课程设计内容:.1.输入的形式和输入值的范围:由于本程序主要运用于观众投票以及选手信息的输入,所以输入的形式是数字及字符,范围不限;2.输出的形式:根据观众投票情况输出排名情况3.程序实现的功能:实现观众投票以及选手得分情况的排名4.测试数据:a.输入选手的个数以及每个选手的信息输入“4”“a s d f”b.根据菜单输入选号“2”输出“1号a得分是0,排名是0;2号s得分是0,排名是0;3号d得分是0,排名是0;4号f得分是0,排名是0;”c.给选手投票,输入“1 2 3 3 3 3 4 3 2 2 1 0”。
d. 根据菜单输入选号“4”,输出“第1名是3号选手d;第2名是2号选手s;第3名是1号选手a;第4名是4号选手f”“冠军是3号选手d;亚军是2号选手s;季军是1号选手a”3.具体设计原理:为了实现上述程序功能,需要定义顺序表的抽象数据类型如下ADT list {、数据对象:D={ai|ai∈Elem Set,i=0,1,2,…,n,n≥0}数据关系:R={<ai,ai+1>|ai,ai+1 ∈D}基本操作:Initlist_Sq (&L)操作结果:构造一个空的顺序表L.ListInsert_Sq (&L,i,e)初始条件:顺序表L已存在操作结果:将元素e插入到顺序表L的第i位ListDelete_Sq (&L,i,&e)初始条件:顺序表L已存在操作结果:将顺序表L中i位置的元素删除,元素值置入e中返回 locate_Sq (L,e)初始条件:顺序表L依存在操作结果:顺序表L中查找元素e并返回其位置2、本程序分为四个模块a、主程序模块:实现对函数的调用;b、顺序表模块:实现选手信息存储;c、投票模块实现观众对选手的投票;d、排序模块:实现对选手的成绩的排序;4.源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define N 9 //假设选手人数不超过9 typedef struct node{int num; //编号char name[20]; //姓名int sum; //票数}info[N+1];info*p;int numbers;//总共的选手人数FILE*fp;void tianjia(){int i=1,n;char a[10],b[10];p=(info*)malloc(sizeof(info));if((fp=fopen("xuanshou.txt","r"))!=NULL){fscanf(fp,"%d%s\n",&p[i]->num,p[i]->name); i++;fclose(fp);printf("读取文件记录成功!\n");}else{printf("不存在记录文件,请输入选手的数量:\n"); scanf("%d",&n);getchar();numbers=n;printf("请输入%d名选手的编号和姓名:\n",n); while(n--){scanf("%d%s",&p[i]->num,p[i]->name);getchar();i++;}printf("输入完成!\n");}printf("选手信息如下:\n");printf("编号姓名\n");for(i=1;i<=numbers;i++)printf("%d %s\n",p[i]->num ,p[i]->name);}void toupiao(){int i,n;for(i=1;i<=numbers;i++)p[i]->sum =0;printf("投票开始啦!\n");printf("请观众通过按键进行投票,按'1'为1号选手投票");printf("按'2'为2号选手投票,以此类推,以按'0'作为投票结束标记\n");printf("投票现在正式开始:\n");while(1){scanf("%d",&n);getchar();if(n==0)break;while(n<1||n>numbers){printf("不存在此号码,请重新输入:");scanf("%d",&n);}p[n]->sum ++;}printf("投票完成!\n");printf("投票情况如下:\n");printf("编号姓名票数\n");for(i=1;i<=numbers;i++)printf("%d %s %d\n",p[i]->num ,p[i]->name ,p[i]->sum ); }//希尔排序void shellinsert(info *R,int n,int dk){int i,j;for(i=dk+1;i<=n;i++){if(R[i]->sum >R[i-dk]->sum ){ //小于时,需R[i]将插入有序表*R[0] =*R[i]; //存储待插入的记录for(j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)*R[j+dk]=*R[j]; //记录后移*R[j+dk]=*R[0]; //插入到正确位置}}}void shellsort(info *R,int n){int i; int mm=1;int t[10]={21,19,17,13,11,7,5,3,2,1}; //步长因子中除1外没有公因子,且最后一个步长因子必须为1for(i=0;i<10;i++)shellinsert(R,n,t[i]); //调用每个步长因子printf("最终排名如下:\n");printf("名次编号姓名票数\n");for(i=1;i<=numbers;i++){if(i>=2&&p[i]->sum <p[i-1]->sum )mm++;printf("%d %d %s %d\n",mm,p[i]->num ,p[i]->name ,p[i]->sum );}}void menu(){printf(" ************************电视大赛观众投票及排名系统*************************** \n\n\n");printf(" 1添加选手信息\n 2投票\n 3排序\n 4退出\n");}void main(){char n;while(1){menu();printf("\n 请输入您要选择的操作序号,按回车键确认:");scanf("%c",&n);getchar();while(n<'1'||n>'4'){printf("输入有误,请重新输入:");scanf("%c",&n);getchar();}switch(n-48){case 1: tianjia();break;case 2: toupiao();break;case 3: shellsort(p,numbers);system("pause");break;case 4: printf("谢谢使用,再见!"); exit(0);}}}.五调试分析1、本程序在编辑过程中遇到不少麻烦例如给字符数组一个一个赋值时,要考虑输入回车的情况,在多次试验及上网查询时加了getchar()这一步骤才得以实现;2、本程序的模块划分简单而合理,在操作方面比较容易,运用顺序表来存储选手信息;3、本实验程序设计中,将程序分为四个模块,使得设计时思路清晰,实现时调试顺利,各模块具有较好的可重用性,确实得到了一次良好的程序设计训练六、测试结果点击运行,进入菜单51、输入“1”,按提示输入“4, 再输入选手信息“a,s,d,f”2、输入“2”,输出3、输入“3”输入“1 2 3 3 3 3 4 3 2 2 1 04、输入“4”,输出”。
简单投票管理系统课程设计报告
简单投票管理系统课程设计报告Course Design (Thesis) Task AssignmentClass 2 of 09 are Engineering and Accounting in the School of are will be working on a simple voting management system (Applet) from December 20.2010 to December 24.2010 in the School of are Training Center.XXX for this course design (thesis) are as follows:1.The purpose of this course design:1) To master the programming method of Java language;2) XXX' XXX practice;3) XXX' ability to analyze and solve problems;4) XXX' XXX.2.The task and requirements of the course design:1) The task of the course design is to design a voting management system.2) Innovative requirements:1) Add background music;2) Add "ns for use" of the program;3) Disable the n box and some n keys before entering the candidate。
XXX clicks;4) Add the n of saving results;5) XXX.3.Requirements for the writing of the course design thesis:1) The task and requirements of the course design;2) Design ideas - working principle。
电视大赛观众投票及排名系统(排序应用)算法与数据结构报告模版
算法与数据结构课程设计实验报告学号:姓名:专业:班级:一、课程设计目的《算法与数据结构》是计算机相关专业的一门专业基础课程,通过课程学习,在课程设计环节应达到以下能力:1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2.提高程序设计和调试能力。
学生通过上机训练,验证自己设计算法的正确性,学会有效利用基本调试方法,迅速找出程序代码中的错误并修改。
3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5.查阅文献资料的自学能力。
二、课程设计题目及要求在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。
现在要求编写一程序模拟实现上述系统的功能。
三、需求分析在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc 函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同。
四、总体设计本程序分为四个模块:1. 主程序模块:实现对函数的调用;2. 顺序表模块:实现对选手信息的存储;3. 投票模块:实现观众对选手的投票;4. 排序模块:实现对选手成绩的排序。
它们之间的关系为:主程序模块顺序表模块投票模块排序模块五、详细设计与实现本程序分为五个模块a 、主程序模块:实现对函数的调用;b 、顺序表模块:实现选手信息存储;c 、投票模块:实现观众对选手的投票;d 、排序模块:实现对选手成绩的排序;e 、文件保存模块:实现对选手成绩的保存;(1)分析:为了实现上述程序功能,需要定义顺序表的抽象数据类型如下1、存储类型的定义参赛选手信息存储类型的定义:typedef struct node // 结构体定义,命名一个新的类型名代表结构体类型{char name[9]; // 选手姓名int num; // 选手编号int score; // 选手得分int tax; // 选手名次} ElemType; // 新的类型名2、函数的定义1. 函数Menu, 用于进行菜单的显示和选号:void Meun()2. 函数Init_sq ,为选手个数分配动态:void Init_sq(SeqList *L,int n)3. 函数Init ,用于完成选手信息的输入:void Init(SeqList *L)4. V ote 函数用以实现投票的功能:void V ote(SeqList *L)5. 希尔排序:void Shellsort(SeqList *L)6. Rank 函数,用以计算选手名次:void Rank(SeqList *L)7.Display 函数,用以输出最终结果:void Display(SeqList *L)8.Save 函数,实现文件的生成:void Save(SeqList *L)(1 )输入选手信息界面(2 )投票界面(3 )排序界面(4 )排序结果页面(5 )保留到文件的界面经编译完成,此次设计程序已完成选手信息输入、投票、排序及保存到文件等功能总结电视大赛观众投票及排名系统是一个运用在各种电视节目中用来进行投票的一种较为智能的系统。
在线投票系统课程设计
在线投票系统课程设计一、课程目标知识目标:1. 学生理解在线投票系统的基本原理,掌握相关概念,如投票、计票、数据安全等;2. 学生了解在线投票系统的优点和潜在风险;3. 学生掌握在线投票系统的基本操作流程和使用方法。
技能目标:1. 学生具备分析在线投票系统需求的能力,能够设计简单的投票流程;2. 学生能够运用编程语言或工具搭建一个基本的在线投票系统;3. 学生通过实际操作,提升信息处理、问题解决和团队协作能力。
情感态度价值观目标:1. 学生培养对网络安全的重视,树立正确的网络道德观念;2. 学生养成积极参与公共事务、行使公民权利的责任感;3. 学生在团队合作中学会尊重他人意见,培养批判性思维和创新精神。
课程性质分析:本课程为信息技术课程,旨在通过在线投票系统教学,提高学生对信息技术的应用能力和网络安全意识。
学生特点分析:六年级学生已具备一定的信息素养,对新事物充满好奇,具备一定的自主学习能力,但需引导其正确使用网络。
教学要求:1. 紧密联系课本内容,注重理论与实践相结合;2. 教学过程中注重启发式教学,引导学生主动思考、探索;3. 关注学生个体差异,提供个性化指导,确保每个学生都能达到课程目标。
二、教学内容本章节教学内容围绕在线投票系统设计,依据课程目标,科学系统地组织以下内容:1. 在线投票系统概述- 投票系统的发展历程;- 在线投票系统的定义、特点及分类;- 投票系统的应用场景。
2. 在线投票系统原理与技术- 投票系统的工作原理;- 数据加密技术及其在投票系统中的应用;- 投票系统的安全性分析。
3. 在线投票系统设计与实现- 投票系统需求分析;- 投票流程设计;- 投票系统的编程实现;- 投票系统的测试与优化。
4. 在线投票系统应用案例- 国内外在线投票系统案例分析;- 在线投票在我国的应用现状及发展趋势;- 投票系统在校园民主管理中的应用。
教学安排与进度:第一课时:在线投票系统概述、原理与技术;第二课时:在线投票系统设计与实现;第三课时:在线投票系统应用案例及讨论。
电视投票系统综合课程设计
综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:电视大赛观众投票及排名系统学院名称:信息工程学院专业:电子信息工程班级: 120414学号: 12041412 姓名:彭涛评分:教师:吴小润20 15 年 3 月 20 日综合程序课程设计任务书20 14 -20 15学年第 2 学期第 1 周- 2周摘要随着电视机走进了千家万户,电视上最多的是电视广告,电视剧,除此以外就是各类综艺节目,各类综艺节目层出不穷,为了给带给观众带来更多的欢乐,增强参与感,大多电视大赛都少不了大量观众的互动,现场观众会对大赛的参赛选手进行投票支持,随着形式的发展,传统的记录排列方式已经不能满足需求,智能投票系统的出现,使投票变得轻松简单,功能也更为强大。
此次设计采用 Visual C + + 程序设计语言、运用数据结构通过模块化系统来制作一个电视大赛观众投票和排名系统,以此实现选手信息的录入、观众的投票、排名显示的功能。
关键字:大赛投票希尔排序排名系统目录前言_____________________________________________________________________________ 7正文 _____________________________________________________________________________________________ 8 第一章设计要求_______________________________________________________________________________ 8 第二章设计概要 ________________________________________________________________________________ 8 第三章设计详细_______________________________________________________________________________ 10 1.系统的组成 _________________________________________________________________________________ 102.系统程序框图 ________________________________________________________________________________ 103..函数设计 __________________________________________________________________________________ 111.添加选手信息 ____________________________________________________________________________ 112、投票 ___________________________________________________________________________________ 133.希尔排序 ________________________________________________________________________________ 154.显示菜单 ________________________________________________________________________________ 175.主函数 __________________________________________________________________________________ 17 第四章运行结果及调试_________________________________________________________________________ 18 第五章设计体会 _______________________________________________________________________________ 22 第六章参考文献______________________________________________________________________________ 23 第七章附件__________________________________________________________________________________ 24 程序 _________________________________________________________________________________________ 24智能电视投票系统的优越性在于他的高效率和准确率,投票系统采用合理的程序,科学的算法,人性化的界面,使得观众投票变成一件简单的事情,本次设计通过C语言来编写一个简单实用的投票系统,通过希尔算法进行排列第一章设计要求【问题描述】在电视大赛中,选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,按高到低进行。
电视大赛观众投票与排名系统课程设计报告
下载可编辑电视大赛观众投票及排名系统一目的根据所学知识,编写指定题目的 C 语言程序,并规地完成课程设计报告。
通过课程设计,加深对《程序设计语言》和《软件技术基础》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
二需求分析1、数据输入用户程序经编译组建无误后,运行界面输入选手的数目及其基本信息(编号和)。
2、数据输出运行界面显示输出名次、编号、、票数四项信息,若票数相同,则显示并列名次。
3、功能(1)将选手信息、得票数存储,排序时直接提取,并最终输出结果。
(2)采用模块化设计,使程序结构清晰明了。
三概要设计1、存数结构设计typedef struct node{int number; //存储编号信息char name[20]; //存储信息int sum; //存储票数}whl[N];定义结构体类型变量2、定义结构体指针whl*p;3、主函数void main(){定义字符变量n( 操作步骤)死循环{WHL(); 调用 WHL函数switch(n-48)多分支结构选择{case 1: shuru();break;//shuru函数,实现选手的基本信息输入case 2: toupiao();break;//toupiao函数,实现对各选手的投票及计数case 3: shellsort(p,numbers);system("pause");break;//shellsort函数,运用希尔排序,实现对投票数的排序并对结果进行输出case 4: printf("谢谢使用,再见!"); exit(0);//程序结束}}}四详细设计#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define N 9 //假设选手人数不超过9void WHL() //显示主界面{printf(" ************************电视大赛观众投票及排名系统*************************** \n\n\n");printf(" 1输入选手信息\n 2投票\n 3排序及结果\n 4退出\n");}typedef struct node //定义结构体{int number; //编号char name[20]; //int sum; //票数}whl[N];whl*p;int numbers;//总共的选手人数void shuru() //定义shuru函数,输入选手信息{int i=1,n;p=(whl*)malloc(sizeof(whl)); //用malloc函数分配动态存printf("请输入选手的数量:\n");scanf("%d",&n);getchar(); //输入选手数,放入缓冲区numbers=n;// 总共的选手数就为nprintf("请输入 %d名选手的编号和:\n",n);while(n--) //while循环输入选手信息并存储{scanf("%d%s",&p[i]->number,p[i]->name);getchar();i++;}printf("输入完成 !\n");printf("选手信息如下:\n"); //在运行界面显示选手信息printf("编号 \t\n");for(i=1;i<=numbers;i++){printf("%d\t%s\n",p[i]->number ,p[i]->name);}}void toupiao() //定义toupiao函数{int i,n;//定义整型i 为选手编号、 n 为投票数for(i=1;i<=numbers;i++)p[i]->sum =0;//将每一位选手的投票数初值计0printf("投票开始啦 !\n");printf("请观众通过按键进行投票,按'1' 为1号选手投票 ");printf("按 '2'为 2 号选手投票,以此类推,以按'0' 作为投票结束标记 \n");printf("投票现在正式开始 :\n");while(1)//为选手投票{scanf("%d",&n);getchar();if(n==0)//当投票为0,投票随即结束break;while(n<1||n>numbers) //若某一位投票数小于 1 或大于选手总数视为投票失败,要重新输入投票数printf("不存在此,请重新输入:");scanf("%d",&n);}p[n]->sum ++; //将每一位选手的投票数计数}printf("投票完成 !\n");}void shellinsert(whl *R,int n,int dk)//希尔排序{int i,j;for(i=dk+1;i<=n;i++){if(R[i]->sum >R[i-dk]->sum ){//小于时,需R[i]将插入有序表*R[0] =*R[i]; //存储待插入的记录for(j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)*R[j+dk]=*R[j]; //记录后移*R[j+dk]=*R[0]; //插入到正确位置}}}void shellsort(whl *R,int n){int i;int mm=1;int t[10]={21,19,17,13,11,7,5,3,2,1}; //步长因子中除 1 外没有公因子,且最后一个步长因子必须为1,第一趟排序间隔为21for(i=0;i<10;i++)shellinsert(R,n,t[i]);//调用每个步长因子printf("最终排名如下:\n");printf("名次 \t编号\t\t票数\n");for(i=1;i<=numbers;i++) //for循环输出显示最后结果{if(i>=2&&p[i]->sum <p[i-1]->sum )mm++;printf("%d\t%d\t%s\t%d\n",mm,p[i]->number ,p[i]->name ,p[i]->sum );}void main() //主函数{char n; //操作数while(1){WHL(); //主界面printf("\n 请输入您要选择的操作序号,按回车键确认: ");scanf("%c",&n);getchar();while(n<'1'||n>'4') //若输入超过总操作数 4 或小于 1 则要重新输入{printf("输入有误,请重新输入:");scanf("%c",&n);getchar();}switch(n-48)//多分支结构,实现操作数对应函数执行,n-48 保证与操作数数据类型一致{case 1: shuru();break;case 2: toupiao();break;case 3: shellsort(p,numbers);system("pause");break;case 4: printf("谢谢使用,再见!"); exit(0);}}}五调试分析1、本程序在编辑过程中遇到不少麻烦例如给字符数组一个一个赋值时,要考虑输入回车的情况,在多次试验及上网查询时加了getchar()这一步骤才得以实现。
酒店电视投票活动方案策划
酒店电视投票活动方案策划引言:酒店作为一个繁忙的商务场所,为了增加顾客的娱乐体验和增加酒店的收益,往往会在客房中安装电视并提供电视频道。
然而,很多时候,顾客对于电视节目的选择有所不同。
为了更好地满足顾客的需求,我们计划在酒店进行一次电视投票活动,让顾客参与节目选择的过程,以提供更加个性化的服务。
一、活动目标:1. 提升顾客满意度:通过让顾客参与电视节目的选择,提供更加贴近顾客需求的节目,从而提升顾客的满意度。
2. 增加酒店收益:通过提供个性化的服务,吸引更多的顾客选择酒店,并在电视节目选择的过程中增加收益。
3. 提升酒店形象:积极回应顾客的需求,体现酒店关注顾客的态度和服务意识,提升酒店形象。
二、活动时间:本次电视投票活动计划在2022年XX月XX日开始,未来XX个月内进行。
三、活动内容:1. 电视节目调查问卷:在酒店客房中放置电视节目调查问卷,让顾客填写自己喜欢的电视节目类型和节目建议,以了解顾客的喜好和需求。
2. 电视节目投票系统:在酒店客房的电视上设置投票系统,让顾客参与节目的选择。
每个客房都设置相同的电视节目列表,并要求顾客在入住期间选择自己喜欢的节目。
3. 规定的电视节目调整时间:根据顾客的选择结果,定期调整酒店客房的电视节目列表,以提供更适合顾客的节目内容。
4. 电视节目推荐板块:在电视节目列表中增加一个推荐板块,包括酒店推荐的优质电视节目和顾客推荐的热门节目,为顾客提供更多选择。
5. 电视节目推广:酒店与电视台合作,进行电视节目推广活动,如放映电视台的广告片和主题宣传片,以吸引顾客参与电视节目选择。
四、活动推广:1. 酒店宣传活动:通过酒店官方网站、社交媒体、酒店内的海报、客房的电视广告以及与合作企业的合作推广等方式,向顾客介绍酒店电视投票活动,并邀请顾客参与投票。
2. 电视节目宣传:通过合作的电视台宣传酒店电视投票活动,并邀请观众入住酒店并参与节目的投票。
3. 奖励机制:设立奖励机制,鼓励顾客参与投票,在活动结束时根据投票积极度给予奖励,如免费房券、房间升级等,以增加顾客的参与度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:电视大赛观众投票及排名系统学院名称:信息工程学院专业:电子信息工程班级: 120414学号: 12041412 姓名:彭涛评分:教师:吴小润20 15 年 3 月 20 日综合程序课程设计任务书20 14 -20 15学年第 2 学期第 1 周- 2周摘要随着电视机走进了千家万户,电视上最多的是电视广告,电视剧,除此以外就是各类综艺节目,各类综艺节目层出不穷,为了给带给观众带来更多的欢乐,增强参与感,大多电视大赛都少不了大量观众的互动,现场观众会对大赛的参赛选手进行投票支持,随着形式的发展,传统的记录排列方式已经不能满足需求,智能投票系统的出现,使投票变得轻松简单,功能也更为强大。
此次设计采用 Visual C + + 程序设计语言、运用数据结构通过模块化系统来制作一个电视大赛观众投票和排名系统,以此实现选手信息的录入、观众的投票、排名显示的功能。
关键字:大赛投票希尔排序排名系统目录前言_____________________________________________________________________________ 7正文 _____________________________________________________________________________________________ 8 第一章设计要求_______________________________________________________________________________ 8 第二章设计概要 ________________________________________________________________________________ 8 第三章设计详细_______________________________________________________________________________ 10 1.系统的组成 _________________________________________________________________________________ 102.系统程序框图 ________________________________________________________________________________ 103..函数设计 __________________________________________________________________________________ 111.添加选手信息 ____________________________________________________________________________ 112、投票 ___________________________________________________________________________________ 133.希尔排序 ________________________________________________________________________________ 154.显示菜单 ________________________________________________________________________________ 175.主函数 __________________________________________________________________________________ 17 第四章运行结果及调试_________________________________________________________________________ 18 第五章设计体会 _______________________________________________________________________________ 22 第六章参考文献______________________________________________________________________________ 23 第七章附件__________________________________________________________________________________ 24 程序 _________________________________________________________________________________________ 24智能电视投票系统的优越性在于他的高效率和准确率,投票系统采用合理的程序,科学的算法,人性化的界面,使得观众投票变成一件简单的事情,本次设计通过C语言来编写一个简单实用的投票系统,通过希尔算法进行排列第一章设计要求【问题描述】在电视大赛中,选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,按高到低进行。
现在要求编写一程序模拟实现上述系统的功能。
【实现提示】在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc或new函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同第二章设计概要通过对课题的需求分析,首先想到的是需要初始化(选手信息)、投票、排序、显示输出的模块,退出的功能。
初始化课题假设选手为1到9,而且选手信息较多,采用结构体定义选手信息,在初始化中完成存储空间的开辟、对选手信息初始化。
投票在投票中,完成投票功能,最初按照提示中的方向来做,但在调试过程中发现每次的投票环节会比较繁琐,且不适宜大数据的测试,后来在老师提醒下采用随机数来模拟投票这一过程,也更科学,更符合投票这一过程。
排名在这一环节中到没怎么纠结,按提示中的希尔排序方法来实现。
显示这一功能的实现比价简单,用printf()函数实现退出系统使用完以后需要退出,是不是必要的有待考察,因为可以直接点击右上角的关闭主菜单为了有一个友好的用户界面,增加菜单提示,方便自己调试和用户的操作。
第三章设计详细1.系统的组成2.系统程序框图3..函数设计1.添加选手信息通过该函数可以添加选手的信息,使用时首先输入参赛选手的人数(范围为1-9个),选手的信息包括姓名和编号,还有该函数是根据人数通过malloc函数来开辟存放选手信息的顺序表,当使用者添加完成选手的编号和姓名后,该函数进依次将选手的信息存入顺序表单元中。
当下次使用,选择该功能时,就会自动读出上次保存的选手的信息,如果选手的信息丢失了,还可以通过该函数重新输入选手的信息,并且自动保存在"xuanshou.txt"的文件名的文本文档中。
void tianjia(){。
int i=1;p=(info *)malloc(sizeof(info));if((fp=fopen("xuanshou.txt", "r"))!=NULL){char a[10],b[10];fscanf(fp,"%s%s\n",a,b); //读取"编号","姓名"这两个字符串while(!feof(fp)){fscanf(fp,"%d%s\n",&p[i]->num ,p[i]->name );i++;}fclose(fp);numbers =i-1;printf("读取文件记录成功!\n");}else{printf("不存在记录文件,请输入选手的数量:\n");int n;添加选手信息:首先输入参赛选手的人数(范围为1-9个),选手的信息包括姓名和编号,然后根据人数通过malloc函数来开辟存放选手信息的顺序表。
最后通过输入将选手的编号和姓名依此存入顺序表单元中。
scanf("%d",&n);getchar();numbers =n;printf("请输入%d名选手的编号和姓名:\n",n);while(n--){scanf("%d%s",&p[i]->num ,p[i]->name );getchar();i++;}printf("输入完成!\n");}printf("选手信息如下:\n");printf("编号姓名\n");for( i=1;i<= numbers;i++)printf("%d %s\n",p[i]->num ,p[i]->name );}2、投票使用者通过该投票函数,可以对选手进行投票,该函数是定义一个p[i]->sum来存放选手的票数,当输入'1'时就为一号选手投票,输入'2'为2号选手投票,以此类推,以输入'0'作为投票结束标记。
当输入的数字n(n<1||n>numbers)时,就输出"不存在此号码,请重新输入"void toupiao(){int i;for(i=1;i<=numbers ;i++)p[i]->sum =0;printf("投票开始啦!\n");printf("请观众通过按键进行投票,按'1'为1号选手投票");printf("按'2'为2号选手投票,以此类推,以按'0'作为投票结束标记\n");printf("投票现在正式开始:\n");int n;投票:创建好选手的人数和信息之后,观众就可以通过该投票函数对选手进行投票。
while(1){scanf("%d",&n);getchar();if(n==0)break;while(n<1||n>numbers){printf("不存在此号码,请重新输入:");scanf("%d",&n);}p[n]->sum ++;}printf("投票完成!\n");printf("投票情况如下:\n");printf("编号姓名票数\n");for(i=1;i<=numbers ;i++)printf("%d %s %d\n",p[i]->num ,p[i]->name ,p[i]->sum );}3.希尔排序排序:该函数采用希尔排序法对选手的票数进行排序,排序完成后依次按名次、编号、姓名、票数进行输出void shellinsert(info *R,int n,int dk){int i;for(i=dk+1;i<=n;i++){if(R[i]->sum >R[i-dk]->sum ){ //小于时,需R[i]将插入有序表*R[0] =*R[i]; //存储待插入的记录for(int j=i-dk;j>0&&R[j]->sum <R[0]->sum ;j=j-dk)*R[j+dk]=*R[j]; //记录后移*R[j+dk]=*R[0]; //插入到正确位置}}}void shellsort(info *R,int n){int i;int t[10]={21,19,17,13,11,7,5,3,2,1}; //步长因子中除1外没有公因子,且最后一个步长因子必须为1for(i=0;i<10;i++)shellinsert(R,n,t[i]); //调用每个步长因子printf("最终排名如下:\n");printf("名次编号姓名票数\n");int mm=1;for(i=1;i<=numbers;i++){if(i>=2&&p[i]->sum <p[i-1]->sum )mm++;printf("%d %d %s %d\n",mm,p[i]->num ,p[i]->name ,p[i]->sum );}}4.显示菜单用户界面提示使用人员如何操作void menu(){printf(" ************************电视大赛观众投票及排名系统*************************** \n\n\n");printf(" 1添加选手信息\n 2投票\n 3排序\n 4退出\n");}5.主函数通过主函数调用函数实现功能void main(){int i;while (1){menu();printf("\n 请输入您要选择的操作序号,按回车键确认:");scanf("%d", &i);while (i<1 || i>4){printf("输入有误,请重新输入:");scanf("%d", &i);}switch (i){case 1: tianjia(); break;case 2: toupiao(); break;case 3: shellsort(p, numbers);break;case 4: printf("谢谢使用,再见!"); exit(0);第四章运行结果及调试1.界面2.按提示输入选手信息3.观众投票4.排序结果5.结束退出第五章设计体会此次实习为期两周,时间虽然不多不少,我学到了一些东西,也知道了很多的不足。