基本需求
设计一个简易的学生电子投票系统,候选人为4名,投票人数最少为10人。候选人信息包括:编号、姓名、班级。
功能实现:录入,查询,统计,保存,读取,删除,投票
提示:以下是本篇文章正文内容,下面案例可供参考
一、流程图
二、程序包含功能
(1)录入功能:程序能够录入候选人信息。要求编号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。能随时进行投票,如果投票编号不存在,在提醒投票无效。
(2)查询功能:输入编号查询某候选人信息。
(3)统计功能:当投票人数不足10人时,给出提示;否则能够现实票数统计结果,并按得票数排序。
(4)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(5)读取功能:可将候选人信息保存在文件中,然后读入到当前系统中,供用户进行使用。
(6)删除功能:输入编号可以删除所对应的候选人信息
(7)投票系统:输入候选人编号可以给此人增加一票数,
三、源代码
注意,在开始的时候,要新建一个txt文本,放在桌面
class Chengji:
def __init__(self):
self.names = []
self.infos = "1:增加|2:修改|3:删除|4:排序|5:查找|6:展示|7.投票|8:退出系统"
def print_menu(self):
print("=" * 40)
print("\t-欢迎进入电子投票系统")
print("\t1:增加学生信息")
print("\t2:修改学生信息")
print("\t3:删除学生信息")
print("\t4:对投票结果排序")
print("\t5:查找学生信息")
print("\t6:显示所有学生信息")
print("\t7:进行投票")
print("\t8:退出学生成绩系统")
print("=" * 40)
def add_info(self):
self.lst = []
id = input("清输入编号:")
flag = 0
for i in self.names:
if id in i:
print("编号重复请重新输入:")
flag = 1
break
if flag == 0:
name = input("清输入姓名:")
numbers = int(input("请输入得票数"))
classe = int(input("请输入学生所在班级"))
self.save_info()
self.lst.append(name)
self.lst.append(id)
self.lst.append(numbers)
self.lst.append(classe)
self.names.append(self.lst)
self.save_info()
self.show_info()
# print(self.lst)
# print(self.names)
def search_info(self):
id1 = input("清输入编号:")
flag = 0
for i in self.names:
if id1 in i:
print("您已经查到该学生信息,信息如下:")
print("\t姓名 编号 得票数 班级 \t")
m = "\t" + "\t".join(map(str, i))
flag = 1
print(m)
break
if flag == 0:
print("您查找的编号不存在")
self.save_info()
def modify_info(self):
id1 = input("请输入需要查找的编号:")
for i in self.names:
if id1 in i:
number = int(input("请选择修改项目(1:姓名2:编号3:得票数4.所在班级)"))
if number == 1:
nem_name = input("将姓名修改为:")
i[0] = nem_name
elif number == 2:
nem_id = input("将编号修改为:")
i[1] = nem_id
elif number == 3:
nem_numbers = input("将得票数修改为:")
i[2] = nem_numbers
elif number == 4:
nem_classe = input("将所在班级修改为:")
i[3] = nem_classe
self.show_info()
break
else:
print("很遗憾没有找到")
self.save_info()
def del_info(self):
id2 = input("请输入需要删除人的编号:")
for i in self.names:
if id2 in i:
self.names.remove(i)
self.show_info()
break
else:
print("抱歉,您需要删除的编号不存在")
self.save_info()
def sort_info(self):
self.lst1 = [int(x[2]) for x in self.names]
whole = sum(self.lst1)
if whole >= 10:
print("总票数为:{:.2f}".format(whole))
print("按照得票数排名为;")
print("\t姓名\t编号\t得票数\t所在班级\t")
self.names.sort(key=lambda x: int(x[2]), reverse=True)
for i in self.names:
m = "\t" + "\t".join(map(str, i)) + "\t"
print(m)
else:
print('投票人数不足十人,请继续统计')
self.save_info()
def show_info(self):
print("\n")
print("当前学生信息为:")
print("*" * 55)
print("\t姓名 \t编号 \t得票数 \t班级")
for i in self.names:
m = "\t" + "\t".join(map(str, i)) + "\t"
print(m)
print("*" * 55)
# print("\n")
def return_info(self):
print("***欢迎下次再来***")
def start(self):
self.print_menu()
while True:
print("\n\n")
print("操作指令")
print("=" * 55)
print(self.infos)
print("=" * 55)
number = input("请您按照指令输入数字:")
if number.isdigit():
number = int(number)
if number == 1:
self.add_info()
elif number == 2:
self.modify_info()
elif number == 3:
self.del_info()
elif number == 4:
self.sort_info()
elif number == 5:
self.search_info()
elif number == 6:
self.show_info()
elif number == 7:
self.addr_info()
elif number == 8:
self.return_info()
break
else:
print("请输入正确的编号")
def save_info(self):
fp = open(r"此处加上你自己的文本地址", 'w')
s = ["姓名", "编号", "得票数", "班级"]
fp.write("\t".join(s) + "\n")
for i in self.names:
fp.write("\t".join(map(str, i)) + "\n")
fp.close()
def addr_info(self):
id1 = input("请输入需要投票的编号:")
for i in self.names:
if id1 in i:
n = 1 + int(i[2])
i[2] = str(n)
self.show_info()
break
else:
print("很遗憾没有找到")
self.save_info()
s = Chengji()
s.start()
总结