基本需求

设计一个简易的学生电子投票系统,候选人为4名,投票人数最少为10人。候选人信息包括:编号、姓名、班级。
功能实现:录入,查询,统计,保存,读取,删除,投票


提示:以下是本篇文章正文内容,下面案例可供参考

一、流程图

python升级在线投票系统 python在线投票系统报告_python

二、程序包含功能

(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()

总结

python升级在线投票系统 python在线投票系统报告_投票系统_02

python升级在线投票系统 python在线投票系统报告_按照指令_03