2020-03-03学生管理系统-python语言,由思路到代码

首先这个学生管理系统具有数据存储功能,考察了文件的存储和内容的提取,实现了多页面之间利用函数进行跳转,用户密码的加密,但是因为还没有涉及到存储到数据库,实现的仅是较少数量的学生信息的增删改查功能,非常适合学完python基础的朋友进行练手,很考验逻辑性。写这个页面的要注意的是:并不是一个页面一个页面写的,而是需要来回切换。

第一部分:

以下先用思维导图展示代码的思考过程。


第二部分

接下来是每个页面的代码:

首先:第一个页面:

在index.py页面。也就是首页:

要实现主页面:


import sys

import file_manager

name =''

import model

import student_manager

def register():

data = file_manager.read_json('data.json.txt',{})

while True:

teacher_name =input('请输入账号:(3-6位)')

if not 3 <=len(teacher_name) <=6:

print('账号不符合要求,请重新输入')

else:

break

    if teacher_namein data:

print('注册失败!该用户已存在')

return

    while True:

password =input('请输入密码:(6-12位)')

if not 6 <=len(password) <=12:

print('密码不符合要求,请重新输入')

else:

break

    t = model.Teacher(teacher_name,password)

data[t.name] = t.password

#data[teacher_name] =password

    file_manager.write_json('data.json.txt', data)

def login():

data = data = file_manager.read_json('data.json.txt',{})

teacher_name  =input('请输入老师账号:')

if teacher_namenot in data:

print('登录失败!该账号没有注册')

return

    password =input('请输入密码')

import tools

if data[teacher_name] == tools.encrypt_password(password):

student_manager.name = teacher_name

student_manager.show_manager()

else:

print('密码错误,登录失败')

def start():

file_manager.base_dir ='./files/'

    content = file_manager.read_file('welcome')

while True:

operator=input(content +'\n 请选择1-3:')

if operator =='1':

login()

elif operator =='2':

register()

elif operator =='3':

sys.exit(0)

else:

print('输入有误!')

if __name__ =='__main__':

start()


第二个页面

第二个页面:我命名为file_manager.py

功能主要为存储和读取内容的页面:

base_dir ='./files/'

def read_file(file_name):

try:

with open( base_dir + file_name,'r',encoding ='utf8')as file:

content = file.read()

return content

except FileNotFoundError:

print('文件不存在')

def write_json(file_name,data):

with open( base_dir + file_name,'w',encoding ='utf8')as file:

import json

json.dump(data,file)

def read_json(file_name,default_data):

try:

with open(base_dir + file_name,'r',encoding ='utf8')as file:

import json

return json.load(file)

except FileNotFoundError:

print('文件不存在')

print(default_data)


第三个页面:我命名为students_manager.py

import file_manager

import model

name =''

def add_student():

x = file_manager.read_json(name +'.json',{})

if not x:

students  = []

else:

students = x['all_students']

while True:

s_name =input('请输入学生名字')

s_age =input('请输入年龄')

s_gender =input('请输入学生性别')

s_tel =input('请输入电话号码')

#创建student对象

        s = model.Student(s_name,s_age,s_gender,s_tel)

students.append(s.__dict__)

data = {'all_students':students,'num':len(students)}

print(data)

file_manager.write_json(name+'.json',data)

choice =input('添加成功!\n1.继续\n2返回\n请选择(1-2)')

if choice ==2:

break

def show_student():

x =input('1.查看所有学生\n2.根据姓名查找\n3.根据学号查找\n其他:返回\n请选择:')

y = file_manager.read_json(name +'.json',{})

students = y.get('all_students',[])

if not students:

print('该老师还没有学员,请添加学员')

return

    key = value =''

    if x =='1':

pass

    elif x =='2':

value =input('请输入学员姓名:')

key ='name'

    elif x =='3':

value =input('请输入学员的id:')

key ='s_id'

    else:

return

    students =filter(lambda s:s.get(key,'') == value,students)

if not students:

print('未找到学员')

for studentin students:

print('学号:{s_id},姓名:{name},性别:{gender},年龄:{age},电话{tel}'.format(**student))

def modify_student():

pass

def del_student():

y = file_manager.read_json(name +'.json', {})

all_students = y.get('all_students',[])

key = value =''

    if not all_students:

print('该老师还没有学员,请添加学员')

return

    num =input('1.按姓名删\n2.按学号删\n其他:返回\n请选择:')

if num =='1':

key =='name'

        value =input('请输入要删除的学生名字:')

elif num =='2':

key ='s_id'

        value =input('请输入要删除的学生名字:')

else:

return

    students =list(filter(lambda s:s.get(key,'') == value,all_students))

if not students:

print('没有找到对应的学生')

return

    for i,sin enumerate(students):

print('{x} 学号:{s_id}, 姓名:{name},性别:{gender},年龄{age},电话{tel}'.format(x=i,**s))

n =input('请输入需要删除的学生的标号(0-{}),q-返回:'.format(i))

if not n.isdigit()or not 0 <=int(n) <= i:

print('输入的内容不合法')

return

    all_students.remove(students[int(n)])

y['all_students'] = all_students

file_manager.write_json(name +'.json',y)

def show_manager():

# print('显示管理页面')

    content = file_manager.read_file('students_page.txt')%name

print(content)

while True:

operator =input('请选择(1-5):')

if operator =='1':

add_student()

elif operator =='2':

show_student()

elif operator =='3':

modify_student()

elif operator =='4':

del_student()

elif operator =='5':

break

        else:

print('输入有误')

 第四个页面

我命名为tools.py

import hashlib

def encrypt_password(passwd,x='hfgber'):

h = hashlib.sha256 ()

h.update(passwd.encode('utf8'))

h.update(x.encode('utf8'))

return h.hexdigest()


第五个页面

命名为 model.py

import model

class Teacher(object):

def __init__(self,name,password):

import tools

self.name = name

self.password = tools.encrypt_password(password)

class Student(object):

def __init__(self,name,age,gender,tel):

self.name = name

self.age = age

self.gender = gender

self.tel =tel

#student 对象



还有用到的两个txt文件内容:

文件1.students_pages.py

🌹🌹欢迎%s老师进入学生管理系统:

❤️1.添加学生

❤️2.查看学生

❤️3.修改学生信息

❤️4.删除学生

❤️5.返回

文件2.welcome


版权声明:本文为CSDN博主「BraveYangerer」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/BraveYangerer/article/details/104623904

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容