python 学生表
1,主页面函数(01-mainpage.py)
import json
import file_manager
import student_system
''' '''
# 全局变量
file_name='user_info.json'
key_user_name='user_name'
key_password='password'
#=====================注册=======================
'''
为了下次打开系统的时候能够正常登录,注册成功的信息需要保存。保存用户名和密码
一个系统可以注册多个用户,可以用列表保存多个用户,通过字典来保存每个用户的用户名和密码
[
{'user_name':用户名,'password':密码}
]
保存到user_info.json中
'''
#
def is_register(username):
all_user = file_manager.read_json_file(file_name)
if not all_user:
return False
for user in all_user:
if user[key_user_name]==username:
return True
return False
def get_all_user():
if not file_manager.read_json_file(file_name):
return []
return file_manager.read_json_file(file_name)
def register():
while True:
user_name=input('请输入用户名(3~10位)')
# 判断是否符合格式要求
if not 3<=len(user_name)<=10:
print('重新输入')
continue
# 判断是否被注册过
if is_register(user_name):
print('用户名%s已被注册,请重新输入' % (user_name))
continue
print('用户名可用')
break
# 2密码
while True:
password = input('请输入密码:')
if not 6 <= len(password) <= 16:
print('密码输入有误')
continue
re_password = input('确认密码')
if password != re_password:
print('密码不同,请重新输入')
continue
break
all_user=get_all_user()
all_user.append({key_user_name:user_name,key_password:password})
file_manager.write_json_file(all_user,file_name)
print('zhucechenggong')
#============================登录=========================
def loging():
user_name=input('请输入用户名')
password=input('请输入密码')
# 用户名是否注册
all_user=get_all_user()
for user in all_user:
if user[key_user_name]==user_name:
if user[key_password]==password:
print('登陆成功')
return user_name
print('密码错误')
return None
print('用户名未注册')
return None
#=====================主页=======================
def show_main_page():
while True:
print(file_manager.read_text_file('loging.txt'))
value=int(input('请选择(1~3):'))
#1,退出
if value==3:
break
#2,注册
elif value==2:
register()
#3,登录
elif value==1:
user_name=loging()
if user_name:
student_system.user_name=user_name
student_system.main_page()
else:
print('重新选择')
if __name__ == '__main__':
show_main_page()
2,学生系统函数(student_system.py)
import file_manager
user_name=''
#====================ADD===========
'''
一个账号对应管理不同的学生-----不同用户对应不同json文件
json格式
{'name':'','number':个数,
'all_students':[
{'name': ,'age': ,'tel' ,}
]
}
'''
key_number='number'
key_all_students='all_students'
key_name='name'
key_age='age'
key_tel='tel'
key_id='id'
def get_system_info():
system_info=file_manager.read_json_file(user_name+'.json')
if system_info:
return system_info
return {}
def creat_id():
system_info=get_system_info()
number=system_info.get(key_number,0)
number+=1
id='stu'+str(number).rjust(4,'0')
return id,number
#更新系统中的数据
def add_student():
while True:
name=input('姓名')
age=input('年龄')
tel=input('电话')
#id
id,number=creat_id()
#3创建学生
student={key_name:name,key_age:age,key_tel:tel,key_id:id}
#4保存学生信息
system_info=get_system_info()
all_student=system_info.get(key_all_students,[])
all_student.append(student)
#5保存
system_info[key_all_students]=all_student
system_info[key_number]=number
re=file_manager.write_json_file(system_info,user_name+'.json')
if re:
print('添加成功')
else:
print('添加失败')
print('1,继续添加','2,返回')
x=input('选择')
if x=='1':
continue
elif x=='2':
break
# ====================查找学生===================
def find_student():
while True:
print('1,查看所有学生')
print('2,根据姓名查找学生')
print('3,根据学号查找学生')
system_info=get_system_info()
all_students=system_info[key_all_students]
if not all_students:
print('no stu')
return
value = input('请选择:')
if value=='1':
for student in all_students:
print('学号:%s,姓名:%s,年龄:%s,电话:%s'\
%(student[key_id],student[key_name],student[key_age],student[key_tel]))
if value=='2':
name = input('姓名')
for student in all_students:
if name==student[key_name]:
print('学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (student[key_id], student[key_name], student[key_age], student[key_tel]))
if value=='3':
id = input('学号')
for student in all_students:
if id==student[key_id]:
print('学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (student[key_id], student[key_name], student[key_age], student[key_tel]))
print('1,继续', '2,返回')
x = input('选择')
if x == '1':
continue
elif x == '2':
break
# ===========================删除学生===========================
def delete():
while True:
print('1,根据姓名删除学生')
print('2,根据学号删除学生')
wait_dele=[]
system_info=get_system_info()
all_student=system_info.get(key_all_students,[])
value=input('请选择:')
if value=='1':
name = input('姓名')
count=0
for stu in all_student[:]:
if stu[key_name]==name:
count += 1
wait_dele.append(stu)
print('%d,学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (count,stu[key_id], stu[key_name], stu[key_age], stu[key_tel]))
option=int(input('请选择删除项:'))
all_student.remove(wait_dele[option-1])
system_info[key_all_students]=all_student
file_manager.write_json_file(system_info,user_name+'.json')
if value == '2':
id = input('学号')
for stu in all_student[:]:
if stu[key_id] == id:
print('学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (stu[key_id], stu[key_name], stu[key_age], stu[key_tel]))
dele_stu=stu
option = input('是否删除:1,是;2,否')
if option==1:
all_student.remove(dele_stu)
system_info[key_all_students] = all_student
file_manager.write_json_file(system_info, user_name + '.json')
print('1,继续', '2,返回')
x = input('选择')
if x == '1':
continue
elif x == '2':
break
# ==========================修改=======================================
def revise():
while True:
print('1,根据姓名修改学生')
print('2,根据学号修改学生')
wait_revise=[]
system_info = get_system_info()
all_student = system_info.get(key_all_students, [])
value = input('请选择:')
if value == '1':
name = input('姓名')
count = 0
index=-1
for stu in all_student[:]:
index+=1
if stu[key_name] == name:
count += 1
wait_revise.append(index)
print('%d,学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (count, stu[key_id], stu[key_name], stu[key_age], stu[key_tel]))
option = int(input('请选择修改项:'))
index=wait_revise[option-1]
name = input('姓名')
age = input('年龄')
tel = input('电话')
all_student[index][key_name]=name
all_student[index][key_age] = age
all_student[index][key_tel] = tel
system_info[key_all_students] = all_student
file_manager.write_json_file(system_info, user_name + '.json')
if value == '2':
id = input('学号')
index1=-1
for stu in all_student[:]:
index1+=1
if stu[key_id] == id:
print('学号:%s,姓名:%s,年龄:%s,电话:%s' \
% (stu[key_id], stu[key_name], stu[key_age], stu[key_tel]))
index = index1
option = input('是否修改:1,是;2,否')
if option == 1:
name = input('姓名')
age = input('年龄')
tel = input('电话')
all_student[index][key_name] = name
all_student[index][key_age] = age
all_student[index][key_tel] = tel
system_info[key_all_students] = all_student
file_manager.write_json_file(system_info, user_name + '.json')
print('1,继续', '2,返回')
x = input('选择')
if x == '1':
continue
elif x == '2':
break
#====================zhuye================
def main_page():
while True:
print(file_manager.read_text_file('system.txt'))
value = int(input('请选择(1~5):'))
if value ==5:
break
elif value ==1: #添加
add_student()
elif value ==2: #查找
find_student()
elif value == 3: # 删除
delete()
elif value == 4: # 修改
revise()
3,自定义模块函数(file_manager.py)
import json
''' '''
def read_text_file(file_name):
'''
获取文本文件的内容
:param file_name:文件名
:return:
'''
try:
with open('./files/'+file_name,encoding='utf-8') as f:
return f.read()
except:
print('文件不存在')
return None
def write_json_file(content,filename):
'''
写入json文件
:param filename: 文件名
:param content:写入内容
:return:
'''
try:
with open('./files/'+filename,'w',encoding='utf-8') as f:
json.dump(content,f)
return True
except:
return None
def read_json_file(filename):
'''
读json文件
:param filename:
:return:
'''
try:
with open('./files/'+filename,encoding='utf-8') as f:
return json.load(f)
except:
return None
python 学生表的更多相关文章
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- Django学习路8_学生表和班级表级联并相互查询信息
在创建好的 app3 目录下的 models.py 中 创建对 数据表(学生和班级)的描述 分析: 学生和班级是一对多的关系 班级表的设计 class Grade(models.Model): # 设 ...
- sql面试题(学生表_课程表_成绩表_教师表)
原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程 ...
- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- 2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- 学生表sid,sname,结果表cid,cname,学生成绩表sid,cid,cscore,最高要求的分数输出候补课程专门命名
--1.建表SQL: --学生表: -- Createtable createtable STUDENT ( SID NUMBERnotnull, SNAME NVARCHAR2) ) table ...
- python打印表格式数据,留出正确的空格和段落星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
- SQL Server 基础之《学生表-教师表-课程表-选课表》(二)
表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...
- 关于面试总结2-SQL学生表
前言 接着上一篇https://www.cnblogs.com/yoyoketang/p/10065424.html,继续学生表SQL 1.计算每个人的平均成绩, 要求显示字段: 学号,姓名,平均成绩 ...
随机推荐
- Image Processing and Analysis_15_Image Registration:Mutual-Information-Based Registration of Medical Survey——2003
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- linux 基础7-正则表达式
1. 基础正规表示法 1.1 以grep获取字符串: 在万用字符*是0-无限个字符,?是一个字符:在正则表达式中是0-无限个字符前一个相同字符..一个前一个相同字符 grep '^[a-z]' gre ...
- k2系列-安装篇
K2介绍: K2是基于BPM的流程开发平台,它支持在net开发环境/visio/moss等不同环境下进行流程开发. K2本身部署简单,操作灵活,非常适合大中型企业流程开发和部署. K2安装步骤: 首先 ...
- nginx精准反向代理
1,完全反向代理,将请求10.130.111.110服务器的请求全部转发到10.130.111.111服务器 location / { proxy_pass http://10.130.111.111 ...
- jajx 传参 需要 判断的 条件
1.有没有权限. 2.数据类型 对不对 例如 id ,page 传过来时是str 类型, view中处理时需要转换成 int类型. 如果 不能转 就会报错.. 3.查询数据.数据不存在也要报错... ...
- redis事务机制
目录 一.事务的实现 1.multi——开启事务 2.命令入队列 3.exec——执行事务 4.DISCARD——放弃执行 5.错误处理 二.watch命令 redis官方文档:Redis trans ...
- 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂
理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...
- 题解 [JOI 2019 Final] 硬币收藏
题面 解析 首先题目可以理解为把一些点放进一个框里,每个格子只能放一个. 那么显然你可以先把这个点移到框里离它最近的格子里, (这个时候格子里可以放很多个) 然后再在框里乱跑移动. 那么我们先考虑只有 ...
- CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (dsu on tree) 题解
先说一下dsu算法. 例题:子树众数问题. 给出一棵树,每个点有点权,求每个子树中出现次数最多的数的出现次数. 树的节点数为n,\(n \leq 500000\) 这个数据范围,\(O(n \sqrt ...
- fadeTo([[speed],opacity,[easing],[fn]])
fadeTo([[speed],opacity,[easing],[fn]]) 概述 把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数.大理石机械构件维修 ...