首页 > 编程语言 > 详细

Python练手项目--学生管理系统

时间:2020-12-11 22:51:21      阅读:37      评论:0      收藏:0      [点我收藏+]

主函数:

#菜单函数
def menu():
     print(‘***************************学生信息管理系统*********************************‘)
    print(‘-------------------------------功能菜单-------------------------------------‘)
    print(‘\t\t\t\t\t\t1、录入学生信息‘)
    print(‘\t\t\t\t\t\t2、查找学生信息‘)
    print(‘\t\t\t\t\t\t3、删除学生信息‘)
    print(‘\t\t\t\t\t\t4、修改学生信息‘)
    print(‘\t\t\t\t\t\t5、排序‘)
    print(‘\t\t\t\t\t\t6、统计学生总数‘)
    print(‘\t\t\t\t\t\t7、显示所有学生信息‘)
    print(‘\t\t\t\t\t\t0、退出‘)
    print(‘***************************************************************************‘)
#主函数
def main():
    while True:
        menu() #调用菜单函数
        choice = input(‘请输入你选择的功能:‘)
        if choice in [0,1,2,3,4,5,6,7]:
            if choice == ‘0‘:
                answer = input(‘您确定要退出系统吗? y/n‘)
                if answer == ‘y‘ or answer == ‘Y‘:
                    break
                elif answer ==‘n‘ or answer ==‘N‘:
                    continue
                else:
                    print(‘您的输入有误!请重新输入‘)
             elif choice == ‘1‘:
                insert()
            elif choice == ‘2‘:
                search()
            elif choice == ‘3‘:
                delete()
            elif choice == ‘4‘:
                modify()
            elif choice == ‘5‘:
                sort()
            elif choice == ‘6‘:
                total()
            elif choice == ‘7‘:
                show()
            else:
                print(‘您的输入有误,请重新输入!‘)
                
                
if __name__ == ‘__main__‘:
    main()

插入函数

def insert():
    student_list[] #初始化空列表
    while True:
        id = input(‘请输入学生id(如1001):‘)
        if not id : #如果id为空
            break
        try:
            name = input(‘请输入姓名‘)
            english = input(‘请输入英语成绩‘)
            python = input(‘请输入python成绩‘)
            java = input(‘请输入java成绩‘)
        except:
            print(‘输入无效,请输入整数‘)
            continue
        student = {‘id‘:id,‘name‘:name,‘english‘:english,‘python‘:python,‘java‘:java}
        studnet_list.append(student)
        answer = input(‘是否继续添加学生信息,y/n‘)
        if answer == ‘y‘ or answer == ‘Y‘:
            continue
        elif answer == ‘n‘ or answer == ‘N‘:
            break
        else:
            print(‘您的输入有误,请重新输入‘)
    save(student_list)
    print(‘学生信息保存成功‘)
def save(lst):
    try:
       stu_txt=open(filename,‘a‘,encoding=‘utf-8‘) #如果没有文件会追加改文件,filename是全局变量
    except:
        stu_txt=open(filename,‘w‘,encoding=‘utf-8‘)
    for item in lst:
    	stu_txt.write(str(item)+‘\n‘)
    	stu_txt.close()
   

删除函数

def delete():
    while True:
        student_id=input(‘请输入要删除的学生id:‘)
        if studnet_id != ‘‘:
            if os.path.exists(filename):
                with open(filename,‘r‘,encoding=‘utf-8‘) as rfile:
                    student_lst=rfile.readlines()
        
             else:
                student_lst=[]
             flag=False 
             if student_lst:
                 d={}
                 for item in student_lst:
                      d=dict(eval(item))
    		          if d[id] == studnet_id:
                          flag=True
                       else:
                           with open(filename,‘w‘,encoding=‘utf-8‘) as wfile:
                                wfile.write(str(d)+‘\n)‘
              if flag:
                 print(f‘id为{student_id}的学生信息已经被删除‘)
              else:
                 print(f‘没有找到id为{student_id}的学生信息‘)
                      
        else:
             print(‘您的输入有误,请重新输入‘)
             delete()
        show() #重新显示所有学生信息
        answer= input(‘是否继续删除? y/n‘)
        if answer == ‘y‘ or answer==‘y‘:
           continue
        else:
           break

修改学生信息

def modify():
    show()
    with open(filename,‘r‘,encoding=‘utf-8‘) as rflie:
        student=rflie.readlines()
        student_id=input(‘请输入要修改的学生id‘)
        with open(filename,‘w‘,encoding=‘utf-8‘) as wfile:
            for item in student:
                d=dict(eval(item))
                if d[‘id‘] == student_id:
                    while True:
                        try:
                            d[‘name‘]=input(‘请输入学生姓名‘)
                            d[‘english‘]=input(‘请输入学生英语成绩:‘)
                            d[‘python‘]=input(‘请输入学生python成绩:‘)
                            d[‘java‘]=input(‘请输入学生java成绩:‘)
                        except:
                             print(‘您的输入有误!‘)
                        else:
                             break
                   wfile.write(str(d)+‘\n‘)
                else:
                    wfile.write(str(d)+‘\n‘)
            answer=input(‘是否继续修改 y/n‘)
            if answer==‘y‘ or answer== ‘n‘:
                modify()
            
                

查找学生信息

def search():
    student_querry=[]
    while True:
        id=‘‘
        name=‘‘
        if os.path.exists(filename):
            mode=input(‘按id查找请输入1,按name查找请输入2‘)
            if mode == ‘1‘
               id=input(‘请输入学生的的id:‘)
            elif mode == ‘2‘:
                name=input(‘请输入学生的的姓名:‘)
            else:
                print(‘您的输入有误,请重新输入‘)
                search()
            with open(filename,‘r‘,encoding=‘utf-8‘)as rfile:
                students=rfile.readlines
                for item in studnets:
                    d=dict(eval(item))
                    if d[‘id‘] ==id :
                        student_querry.append(d)
                    elif d[‘name‘]==name:
                        studnet_querry.append(d)
                    else:
                        print(‘查无此人‘)
            show_sutdent(studnet_querry)
            studnet_querry.clear()
            answer=input(‘是否继续,y/n ‘)
            if answer==‘y‘ or answer==‘Y‘:
                continue
            else:
                break
        else:
            return
def show_student(list):
    format_title = ‘{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}‘
    format_date = ‘{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}‘
    if len(list) == 0:
        print("查无此人")
        return
    print(format_title.format(‘ID‘, ‘姓名‘, ‘英语成绩‘, ‘python成绩‘, ‘java成绩‘, ‘总成绩‘))
    for item in list:
        print(format_date.format(item.get(‘id‘),
                                 item.get(‘name‘),
                                 item.get(‘english‘),
                                 item.get(‘python‘),
                                 item.get(‘java‘),
                                 item.get(‘english‘) + item.get(‘python‘) + item.get(‘java‘)
                                 ))

统计学生信息

def total():    
    if os.path.exists(filename):
        with open(filename,‘r‘,encoding=‘utf-8‘) as rfile:
            students=rfile.readlines()
            if students:
                print(f‘一共有{len(students)}名学生‘)
            else:
                print(‘无学生信息‘)
    else:
        print(‘无学生信息‘)

学生成绩排序

def sort():
    show()
    with open(filename,‘r‘,encoding=‘utf-8‘) as rfile:
        student_list=rfile.readlines()
    student_new=[]
    for item in student_list:
        d=dict(eval(item))
        student_new.append(d)
    asc_or_desc=input(‘升序or降序,1/2‘)
    if asc_or_desc==‘1‘:
        asc_or_desc_bool=False
    elif asc_or_desc==‘2‘:
        asc_or_desc_bool=True
    else:
        print(‘您的输入有误,请重新输入‘)
        sort()
    mode=input(‘请选择排序方式,1、按英语成绩排序;2、按python成绩排序; 3、按java成绩排序‘)
    if mode==‘1‘:
        student_new.sort(key=lambda x: int(x[‘english‘]) ,reverse=asc_or_desc_bool)

    elif mode==‘2‘:
        student_new.sort(key=lambda x: int(x[‘python‘]), reverse=asc_or_desc_bool)
    elif mode==‘3‘:
        student_new.sort(key=lambda x: int(x[‘python‘]), reverse=asc_or_desc_bool)
    else:
        print(‘您的输入有误,请重新输入‘)
        sort()
    show_student(student_new)

显示所有学生信息

def show():
    sutdnet_list[]
    if os.path.exists(filename):
        with open(filename,‘r‘,encoding=‘utf-8‘) as rfile:
            studnets=rfile.readlines()
            for item in students:
                student_list.append(eval(item))
            if student_list:
                show_student(student_list)
    else:
        print(‘无学生信息‘)

Python练手项目--学生管理系统

原文:https://www.cnblogs.com/feixiong1/p/14122913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!