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 学生表的更多相关文章

  1. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  2. Django学习路8_学生表和班级表级联并相互查询信息

    在创建好的 app3 目录下的 models.py 中 创建对 数据表(学生和班级)的描述 分析: 学生和班级是一对多的关系 班级表的设计 class Grade(models.Model): # 设 ...

  3. sql面试题(学生表_课程表_成绩表_教师表)

    原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程 ...

  4. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  5. 2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  6. 学生表sid,sname,结果表cid,cname,学生成绩表sid,cid,cscore,最高要求的分数输出候补课程专门命名

    --1.建表SQL: --学生表: -- Createtable createtable STUDENT ( SID   NUMBERnotnull, SNAME NVARCHAR2) ) table ...

  7. python打印表格式数据,留出正确的空格和段落星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  8. SQL Server 基础之《学生表-教师表-课程表-选课表》(二)

    表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...

  9. 关于面试总结2-SQL学生表

    前言 接着上一篇https://www.cnblogs.com/yoyoketang/p/10065424.html,继续学生表SQL 1.计算每个人的平均成绩, 要求显示字段: 学号,姓名,平均成绩 ...

随机推荐

  1. Image Processing and Analysis_15_Image Registration:Mutual-Information-Based Registration of Medical Survey——2003

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  2. linux 基础7-正则表达式

    1. 基础正规表示法 1.1 以grep获取字符串: 在万用字符*是0-无限个字符,?是一个字符:在正则表达式中是0-无限个字符前一个相同字符..一个前一个相同字符 grep '^[a-z]' gre ...

  3. k2系列-安装篇

    K2介绍: K2是基于BPM的流程开发平台,它支持在net开发环境/visio/moss等不同环境下进行流程开发. K2本身部署简单,操作灵活,非常适合大中型企业流程开发和部署. K2安装步骤: 首先 ...

  4. nginx精准反向代理

    1,完全反向代理,将请求10.130.111.110服务器的请求全部转发到10.130.111.111服务器 location / { proxy_pass http://10.130.111.111 ...

  5. jajx 传参 需要 判断的 条件

    1.有没有权限. 2.数据类型 对不对 例如 id ,page  传过来时是str 类型, view中处理时需要转换成 int类型. 如果 不能转 就会报错.. 3.查询数据.数据不存在也要报错... ...

  6. redis事务机制

    目录 一.事务的实现 1.multi——开启事务 2.命令入队列 3.exec——执行事务 4.DISCARD——放弃执行 5.错误处理 二.watch命令 redis官方文档:Redis trans ...

  7. 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂

    理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...

  8. 题解 [JOI 2019 Final] 硬币收藏

    题面 解析 首先题目可以理解为把一些点放进一个框里,每个格子只能放一个. 那么显然你可以先把这个点移到框里离它最近的格子里, (这个时候格子里可以放很多个) 然后再在框里乱跑移动. 那么我们先考虑只有 ...

  9. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (dsu on tree) 题解

    先说一下dsu算法. 例题:子树众数问题. 给出一棵树,每个点有点权,求每个子树中出现次数最多的数的出现次数. 树的节点数为n,\(n \leq 500000\) 这个数据范围,\(O(n \sqrt ...

  10. fadeTo([[speed],opacity,[easing],[fn]])

    fadeTo([[speed],opacity,[easing],[fn]]) 概述 把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数.大理石机械构件维修 ...