C语言课程设计报告 电子投票系统
- 格式:doc
- 大小:911.00 KB
- 文档页数:19
一、实验目的1. 熟悉投票程序的基本原理和实现方法;2. 提高编程能力和逻辑思维能力;3. 培养团队协作和沟通能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验内容1. 投票程序设计2. 投票程序实现3. 投票程序测试与优化四、实验步骤1. 设计投票程序(1)功能需求分析:投票程序应具备以下功能:a. 投票人注册:允许用户注册成为投票人,并设置用户名和密码;b. 投票:允许注册用户对候选人员进行投票;c. 查看投票结果:允许用户查看候选人的得票情况;d. 管理员功能:管理员可以查看所有投票信息,删除用户和投票记录。
(2)设计投票程序架构:a. 数据库设计:设计投票人表、候选人表、投票记录表;b. 界面设计:设计登录界面、注册界面、投票界面、查看投票结果界面、管理员界面。
2. 实现投票程序(1)创建项目:在Visual Studio 2019中创建一个C# Windows Forms应用程序项目;(2)数据库连接:使用连接数据库,实现数据访问层;(3)界面设计:使用Windows Forms Designer设计各个界面;(4)功能实现:a. 投票人注册:实现注册功能,包括用户名、密码、邮箱等信息的录入;b. 投票:实现投票功能,包括候选人信息的展示和投票操作;c. 查看投票结果:实现查看投票结果功能,展示候选人的得票情况;d. 管理员功能:实现管理员功能,包括查看所有投票信息、删除用户和投票记录。
3. 测试与优化(1)功能测试:对投票程序进行功能测试,确保各个功能模块正常运行;(2)性能测试:对投票程序进行性能测试,优化程序运行速度和稳定性;(3)界面优化:对投票程序界面进行优化,提升用户体验。
五、实验结果与分析1. 实验结果经过设计与实现,投票程序成功实现了以下功能:(1)投票人注册:用户可以注册成为投票人,并设置用户名和密码;(2)投票:注册用户可以对候选人员进行投票;(3)查看投票结果:用户可以查看候选人的得票情况;(4)管理员功能:管理员可以查看所有投票信息,删除用户和投票记录。
电子投票系统的设计与实现随着科技的不断发展,人们对于各项活动的组织和管理方式也发生了改变。
其中,投票系统作为社会管理和决策的一项重要工具,也逐渐向电子化和智能化的方向发展。
电子投票系统的出现,使投票变得更加便利和高效,也提高了投票的公正性和安全性。
本文将从电子投票系统的设计和实现两个方面阐述电子投票系统的发展和应用。
一、电子投票系统的设计电子投票系统的设计需要考虑以下几个方面:1.功能设计电子投票系统应当满足完整的投票功能。
通常,该系统需要支持投票设置、投票发布、投票管理、投票统计、结果分析等功能模块。
通过这些模块,投票的组织和管理可以更加便利和高效,保障投票的公正性和合法性。
2.界面设计电子投票系统的界面设计也非常重要。
通常,这个系统需要设计简洁、美观、易用的用户界面。
该界面需要呈现出投票的题目、选项和统计数据等信息。
同时,应该考虑不同类型的用户,比如管理员、投票人等,他们可能需要不同的操作权限和视图界面。
3.安全设计电子投票系统必须保障系统的安全性。
其中,安全技术包括数据备份、多级授权、网络隔离等。
此外,该系统还应该采用多种安全措施来保障数据的机密性和完整性。
比如,在网络传输过程中可以使用SSL加密技术,保障数据传输的安全。
4.可扩展性设计电子投票系统还需要具备可扩展性。
随着投票用户和投票数量的增长,系统需要能够自动扩展资源。
此外,系统还需要支持可靠性方案,确保不会发生数据丢失或者其他问题。
二、电子投票系统的实现在实现电子投票系统时,需要充分考虑以下几个方面:1.技术运用电子投票需要使用多种技术。
比如,该系统需要使用Web和移动应用程序开发技术,来实现用户交互和数据传输功能。
此外,电子投票系统还需要使用数据库技术进行数据的存储和管理。
在运用这些技术时,还应该考虑不同的平台、浏览器和设备,确保系统的兼容性和体验性。
2.应用场景电子投票系统的应用场景不仅限于选举、会议和调查等,还可以扩展到各种群体决策和民主管理活动。
合肥学院计算机科学与技术系课程设计任务书20 ~20 学年第学期课程C语言课程设计课程设计名称班干选举投票系统专业班级指导教师20 年月一、课程设计目的《面向过程程序设计》是计算机专业一门重要的专业基础课。
此次课程设计的目的是以面向过程程序设计(C语言)为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。
从而提高自我分析问题、解决问题的能力。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《面向过程程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象的程序设计方法。
(6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。
二、课程设计名称及内容课程设计名称:班干选举投票系统设计内容:设计一个在Windows系统上运行的电子投票、票数统计的软件平台。
投票系统登陆用户有管理员和投票人两类,如果是管理员登陆,可以对候选人信息进行初始化、编辑、对各个职位候选人得票多少进行排序,并给出最终当选者。
投票者可以浏览候选人的相关信息、选择职位及相应的候选人投票的功能。
三、任务和要求运用面向过程的程序设计方法,要求选择动态数组或链表,任务中要运用对文件进行读写操作。
本题程序应提供的基本管理功能有:管理员:1)添加:即增加一个人的记录到系统中。
2)显示:可查询所有人员信息。
3)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
投票程序c语言课程设计一、课程目标知识目标:1. 学生能理解投票程序的基本原理和流程。
2. 学生能掌握C语言中的基本数据类型、变量定义、控制结构及函数运用。
3. 学生能运用所学知识设计并实现一个简单的投票程序。
技能目标:1. 学生能够运用C语言编写具有实际功能的程序,提高编程实践能力。
2. 学生能够通过分析问题、设计算法、编写代码、调试程序等过程,培养解决问题的能力。
3. 学生能够通过团队协作完成课程设计,提高沟通与协作能力。
情感态度价值观目标:1. 学生能够认识到编程在解决实际问题中的价值,增强学习编程的兴趣和信心。
2. 学生能够在编程实践中培养耐心、细心和持之以恒的品质。
3. 学生能够通过课程设计,培养团队协作精神,认识到团队合作的重要性。
课程性质:本课程设计属于实践性课程,旨在让学生将所学的C语言知识运用到实际项目中,提高编程实践能力和解决实际问题的能力。
学生特点:学生已经具备一定的C语言基础,能够理解基本的编程概念,但缺乏将理论知识运用到实际项目中的经验。
教学要求:教师需引导学生通过自主学习、团队协作、实践操作等方式,完成投票程序的设计与实现。
在教学过程中,注重培养学生的编程思维、问题解决能力和团队协作精神。
通过课程目标的分解,确保学生能够达到预期的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. 复习C语言基础知识:变量定义、数据类型、运算符、控制结构(顺序、分支、循环)及函数定义。
2. 投票程序需求分析:讲解投票程序的功能需求,分析程序模块划分,介绍各模块功能。
3. 投票程序算法设计:引导学生设计投票算法,包括投票数据输入、处理、统计和输出结果。
4. 编写C语言代码:指导学生根据算法设计,编写投票程序的代码,包括主函数、子函数等。
5. 编程实践:组织学生上机实践,调试和优化投票程序,确保程序的正确性和稳定性。
6. 团队协作与沟通:培养学生团队协作精神,组织小组讨论,分享编程心得,互相学习。
电子投票系统的设计与实现随着科技的不断发展,传统的纸质投票方式逐渐被电子投票系统所取代。
电子投票系统的设计与实现是一个复杂而关键的过程,需要充分考虑安全性、可靠性和用户友好性等因素。
本文将介绍电子投票系统的设计原则、功能需求以及技术实现。
一、设计原则1. 安全性:电子投票系统必须确保选民投票的机密性、完整性和不可抵赖性。
系统应采用强大的加密算法来保护用户的隐私信息,并使用数字签名技术来防止选票被篡改。
2. 可靠性:电子投票系统在投票过程中应确保系统的稳定性和可用性。
系统应具备容错能力,能够在出现故障时自动切换至备份系统,以保证投票数据的完整性和准确性。
3. 用户友好性:电子投票系统应简单易用且符合人性化设计原则,以便选民能够轻松地理解和使用系统。
系统界面应简洁明了,提供清晰的指引和操作步骤,确保选民能够顺利完成投票过程。
4. 透明度:电子投票系统的设计应具备可追溯性和审核性。
系统应记录每一次投票的相关信息,并能够对投票过程进行审计和验证,以保证投票结果的真实性和公正性。
二、功能需求1. 用户认证:电子投票系统应提供有效的用户认证机制,确保只有合法选民才能参与投票。
系统可以采用多种认证方式,如生物特征识别、身份证验证或手机号验证等。
2. 投票过程:选民进入系统后,应能够选择投票对象,并进行确认。
系统应在选民投票后生成唯一的票据,并进行保存和备份,以便后续审核和验证。
3. 投票结果统计:电子投票系统应能够自动生成投票结果统计数据,并及时显示投票进度和结果。
系统可以提供多种形式的投票结果报告,如图表或表格,方便相关人员进行分析和决策。
4. 数据管理:系统应具备高效的数据库管理能力,能够对投票数据进行存储、查询和更新。
系统还应具备数据备份和恢复机制,以保证投票数据的安全性和可靠性。
5. 投票安全性:为保障投票的安全性,电子投票系统应采用确保指定的数字证书机制以验证导员的身份。
以及确保选民投票后的选票安全、准确的机制。
c课程设计投票程序一、教学目标本课程的目标是让学生理解并掌握投票程序的基本原理和实现方式,培养他们的编程能力和团队协作能力。
具体来说,知识目标包括了解投票程序的定义、原理和实现方式;技能目标包括能够编写简单的投票程序,并具备一定的调试和优化能力;情感态度价值观目标包括培养学生的团队协作意识,提高他们对编程技术的兴趣和热情。
二、教学内容本课程的教学内容主要包括投票程序的原理、实现方式和调试优化技巧。
具体来说,将讲解投票程序的定义和原理,介绍投票程序的基本结构和实现方法,并通过实例演示投票程序的运行和调试过程。
此外,还将介绍如何通过团队合作完成一个复杂的投票程序项目。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
在讲授基本原理和知识时,将结合生动的案例和实际应用进行讲解,以帮助学生更好地理解和掌握。
在实践环节,将学生进行团队协作,完成一个投票程序项目,以培养他们的实际操作能力和团队协作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源,包括教材、参考书、多媒体资料和实验设备等。
教材将作为学生学习的基本依据,参考书将为学生提供更多的学习资料和案例,多媒体资料将用于辅助讲解和演示,实验设备将用于学生的实践操作。
这些教学资源将丰富学生的学习体验,帮助他们更好地理解和掌握投票程序的相关知识和技能。
五、教学评估为了全面反映学生的学习成果,我们将采用多种评估方式,包括平时表现、作业和考试等。
平时表现将评估学生的课堂参与度、提问和回答问题的情况,以及团队合作的表现。
作业将评估学生的编程能力和理解能力,包括投票程序的设计和调试。
考试将评估学生对投票程序原理和实现方式的掌握程度,包括选择题、填空题和编程题。
这些评估方式将客观、公正地评价学生的学习成果,帮助他们了解自己的优点和不足,提高学习效果。
六、教学安排本课程的教学安排将紧凑而合理,确保在有限的时间内完成教学任务。
实习日期: 2011年元月4号~11号C语言课程设计报告————投票程序学号: 20091000754 班号: 055091姓名:董士源指导教师:曹弘C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二、题目:投票程序设有代号为a、b、c的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别计分5、3、2。
请编成从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三个候选者得分并输出“祝贺X当选冠军!”三、设计分析本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。
因此可以用结构体来存储候选人的信息。
唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。
统计结果中若前两名有相同的得票数则要求重新投票。
为此要求把三个后选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。
四、程序设计总思路定义结构体存放候选人的信息,包括编号和得分。
输入投票总人数和投票结果,然后根据人数和投票结果进行统计得分,把选票中有相同编号的去掉,只统计没有相同编号的票数。
然后对最终的分数进行比较,若存在前两名的得分情况一样,则需要重新投票,否则输出谁是获胜者。
五、 总体设计六、详细设计1)结构体定义struct hxr{int m; int point; } hxr[3];2)输入投票人数投票结果开始定义结构体与相关变量输入投票人数投票结果判断选票中 是否有重复编号选票无效统计相应候选人的票数判断前两名 总票数是否相等重新投票输出获胜者结束YNNYprintf("请输入投票总人数\n");scanf("%d",&k);printf("请输入投票\n");getchar();3)判断选票中是否有重复编号if(x!=y&&x!=z&&y!=z){hxr[0].point+=(x=='a'?5:(y=='a'?3:(z=='a'?2:0)));hxr[1].point+=(x=='b'?5:(y=='b'?3:(z=='b'?2:0)));hxr[2].point+=(x=='c'?5:(y=='c'?3:(z=='c'?2:0)));printf(" point: %d %d %d\n",hxr[0].point,hxr[1].point,hxr[2].point);continue;}printf("此票无效\n");4)统计相应候选人的票数for(i=0;i<3;i++){if(temp<hxr[i].point){temp=hxr[i].point;j='a'+i;}printf("people %c point %d\n",'a'+hxr[i].m,hxr[i].point);}5)判断前两名总票数是否相等,并输出结果if(((hxr[0].point==hxr[1].point)&&hxr[0].point>=hxr[2].point&&hxr[1].point>=hxr[2].point )||( (hxr[0].point==hxr[2].point)&&hxr[0].point>=hxr[1].point&&hxr[2].point>=hxr[1].point )||((hxr[1].point==hxr[2].point)&&hxr[1].point>=hxr[0].point&&hxr[2].point>=hxr[0].point) )printf("重新投票\n");else{printf("祝贺%c当选冠军\n",j);}七、上机操作1)有重复2)前两名得分相同3)三人的得分都相等4)投票中有其他人5)正常八、学习心得通过此次C语言程序设计实践,我获益匪浅!c语言考完后早就把老师课堂讲的东西忘得差不多了。
c语言课程设计投票程序一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程技巧,通过实现一个投票程序,培养学生的实际编程能力和问题解决能力。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本数据类型、运算符、控制结构、函数等概念,理解面向过程编程的基本思想。
2.技能目标:学生能够运用C语言实现一个简单的投票程序,包括功能的设计和代码的编写。
3.情感态度价值观目标:学生在编程过程中培养逻辑思维能力,增强对计算机科学的兴趣,培养良好的编程习惯和团队合作精神。
二、教学内容教学内容以教材《C语言程序设计》为基础,结合投票程序的实际需求,详细安排如下:1.引言:介绍C语言的基本概念和投票程序的背景。
2.数据类型和运算符:讲解C语言的基本数据类型和运算符,包括整型、浮点型、字符型等,以及算术运算符、关系运算符、逻辑运算符等。
3.控制结构:讲解条件语句和循环语句的使用,包括if-else、for、while等。
4.函数:讲解函数的定义、声明和调用,包括内置函数和用户自定义函数。
5.投票程序实现:根据投票程序的需求,引导学生运用所学知识进行功能设计和代码编写。
三、教学方法为了提高学生的学习兴趣和主动性,本课程采用多种教学方法:1.讲授法:讲解C语言的基本概念和编程技巧。
2.案例分析法:通过分析真实投票程序案例,引导学生理解和运用所学知识。
3.实验法:学生动手编写投票程序,培养实际编程能力。
4.讨论法:分组讨论编程过程中遇到的问题,培养团队合作精神。
四、教学资源为了支持教学内容和教学方法的实施,提供以下教学资源:1.教材:《C语言程序设计》。
2.参考书:提供相关C语言编程的参考书籍。
3.多媒体资料:制作课件和教学视频,辅助学生理解。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估为了全面、客观地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的20%。
综合性实验报告 题 目: 电子投票平台管理系统 课程名称: C语言程序设计 院系名称: 计算机科学与技术学院 专业班级: 09计算机(非师范) 学生姓名: *** 学 号: *********** 任课教师: ** 2
一、实验目的:
C语言课程设计是计算机学院重要的教学环节,它为学生提供了一个既动手
又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。
1. 进一步巩固和复习C程序设计的基础知识。 2. 培养学生结构化程序,模块化程序设计的方法和能力。 3. 提高学生调试程序的技巧和软件设计的能力。 4. 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 5. 了解软件的编制过程。 二、实验要求: 1.主要操作包括:数据输入、输出、插入、删除、查找、修改、排序等。 2. 用C语言编程实现上述实验内容的结构定义和相关功能,要求程序能够正确执行,最后提交源程序代码及实验报告。
三、系统分析 电子投票平台有两大功能是:管理员操作和游客操作。它包括功能选择;身份验证;投票人管理模块;候选人管理模块;投票区和得票结果管理六大模块。保证了不同人有自己的操作,同时又不能执行别人的操作,具有安全性,并且又有一定的实用性。
本程序包含六个功能模块:功能选择;身份验证;投票人管理模块;候选人管理模块和投票区。 ①功能选择:功能选择模块为系统提供类似于菜单的功能,让用户输入功能选择项,并进入相应的功能执行程序。系统按权限分为管理员的功能选择和投票人的功能选择。分别在admin()和gust()函数中。 3
②身份验证:该模块判断要使用该系统的是投票人还是管理员,首先获取登录者的用户名和密码,当用户名和密码相符时,判断用户的权限并进入相应功能选择函数。当用户忘记密码时,给用户机会进行重新输入。源程序包含在denglu()中。 ③候选人管理模块:候选人管理模块完成候选人的初始化、候选人信息的浏览、候选人信息修改、3个主要功能。源程序包含在chushihua();liulan();xiugai()。 ④投票区管理:投票区完成该系统的主体功能。当投票人顺得登录系统后,输入要投票的候选人的姓名,即可完成投票。候选人的得票信息会随时刷新。每个投票人投票后就会失去投票的权利,避免重复投票。投票后立刻显示各个候选人的得票数。
c语言课程设计食堂投票一、教学目标本课程旨在通过C语言编程实践,使学生掌握食堂投票系统的设计与实现。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用。
3.学习结构体和文件操作。
4.能够运用C语言实现简单的算法。
5.能够使用C语言进行基本的文件操作。
6.具备基本的编程调试能力。
情感态度价值观目标:1.培养学生独立思考、解决问题的能力。
2.培养学生的团队协作意识和沟通能力。
3.培养学生热爱科学、追求真理的精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、结构体和文件操作。
具体安排如下:1.C语言基本语法和数据类型。
2.控制结构和函数的定义与调用。
3.数组、指针和字符串。
4.结构体和文件操作。
5.食堂投票系统的设计与实现。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:用于讲解C语言的基本语法和数据结构。
2.讨论法:用于探讨问题解决方案,培养学生的团队协作意识和沟通能力。
3.案例分析法:通过分析实际案例,使学生更好地理解和掌握C语言编程。
4.实验法:让学生亲自动手编写代码,培养学生的实际编程能力和解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》。
2.参考书:《C Primer Plus》。
3.多媒体资料:PPT课件、视频教程。
4.实验设备:计算机、网络环境。
通过本课程的学习,希望学生能够掌握C语言编程的基本技能,培养独立思考、解决问题的能力,同时增强团队协作意识和沟通能力,为今后的学习和工作打下坚实的基础。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。
2.作业:布置适量的编程作业,评估学生的编程能力和实践能力。
C语言课程设计报告 电子投票系统 学 院 计算机学院 专 业 年 级 姓 名 学 号 教 师
年 月 日 广东工业大学计算机学院制
一.设计题目 电子投票系统 二.课程设计目的 了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
三. 系统功能 本系统程序功能: (1)投票者功能 a.浏览所有候选人资料 b.查询要了解的候选人的信息 c.在了解候选人之后进行投票 (2)管理员功能 a.创建新的候选人资料 b.创建新的用户资料 c.查询要了解的候选人资料 d.浏览所有的候选人资料 e.对候选人票数进行统计并排序
四.系统功能模块结构图 本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块如下图所示:
电子投票系统 验证账号密码
管理员 投票人 图1 程序功能模块结构图 五.程序设计及各模块函数功能简述 1.数据结构 链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储候选人,投票人相关信息。且对结点的定义如下: ttypedef struct candidate//候选人数据结构体 { long number;//候选人编号 char name[20];//候选人姓名 char intro[400];//候选人简介 int vote;//候选人得票数 }candidate;
typedef struct user//投票者数据结构体 { char name[20];//投票者姓名 char ps[8];//对应密码 int power;//权限 }user; 2.main()主函数 主函数是程序入口,采用模块化设计。创建用户文档,进行账号密码验证并根据账户不同调用不同函数进入不同的界面,执行不同的功能 3.main_a()管理员界面 根据输入数字的不同调用不同的函数进入对应的功能,返回主函数。相关的一些函数如下:
浏览候选人 浏览候选人 添加投票人 查找候选人 添加候选人 查找候选人 查看投票结果 投票 addcandidate(); // 创建候选人 addUser();//创建投票者 search(); //查询候选人信息 scan();//浏览候选人信息 sort();//整理所有投票 对菜单选项的选择是输入对应数字按回车键进行选择。 4.main_v(); 投票者者界面 根据输入数字的不同调用不同的函数进入对应的功能,返回主函数。相关的一些函数如下: search(); //查询候选人信息 scan();//浏览候选人信息 vote(); //投票者投票 对菜单选项的选择是输入对应数字按回车键进行选择。 5.addcandidate(); 创建候选人 当用户选择该项对应数字后,进入该函数。创建候选人文档,输入候选人信息。用for语句和if语句检查编号、姓名是否重复。在确认不再创建新候选人信息后输出所有候选人信息。 6.addUser()创建用户 当用户选择该项对应数字后,进入该函数。创建用户文档,输入用户账号与密码。用for语句和if语句检查账号名是否重复。在确认不再创建新用户信息后输出所有用户信息。 7.read()读取候选人信息 打开候选人文档,提取文档内内容 8.scan()浏览候选人信息 先调用read()读取候选人信息,利用for语句输出。 9.search() 查询候选人信息 先调用read()读取候选人信息,利用for语句查找与输入编号一致的候选人信息并输出,若查无此编号则输出“对不起,没有您要查询的候选人”。 10. sort()整理所有投票 先调用read()读取候选人信息,利用for语句,使用选择法对投票数进行排序,并输出。 11. vote()投票者投票 先调用read()读取候选人信息,输入候选人相应编号,利用for语句,将对应候选人的投票数+1,并返回到文档中,输出投票结果。若查无此编号,输出“投票失败!您要投票的号码不存在”。
六.结果
初始界面 分别输入1,1进入管理员界面 创建新候选人 输出候选人信息
投票者界面 投票以及投票结果 候选人票数排序结果 七.心得体会 在本次课程设计中,先使用结构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。通过本次课程设计的学习以及老师的指导,学会了很多东西,了解了开发一个系统的一些步骤。尽管大部分都参考权威书籍的代码,但是在编写代码过程中还是加深了对链表的了解程度。开发工具用的是vc++6.0。这个程序还存在很多需要改进的地方,如密码输入后直接显示了出来,而不是*,缺少安全性;每个投票人不仅仅只能投一票等等。但我会继续努力学习,争取写出更好的程序 源代码 #include #include #include #include
#define closegr closegraph #define N 30
void main_a(); //管理员界面 void main_v(); //投票者者界面 void addcandidate(); // 创建候选人 void addUser();//创建投票者 void search(); //查询候选人信息 void scan();//浏览候选人信息 void vote(); //投票者投票 void read();//读取候选人信息 void save();//存储候选人信息 void sort();//整理所有投票
int total=0,c_total=0; int i=0;
typedef struct candidate//候选人数据结构体 { long number;//候选人编号 char name[20];//候选人姓名 char intro[400];//候选人简介 int vote;//候选人得票数 }candidate;
typedef struct user//投票者数据结构体 { char name[20];//投票者姓名 char ps[8];//对应密码 int power;//权限 }user;
candidate c_man[N]; user total_user[N];
void main_v()//投票者者界面 { int key; do { printf("*************************************************************\n"); printf("********************欢迎进入投票员界面***********************\n");
printf("*************************************************************\n"); printf("** 1.浏览所有候选人 2.查询候选人信息 **\n"); printf("** 3.投票 4.退出 **\n"); scanf("%d",&key); switch(key) { case 1:scan();break; case 2:search();break; case 3:vote();break; case 4:break; default:break; } }while(key!=4); }
void vote() //投票者投票 { long candidatenum;//定义进行操作时的临时结构体变量 int i,flag; char DataFile[20]="候选人.txt",next;// DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的选项 candidate TempS; FILE *fp; begin: flag=0;//flag用来标志是否找对应编号,即投票是否成功 read(); printf("请输入您要投票的候选人的号码:"); scanf("%ld",&candidatenum); printf("您所投票的候选人号码是:%ld\n",candidatenum); for(i=0;i{ if(c_man[i].number==candidatenum) { flag=1; c_man[i].vote++; }