python第四次周末大作业
'''
选课系统开发 系统登录需要有两类用户:学生、管理员,针对不用用户提供不同功能:
学生用户 :对于学生用户来说,登陆之后有三个功能
1、查看所有课程
2、选择课程
3、查看所选课程
4、删除已选课程
管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作。
1、创建课程
2、创建学生学生账号
3、查看所有课程
4、查看所有学生
5、查看所有学生的选课情况
'''
import os class Student:
def __init__(self, login_name, login_pwd, sname, cour_lst=None):
self.login_name = login_name
self.login_pwd = login_pwd
self.sname = sname
self.cour_lst = [] if cour_lst==None else cour_lst @staticmethod
def display_all_student():
f = open("stu", mode="r", encoding="utf-8")
i = 1
for line in f:
d = eval(line.strip())
print(i, d['sname'], d['login_name'])
i += 1
f.close() def xuanke(self): # self是当前登录的学生
while 1:
# 显示所有课程
Course.display_all_course()
num = int(input("请输入你要选择的课程:")) #
f = open("cour", mode="r", encoding="utf-8")
for i in range(num):
line = f.readline() if line.strip() in self.cour_lst: # 选过这个课
print("你已经选过当前这门课了") else: # 没选过这个课
self.cour_lst.append(line.strip())
self.write_to_file() # 把学生信息同步到文件中
print("选课成功") f.close() y = input("是否继续选课(Y/N)")
if y.upper() != "Y":
return def shanchu(self): for i in range(len(self.cour_lst)):
print(i+1, self.cour_lst[i])
num = int(input("请输入你要删除的课程"))
self.cour_lst.pop(num-1)
self.write_to_file()
print("删除成功!!!") def write_to_file(self):
with open("stu", mode="r", encoding="utf-8") as f1, \
open("stu_副本", mode="w", encoding="utf-8") as f2: for line in f1:
d = eval(line.strip())
if d['login_name'] == self.login_name and d['login_pwd'] == self.login_pwd:
f2.write(str(self.__dict__) + "\n")
else:
f2.write(line)
os.remove("stu")
os.rename("stu_副本", "stu") class Course:
def __init__(self, cname):
self.cname = cname @staticmethod #
def display_all_course():
f = open("cour", mode="r", encoding="utf-8")
i = 1
for line in f:
print(i, line.strip())
i += 1
f.close() # 让整个程序跑起来
class Client:
def __init__(self):
self.stu = None # 记录登录的学生状态 def admin_client(self): # 管理员 while 1:
menu = ("创建学生", "创建课程", "查看所有课程", "查看所有学生", "查看所有学生的选课情况", "退出")
for i in range(len(menu)):
print(i+1, menu[i]) num = input("请输入你要执行的菜单:")
if num == "":
sname = input("请输入学生的姓名:")
login_name = input("请输入学生的登录名:")
login_pwd = input("请输入学生的登录密码:")
stu = Student(login_name, login_pwd, sname)
# 把学生对象中的内容写入到文件中
f = open("stu", mode="a", encoding="utf-8")
f.write(str(stu.__dict__)+"\n")
f.flush()
f.close() elif num == "":
cname = input("请输入你的课程名称:")
f = open("cour", mode="a", encoding="utf-8")
f.write(cname+"\n")
f.flush()
f.close() elif num == "":
Course.display_all_course() # 查看所有课程
elif num == "":
Student.display_all_student() # 查看所有学生 elif num == "":
f = open("stu", mode="r", encoding="utf-8")
for line in f:
d = eval(line.strip())
print(d['sname'], d["cour_lst"])
f.close() elif num == "":
print("=========管理员退出==============")
return # exit()
else:
print("输入有误. 请重新选择菜单") def stu_client(self): while self.stu == None: # 用学生的登录状态来判断程序的走向 uname = input("请输入学生用户名:")
upwd = input("请输入学生的密码:")
f = open("stu", mode="r", encoding="utf-8")
for line in f:
# {'login_name': 'baby', 'login_pwd': '123456', 'sname': '宝宝', 'cour_lst': []}
d = eval(line.strip())
if d['login_name'] == uname and d['login_pwd'] == upwd:
print("登录成功!")
# 灵魂
self.stu = Student(d['login_name'], d['login_pwd'], d['sname'], d['cour_lst'])
break
else:
print("登录失败")
f.close() while 1:
menu = ("查看所有课程", "选课", "查看已选的课程", "删除已选课程", "退出")
for i in range(len(menu)):
print(i+1, menu[i]) num = input("请输入你要执行的菜单:")
if num == "":
Course.display_all_course()
elif num == "":
self.stu.xuanke() # 实例方法
elif num == "":
for c in self.stu.cour_lst:
print(c)
elif num == "":
self.stu.shanchu()
elif num =='':
print("退出!!!!!")
###################################
self.stu = None # 课上忘了写
###################################
return def run(self):
while 1:
print("=========欢迎进入学生选课系统=============")
print("=========1. 管理员=======================")
print("=========2. 学生=========================")
num = input("请问, 你是管理员(1)还是学生(2):")
if num == "":
self.admin_client()
elif num == "":
self.stu_client()
else:
print("您输入的内容有误. 请重新输入") c = Client()
c.run()
python第四次周末大作业的更多相关文章
- python第三次周末大作业
''' s18第三周周末⼤作业 模拟博客园系统: 1. 启动程序, 显⽰菜单列表 菜单: 1. 登录 2. 注册 3. ⽂章 4. ⽇记 5. 退出 2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以 ...
- python第二次周末大作业
题目 ''' HR人力资源管理. 1. 菜单: ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息&quo ...
- python第一次周末大作业
#############################作业############################# 1. 三次登录验证 完成用户登录验证 要求: 1. 系统自动生成4位随机数. ...
- 数据库大作业--由python+flask
这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...
- 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...
- 【大数据应用技术】作业十二|Hadoop综合大作业
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...
- OO第四单元博客作业
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
- 程设大作业xjb写——魔方复原
鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...
- [留念贴] C#开发技术期末大作业——星月之痕
明天就要去上海大学参加 2015赛季 ACM/ICPC最后一场比赛 —— EC-Final,在这之前,顺利地把期末大作业赶出来了. 在这种期末大作业10个人里面有9个是从网上下载的国内计算机水平五六流 ...
随机推荐
- Codeforces962F Simple Cycles Edges 【双连通分量】【dfs树】
题目大意: 给出一个无向图,问有哪些边只属于一个简单环. 题目分析: 如果这道题我们掌握了点双连通分量,那么结论会很显然,找到每个点双,如果一个n个点的点双正好由n条边构成,那么这些边都是可以的. 这 ...
- HDOJ 5672//模拟
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5672 题意:有一个字符串S,字符串里面只包含小写字母,问有多少个子串里面有至少K个不同的字母: 思路:还是 ...
- LOJ2557. 「CTSC2018」组合数问题
LOJ2557. 「CTSC2018」组合数问题 这道题是我第一道自己做完的题答题.考场上面我只拿了41分,完全没有经验.现在才发现其实掌握了大概的思路还是不难. 首先模拟退火,通过了1,2,6,9, ...
- PHP慢日子查询
2开启慢日志配置输出php-fpm慢日志,阀值为2秒:request_slowlog_timeout = 2slowlog = log/$pool.log.slow利用sort/uniq命令分析汇总p ...
- luogu5024 [NOIp2018]保卫王国 (动态dp)
可以直接套动态dp,但因为它询问之间相互独立,所以可以直接倍增记x转移到fa[x]的矩阵 #include<bits/stdc++.h> #define CLR(a,x) memset(a ...
- [HNOI2007]梦幻岛宝珠(背包)
给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.数据范围:N<=100;W<=2^30,并且保证每颗宝石的重量符 ...
- Keepalived+Nginx搭建主从高可用并带nginx检测
应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求. 测试环境: 搭建步骤: 1. 安装软件 在Nginx-A和Nginx-B上: ~]# ...
- 解决忘记mysql中的root用户密码问题
如果忘了数据库中的root密码,无法登陆mysql. 解决步骤: 1. 使用“--skip-grant-tables”启动数据库 ~]#systemctl stop mysql ~]#mysqld_s ...
- 简明的Python教程中的几个疑惑点分析#2
#1简明的Python教程当中第十四章Python标准库介绍中的使用sys模块 假如你没看懂sys模块这一章节,那么没关系,看下面一段代码再看简明的Python教程中的sys模块实例你将很容易看懂 代 ...
- OO第一阶段纪实
$ 0 写在前面 在DDL一次次的推动下,历经三个周期的更迭,一个月的时光匆匆而过.谨撰此博文,以记录这一段见证成长的心路历程. $ 0-0 JAVA“一天速成”没有修习过传说中的“OO先导课”,在学 ...