'''

选课系统开发 系统登录需要有两类用户:学生、管理员,针对不用用户提供不同功能:

学生用户 :对于学生用户来说,登陆之后有三个功能

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第三次周末大作业

''' 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个是从网上下载的国内计算机水平五六流 ...

随机推荐

自定义ActionBar完全覆盖系统的

//加载ActionBar的方法 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this ...

分享一下一款直播App开发的过程

听说有人声称开发一款直播App不仅耗时还非常昂贵,今天跟大家说道一下,开发一款直播App到底分几步走? 第一步:分解直播App的功能,我们以X客为例 视频直播功能,这是一款直播App最主要的功能,要能 ...

Liunx更新源

不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...

golang初识 - install go on ubuntu

WSL: Ubuntu 18.04 1. install go (1) unzip sudo mkdir -p /usr/local/go sudo tar zxvf go1.12.4.linux-a ...

CentOS7配置MySQL5.7主备

1:主库设置(1)修改配置文件vi /etc/my.cnf[mysqld]log-bin=master-binserver-id=1 (2)创建用户#mysql -u root -pmysql> ...

关于var time = +new Date;

文章地址:https://www.cnblogs.com/Raoh/p/4212075.html

inno setup 安装前判断进程是否存在,以及停止相应进程<转>

打包的时候遇到了这样的需求:假似用户都是傻瓜                  式操作,如果更新安装程序的时候,之前的老程序还在运行这个时候如果你去提示让用户吧老程序手动退掉也不现实. 所以当遇到这种 ...

javah 错误: 无法访问android.app.Activity问题解决

cd /Users/musictom/Documents/source/ky/app/build/intermediates/classes/debug javah -jni -classpath / ...

sql中存储过程打印返回的记录集

declare --返回结果,记录类型 ret sys_refcursor; --定义一种类型,用来存放返回的记录 type typ_row ), QUEUEID ), QUEUE_NAME )); ...

2018.08.21 NOIP模拟 unlock(模拟+找规律)

unlock 描述 经济危机席卷全球,L国也收到冲击,大量人员失业. 然而,作为L国的风云人物,X找到了自己的新工作.从下周开始,X将成为一个酒店的助理锁匠,当然,他得先向部门领导展示他的开锁能力. ...

python大作业报告(爬虫 分析 可视化)_python第四次周末大作业相关推荐

  1. python大作业报告(爬虫 分析 可视化)_爬虫综合大作业——网易云音乐《Five Hours》爬虫可视化分析...

    爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象与范围. 了解爬取对象的限制与约束. 爬取相应内容. 做数据分析与文本分析. 形成一篇文章,有说明.技术要点.有数据.有数据分析图形化展 ...

  2. python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码

    一.项目介绍 python商品评论数据采集与分析可视化系统 Flask框架.MySQL数据库. requests爬虫.可抓取指定商品评论.Echarts可视化.评论多维度分析.NLP情感分析.LDA主 ...

  3. 基于Python的招聘网站爬虫及可视化的设计与实现

    摘 要 I Abstract II 引 言 1 第1章 课题概述 2 1.1 课题内容 2 1.2 课题背景 2 1.3 课题意义 3 1.4 运行环境 3 1.5 相关技术 3 1.5.1 Pyth ...

  4. 【基于Python的招聘网站爬虫及可视化的设计与实现】

    完整下载:基于Python的招聘网站爬虫及可视化的设计与实现.docx 目录 目录 2 摘要 3 关键词 3 第一章 绪论 3 1.1 研究背景 3 1.2 研究意义 4 1.3 研究目的 6 1.4 ...

  5. python爬虫数据可视化_python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  6. python实际案例分析_将python运用到实际案例分析中(第四关作业)

    将python运用到实际案例分析中(第四关作业) 本章节主要分为两个部分,一是理解数据分析,二是分析销售数据案例析销售数据案例 一.理解数据分析 此处又分为一维数据分析.二维数据分析 一维数据分析用N ...

  7. 计算机毕业设计Python+Spark招聘推荐系统 招聘大数据分析 招聘数据采集 招聘可视化系统 求职职位推荐系统 求职大数据 招聘小程序app 招聘网站

    功能 技术 Hadoop.Vue.js.Spark.SpringBoot.echarts.阿里云短信.百度AI.支付宝沙箱支付.Python.MySQL.协同过滤推荐算法(apache-mahout) ...

  8. 利用AI+大数据的方式分析恶意样本(四十)

    文章目录 The Tangled Genealogy of IoT Malware abstract introduction dataset malware lineage graph extrac ...

  9. python爬虫分析数据_Python爬虫入门 处理数据

    BeautifulSoup 处理数据我们需要用到一个强大的第三方库--BeautifulSoup 处理数据分为两步:解析数据 和 提取数据,解析数据指将网页源代码解析成 Python 能"读 ...

  10. 基于Python股票网站数据爬虫情感可视化分析设计

    开发软件:Pycharm  开发环境: Python3.6 开发技术:Requests,Pandas,numpy,csv,Matplotlib,SnowNLP,seaborn (1)getData爬取 ...

最新文章

  1. java hasfocus_Java KeyEvent.hasNoModifiers方法代碼示例
  2. 面试题—Redis篇
  3. 如何在Kubernetes上运行Apache Flink
  4. 内存超频trfc_内存超频教学
  5. Rop 文件上传解决思路
  6. include 与 Widget
  7. 如何打造程序员专属聊天室?
  8. 苹果6用U盘越狱_iOS12.3.1 A12 支持在线越狱?作者黑人问号
  9. 取消计算机触摸板,笔记本电脑触摸板如何打开和关闭
  10. 学习UI设计书籍推荐
  11. 【scratch音乐课】天空之城:音符与节拍、消息与链表
  12. 使用计算机辅助翻译的基本流程,计算机辅助翻译不同于机器翻译,计算机辅助翻译的原理和流程...
  13. P1428 小鱼比可爱
  14. 我是歌手黄绮珊(黄妈)彭佳慧,_bin910729_新浪博客
  15. python 文字转语音 带情感_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
  16. <intrins.h>库函数
  17. 基于Docker的Python开发
  18. python 笔记--同时输入两个数字
  19. mac系统安装使用linux命令
  20. layui 表格隐藏id列

热门文章

  1. system2之:4-LVM逻辑卷管理
  2. linux Shell学习笔记第二天
  3. 常见面试题学习(5)
  4. Reactor与Netty基本操作流程总结
  5. 揭开BootStrap的神秘面纱
  6. javascript滚动条响应鼠标滑轮的实现上下滚动事件
  7. hdu-2602POJ-3624---01背包裸题
  8. 《刺猬的优雅》观后感
  9. Java8 的一些新特性总结
  10. iptables的基础知识-iptables中的ICMP