c++大作业说明书Word下载.docx
- 文档编号:15352121
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:20
- 大小:207.25KB
c++大作业说明书Word下载.docx
《c++大作业说明书Word下载.docx》由会员分享,可在线阅读,更多相关《c++大作业说明书Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
班干选举系统
3.参考资料
《C++程序设计》.谭浩强编著.清华大学出版社.
《C++面向对象程序设计》.谭浩强编著.清华大学出版社.
《计算机软件技术基础》.徐士良葛兵编著.清华大学出版社(第三版).
二、编写目标
通过学习软件工程的设计方法,主要采用VC++6.0技术为数据库开发程序,是用户可以使用具备可以随机为候选人编号,选举人可以直接投票,对总票数、有效票、无效票进行统计并输出每个候选人所得的票数等功能的软件。
三、问题描述
(1)基本功能要求:
(1)设置候选人的总个数。
(2)记录各候选人的名字(为每个候选人自动生成一个编号)
(3)显示候选人的编号和名称
(4)设置要选举的人数
(5)输入选票信息,若选票中候选人的个数大于要选举的人数,则作为无效票。
(自己设计选票格式,在文档说明书里详细说明)
(6)统计总的选票数,有效票数,无效票数,每个候选人的得票数。
(7)输出获选人的姓名和得票数。
(2)扩展功能要求:
(1)对候选人的得票数进行排序输出。
(2实现可视化界面
四、概要设计
函数头:
#include<
iostream>
//包括cin、cout等函数
ctime>
//随机函数所需
string>
//字符串函数所需
usingnamespacestd;
//使用命名空间std
主函数:
intmain()
子函数:
voidRecord();
//记录各候选人的个人信息以及初始化得票数;
friendvoidVote(Personget[],intN,intM);
//投票者对候选人进行投票;
friendvoidSort(Personarray[],intN);
//对各候选人的得票数进行排序;
friendvoidset(Personleader[],intN,intM);
//对票数的统计与输出;
五、用户使用说明
管理员首先输入候选人的人数、投票者的个数和投票人的名字,然后每个投票人按照系
统的指示第一票投给谁,第二票投给谁进行投票。
投票完毕后系统会自动输出总票数、有效票数、无效票数、每个候选人的信息、所得的票数并按从高到低排列和最后得选人的信息和票数。
六、程序详细设计说明
//使用命名空间std
classPerson//候选人Person类的声明
{
public:
//声明以下部分为的共有的
//共有的成员函数与友元成员函数
voidRecord();
//成员函数的声明
//友元函数的声明
private:
//声明以下部分为私有的
//私有的数据
intLeader_num;
//候选人的编号
stringLeader_name;
//候选人的姓名
intcount;
//候选人的得票数
};
类是C++中十分重要的概念,它是实现面向对象程序设计的基础,是对象的抽象。
C++对C的改进,最重要的就是增加了“类”这样一种类型。
所以C++开始时被称为“带类的C”。
类是抽象的,不占用内存,它有三中成员访问限定符,分别是:
私有的(private)、公用的(public)和受保护的(protect)。
类还可以继承派生出其它的类,为软件技术的发展扩大的很大空间,解决了软件重用问题(此资料来自《C++面向对象程序设计》.谭浩强编著.清华大学出版社)
友元函数是类中常见的,它可以是不属于任何类的非成员函数,也可以是其它类的成员函数,它可以访问本类的私有成员,在类体中用friend对该函数进行声明。
出了友元函数外还有友元类。
//成员函数的的类外定义:
//记录各候选人的个人信息以及初始化得票数
voidPerson:
:
Record()
{
intnum;
srand(time(0));
//让随机函数rand()不再产生重复的数字
num=rand()%100;
Leader_num=num;
//自动为候选人生成一个1-100之间的编号
cout<
<
"
编号:
Leader_num<
'
\t'
;
//输出候选人的编号
cout<
候选人的姓名:
cin>
>
Leader_name;
//输入候选人的姓名,如:
张三
count=0;
得票数:
count<
endl;
//输出候选人刚开始的得票数
}
//友员函数的的类外定义:
//投票者对候选人进行投票
voidVote(Personget[],intN,intM)
intnum1,num2,i,j;
//每一个投票者可以投出自己两张宝贵的两票,允许两张投给一个候选人,分别为num1,num2
每人请投两张票。
for(i=1;
i<
=M;
i++)//循环每次输入投票者所要投给的候选人
投票人"
第一张投谁的票:
num1;
//输入第一票所投的候选人的编号
第二章投谁的票:
num2;
for(j=0;
j<
N;
j++)
{
if(num1==get[j].Leader_num)//判断投票者第二张票的编号
get[j].count+=1;
break;
}//每个投票者第一张票所对应的候选人的编号,若对应,该候选人得票数+1
}
}
for(j=0;
if(num2==get[j].Leader_num)//判断投票者第二张票的编号
}//每个投票者第二张票所对应的候选人的编号,若对应,该候选人得票数+1
//对各候选人的得票数进行排序
voidSort(Personarray[],intN)
inti,j;
Persontemp;
for(j=1;
=2;
for(i=0;
N-1;
i++)
if(array[i].count<
array[i+1].count)
temp=array[i];
array[i]=array[i+1];
//调换位置
array[i+1]=temp;
//对票数进行统计并输出最终结果
voidset(Personleader[],intN,intM)
intEorrTicket=0,NoEorrTicket=0,TotalTicket=0;
//EorrTicket为无效票数,NoEorrTicket为有效票数,TotalTicket为总选票数
for(inti=0;
if(leader[i].count>
=M)//判断每位候选人的票数是否大于投票者人数,若大于,有效票数为投票人数,否则继续执行
EorrTicket=leader[i].count-M;
//求有效票数
TotalTicket+=leader[i].count;
//求总票数
NoEorrTicket=TotalTicket-EorrTicket;
//求无效票数
//输出总票数,有效票数,无效票数
cout<
\n总票数:
TotalTicket<
\t有效票数:
NoEorrTicket<
\t无效票数:
EorrTicket<
Sort(leader,N);
//调用排序函数,对leader数组进行从高->
低的排序
//调整各候选人的有效票数
for(i=0;
i++)
M)
leader[i].count-=EorrTicket;
//输出各候选人的有效票数
\n各候选人的票:
编号"
姓名"
得票数"
++i)
leader[i].Leader_num<
\t"
leader[i].Leader_name<
leader[i].count<
//输出获选人的信息
此次班干部获选人:
\n姓名:
leader[0].Leader_name<
\t得票数为:
leader[0].count<
在类中,成员函数与友元函数是类内和类外的接口,是类内和类外沟通的主要桥梁纽带,函数和函数间可以互相调用。
在这里还用到了for循环语句和if语句,这两种语句在C++程序设计中运用十分广泛,for循环语句中往往还会嵌套,形成几个循环,在C++中除了for循环语句外还有while、do-while等等。
与if语句连用的还有elseif和else。
在上面Vote函数中还用到了bfeak语句,主要是退出循环体,它只能用于循环语句和switch语句,不能单独使用或用于其他语句中,和它紧密相连的还有continue语句。
它们两个的区别是break推出全部循环,continue只退出本次循环。
{//界面
.........................................."
................欢迎进入班干部选举系统....."
..........................................."
intN,M;
//定义候选人数与投票人数,N为候选人数,M为投票人数
请输入候选人数N:
cin>
//输入候选人数N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 作业 说明书