一.登录注册界面
#用户注册登录的信息需要保存到本地,可以用列表保存多个用户的数据,每个用户的数据用字典进行保存,格式如下:
#[{'user_name':'用户名1','password':'密码1'},
#{'user_name':'用户名2','password':'密码2'},
#......]
#导入登录注册界面后学生信息管理系统的模块
import student_system
#导入文件操作相关的功能
import file_manager
#声明全局变量
key_user_name='user_name'
key_password='password'
#显示登录界面(主界面)
show_main_page()
#====================主页
def show_main_page():
while True:
print(file_manager.read_text_file('login.txt'))#将主界面放在txt文档里,方便以后修改
value = input('请选择(1-3):')
#1.退出
if value == '3':
break
#2.注册
elif value =='2':
register()
elif value == '1':
#print('登录')
user_name=login()
if user_name:
#如果登录成功就进入管理系统
student_system.user_name=user_name
student_system.main_page()
else:
print('输入有误,请重新选择')
#====================注册
def register():
#输入用户名
while True:
#1.输入用户名
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("请输入密码(6-16位):")
if not 6 <= len(password) <= 16:
print('密码输入有误,请重新输入!')
continue
re_password = input('确认密码:')
if password != re_password:
print('和第一次输入的密码不一样,请重新输入')
continue#从头开始
break
#3.保存用户名和密码
all_user = get_all_user()
all_user.append({key_user_name:user_name,key_password:password})
re=file_manager.write_json_file(file_name,all_user)
if re:
print('注册成功')
else:
print('注册失败')
#====================获取所有的用户
def get_all_user():
all_user = file_manager.read_json_file(file_name)
if all_user:
return all_user
return []
#====================判断指定用户名是否已经注册过
def is_register(user_name):
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]==user_name:
return True
return False
二.学生信息管理界面
"""
一个账号对应管理不同的学生---不同的用户对应不同的json文件
json文件中的格式:
{
'name':'',
'number':个数,
'all_students':[
{'name':,'age':,'tel':,'id':}
]
}
"""
import file_manager
user_name=''
key_number = 'number'
key_all_students='all_students'
key_name='name'
key_age='age'
key_tel='tel'
key_id='id'
#================主页
def main_page():
while True:
print(file_manager.read_text_file('system.txt'))#同样,可以把界面放在txt文件中,方便修改
value = input('请选择(1-5):')
#返回
if value=='5':
break
elif value=='1':
add_student()
elif value=='2':
find_student()
elif value=='3':
delete_student()
elif value=='4':
revise_student()
else:
print('输入有误,重新输入!')
#================获取文件中的内容
def get_system_info():
system_info=file_manager.read_json_file(user_name+'.json')
if system_info:
return system_info
return {}
#===================添加学生
def add_student():
while True:
#1.输入信息
name=input('姓名:')
age=input('年龄:')
tel=input('电话:')
#2.产生id
id,number = creat_id()
#3.创建学生
stu = {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(stu)
#5.保存到文件中
system_info[key_all_students]=all_student
system_info[key_number]=number
re =file_manager.write_json_file(user_name+'.json',system_info)
if re:
print('添加成功!')
else:
print('添加失败!')
print('1.继续添加')
print('2.返回')
value=input('请选择(1/2):')
if value=='1':
continue
else:
break
#===================产生学号
def creat_id():
"""
先知道个数,产生学号
:return:
"""
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 find_student():
print('1.查看所有的学生')
print('2.根据姓名查找学生')
print('3.根据学号查找学生')
all_students = get_system_info().get(key_all_students, [])
if not all_students:
print('目前没有学生')
return
value=input('请选择(1-3):')
#查所有的学生
if value=='1':
for stu in all_students:
print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
stu[key_id], stu[key_age], stu[key_tel]))
elif value=='2':
name=input('姓名')
for stu in all_students:
if name==stu[key_name]:
print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
stu[key_id], stu[key_age], stu[key_tel]))
elif value=='3':
id = input('学号:')
for stu in all_students:
if id==stu[key_id]:
print('姓名:%s 学号:%s 年龄:%s 电话:%s' % (stu[key_name], \
stu[key_id], stu[key_age], stu[key_tel]))
break#学号唯一,只要找到就不用再找了
#======================删除学生
def delete_student():
print('1.根据姓名删除学生')
print('2.根据编号删除学生')
system_info = get_system_info()
all_students=system_info.get(key_all_students)
numbers=get_system_info().get(key_number)
value=int(input('请选择(1-2):'))
if value==1:
while True:
del_name=input('请输入要删除的学生姓名:')
for student in all_students:
if del_name == student[key_name]:
print(student)
print('请确认是否删除?(Y/N)')
value1=input('请选择:')
if value1=='Y':
all_students.remove(student)
break
else:
continue
system_info[key_all_students] = all_students
re = file_manager.write_json_file(user_name+'.json',system_info)
if re:
print('删除成功!')
else:
print('删除失败!')
if value==2:
while True:
del_num=input('请输入要删除的学生编号:')
for student in all_students:
if del_num == student[key_number]:
print(student)
print('请确认是否删除?(Y/N)')
value1=input('请选择:')
if value1=='Y':
all_students.remove(student)
break
else:
continue
system_info[key_all_students] = all_students
re = file_manager.write_json_file(user_name+'.json',system_info)
if re:
print('删除成功!')
else:
print('删除失败!')
#==================修改学生
def revise_student():
while True:
system_info=get_system_info()
all_student=system_info.get(key_all_students)
revise_name=input('请输入要修改的学生姓名:')
for student in all_student:
if revise_name==student[key_name]:
revise_tel=input('请输入修改后的电话:')
student[key_tel]=revise_tel
print(all_student)
system_info[key_all_students]=all_student
re=file_manager.write_json_file(user_name+'.json',system_info)
if re:
print('修改成功!')
else:
print('修改失败!')
print('1.继续修改')
print('2.返回')
value = int(input('请选择(1/2):'))
if value==1:
continue
else:
break
三.文件操作相关的功能
import json
#==================内容写入json文件
def write_json_file(file_name,content):
"""
将内容写入json文件中
:param file_name: 文件名
:param content: 要写的内容
:return: 是否写入成功
"""
try:
with open('./files/'+file_name,'w',encoding='utf-8') as f:
json.dump(content,f)
return True
except:
return False
#==================读取json文件内容
def read_json_file(file_name):
"""
读取json文件的内容
:param file_name:文件名
:return:文件内容
"""
try:
with open('./files/'+file_name,encoding='utf-8') as f:
return json.load(f)
except:
return None
#==================获取txt文件内容
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 FileNotFoundError:
print('文件不存在')
return None
总结:
首先,拿到一个项目时,先分析一下项目由哪些部分组成的,先构思大的框架,然后把功能按模块进行填充,先整体后局部,不要妄想一口吃个胖子,一部分一部分进行.其中,遇到一些经常要用到的代码,可以封装成模块,或者写成函数.写函数的时候先不声明,先写调用,按函数的功能取名,在声明函数时,可以先不传参数,等写函数体时需要传数据,再写参数.写好一个功能可以先检测,以免后期不知道错误的出处.注意,可以留好接口,以备后期进行修改.声明全局变量可以帮助提高输写的效率.
网友评论