问卷调查系统的设计与实现

本文介绍了使用Python语言设计和实现的一个在线问卷调查系统。系统包括登录设计、问卷调查、统计人数和抽奖功能,旨在提供方便快捷的在线调查体验,减少人力资源的使用。通过源代码的展示,详细阐述了开发过程和技术实现。
部署运行你感兴趣的模型镜像

目录

 

1.1 研究背景

1.2 目的和意义

1.3 主要工作

2.1 具体开发

2.2 登录设计

2.3 问卷调查设计

2.4 问卷调查统计人数

2.5 抽奖设计

2.6 程序运行

3.1 源代码


1.1 研究背景

随着用户对海量数据的需求日益增长,问卷调查作为获得数据的重要途径,在很对领域的运用已经十分广泛。随着我国移动互联网技术的浪潮,智能设备用户的增长,给问卷调查带来全新的改革方案,那就是在线问卷调查。

1.2 目的和意义

为了让被调查用户能够快速便捷的完成问卷调查,设计一个在线问卷调查系统,在线问卷成本低、时效性强、跨地域、表现形式丰富、覆盖范围广,可极大程度上减少人力资源的使用,可满足用户基本需求。

1.3 主要工作

用python语言开发设计一个在线问卷调查系统,先对需求与设计进行分析,然后到具体功能代码的实现,最后对功能实现进行测试。

2.1 具体开发

前期设计:

导入两个库,分别为time 和 random

此函数progress为缓冲进入登录系统

2.2 登录设计

定义其中一个类userLogReg

首先目录下会有个user记事本来存储用户信息

注册时用户名如果存在则不能注册,需要重新注册。

进入登录,会与目录下的user的内容进行匹配,匹配成功才能进入问卷调查系统。

主程序运行:

        

2.3 问卷调查设计

定义一个类userquestionnaire

分为三种情况,第一种情况,对生活满意的。

第二种情况,对生活不满意的。

第三种情况,其他选择的。

2.4 问卷调查统计人数

 读取user_A记事本中有几个1,代表总共有几个人参与答卷。

 读取其他记事本中有几个1,代表相同选择的有几个人。

主程序运行:

            

2.5 抽奖设计

使用随机数进行抽奖,中奖的概率始终是百分之一。

2.6 程序运行

 

 到这就整个程序设计完成了

3.1 源代码

import random
import time


class userLogReg:
    def __init__(self):
        self.userFile = "user.txt"

    def userLogin(self, username, password):

        try:
            f = open(self.userFile, "r", encoding="utf-8")
            for line in f:
                line = line.strip()
                line_list = line.split("#")
                if line_list[0] == username and line_list[1] == password:
                    return True
                elif line_list[0] == username and line_list[1] != password:
                    print('\033[1;31;0m 密码错误!! \033[0m')
            return False
        except IOError:
            return False

    def userRegister(self, username, password):

        with open(self.userFile, "a", encoding="utf-8")as f:
            temp = "\n" + username + "#" + password
            f.write(temp)
            return True

    def user_exist(self, username):

        try:
            with open(self.userFile, "r", encoding="utf-8") as f:
                for line in f:
                    line = line.strip()
                    line_new = line.split("#")
                    if line_new[0] == username:
                        return True
                return False
        except IOError:
            return False

    def main(self):

        print('{:*^58}'.format('\033[1;30;0m 问卷调查系统 \033[0m'))
        print("  1.登录")
        print("  2.注册")
        print("  3.退出调查系统")
        print("*" * 50)

        while (True):
            global label
            arg = input("\033[1;33;0m \n请输入所选择功能的序号: \033[0m")
            if arg == "1":
                label = 1
                user = input("请输入用户名:")
                if not self.user_exist(user):
                    print("\033[1;31;0m 用户名不存在,请检查! \033[0m")
                    continue
                else:
                    pwd = input("请输入登录密码:")
                    if self.userLogin(user, pwd):
                        print("\033[1;32;0m 登录成功!\033[0m")
                        print('{:-^80}'.format('\033[1;30;0m 现在进入答题部分 \033[0m'))
                        break
                    else:
                        print("\033[1;31;0m 登录失败,请检查! \033[0m")
                        continue
            elif arg == "2":
                label = 1
                user = input("请设置用户名:")
                if self.user_exist(user):
                    print("\033[1;31;0m 用户名已存在,请重新设置! \033[0m")
                    continue
                else:
                    pwd = input("请设置密码:")
                    if self.userRegister(user, pwd):
                        print("\033[1;32;0m 注册成功!\033[0m")
                        continue
                    else:
                        print("\033[1;31;0m 注册失败! \033[0m")
                        continue
            elif arg == "3":
                print("\033[1;31;0m 成功退出系统! \033[0m")
                label = 0
                break
            else:
                print("\033[1;31;0m 输入错误,请重新输入! \033[0m")
                label = 1
                continue


class userquestionnaire():

    def __init__(self):
        self.a = "user_A.txt"  # 总人数
        self.b = "user_B.txt"  # 满意
        self.c = "user_C.txt"  # 其他
        self.d = "user_D.txt"  # 不满意会改变
        self.e = "user_E.txt"  # 不满意不会改变

    def meanA(self, ):
        print("\033[1;32;0m \n谢谢你的参与\033[0m")
        self.addEd(self.b)
        self.shows(self.b)
        return False

    def meanB(self):
        print("\033[4;30;0m 您对现在的生活不满意,你会做出相应的改变吗?\n\033[0m")
        print("\n会请选择 1\n不会请选择 2\n其他情况请选择 3")
        b = input("\033[1;33;0m \n请选择相应的序号: \033[0m")
        while (True):
            if b == "1":
                print("\033[1;32;0m \n谢谢你的参与!\033[0m")
                self.addEd(self.d)
                self.shows(self.d)
            elif b == "2":
                print("\033[1;32;0m \n谢谢你的参与!\033[0m")
                self.addEd(self.e)
                self.shows(self.e)
            elif b == "3":
                self.meanC()
            else:
                print("\033[1;31;0m \n无效操作,请重新选择! \033[0m")
                continue
            return False

    def meanC(self):
        c = input("\033[4;30;0m \n请将你的想法简单描述\n\033[0m")
        with open("users.txt", 'a+', encoding='UTF-8') as f:
            f.write(c)
            f.write("\n")
        self.addEd(self.c)
        self.shows(self.c)
        return False

    def show(self, X):
        with open(X, 'r', encoding='UTF-8') as f:
            content = f.readlines()
            contentLines = ''

            for line in content:
                line = line.strip()
                if len(line) == 0:
                    continue
                contentLines = contentLines + line
            print('\033[4;30;0m 共有%d个人参与答卷 \033[0m' % len(contentLines))

    def shows(self, X):
        with open(X, 'r', encoding='UTF-8') as f:
            content = f.readlines()
            contentLines = ''

            for line in content:
                line = line.strip()
                if len(line) == 0:
                    continue
                contentLines = contentLines + line
            print('\033[4;30;0m \n目前和你相同选择的有%d个人 \033[0m' % len(contentLines))

    def addEd(self, X):
        with open(X, 'a+', encoding='UTF-8') as f:
            f.write("1")

    def main(self):
        global lambela
        print("\033[4;30;0m \n请问您对现在的生活满意吗?\033[0m")
        print("\n满意请选择 1\n不满意请选择 2\n其他情况请选择 3\n按 0 则退出系统")
        while (True):
            a = input("\033[1;33;0m \n请选择相应的序号: \033[0m")
            if a == "1":
                lambela = 1
                self.meanA()
                self.addEd(self.a)
                self.show(self.a)

            elif a == "2":
                lambela = 1
                self.meanB()
                self.addEd(self.a)
                self.show(self.a)
                return False
            elif a == "3":
                lambela = 1
                self.meanC()
                self.addEd(self.a)
                self.show(self.a)
            elif a == "0":
                lambela = 0
                print("\033[1;31;0m \n成功退出系统 \033[0m")
                break
            else:
                print("\033[1;31;0m \n无效操作,请重新选择! \033[0m")
                lambela = 1
                continue
            return False


def progress():
    for i in range(0, 101, 10):
        time.sleep(0.1)
        char_num = i // 1
        if i == 100:
            x = '\r%s%% : %s\n' % (i, '*' * char_num)
        else:
            x = '\r%s%% : %s' % (i, '*' * char_num)
        print(x, end='')


def guess():
    a = random.randint(0, 100)
    try:
        b = int(input("\n恭喜获得一次抽奖机会,猜对有奖品\n请从0-100随机输入一个整数:"))
        if b == a:
            print("\n恭喜猜对了,真厉害!")
        elif b < 0 or b > 100:
            print("\033[4;30;0m 没有根据提示输入,属于弃权参加抽奖 \033[0m \033[1;31;0m \n已退出系统 \033[0m")
        else:
            print("\n离奖品就一点点距离了,期待你的再次体验!\033[1;31;0m \n已退出系统 \033[0m")
    except ValueError:
        print("\033[4;30;0m 没有根据提示输入,属于弃权参加抽奖\033[0m \033[1;31;0m \n已退出系统 \033[0m")


if __name__ == '__main__':
    progress()
    test = userLogReg()
    test.main()
    if label != 0:
        tests = userquestionnaire()
        tests.main()
        if lambela != 0:
            guess()

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小楷科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值