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

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





