DFSH_Cranberry 发表于 2020-10-28 12:00:14

基于python的寝室管理系统


题目:
学生信息包括
学号(唯一)姓名性别年龄寝室(一间寝室最多安排4人)
寝室编号 男生(100 101 102) 女生(200 201 202)

功能包括:
1. 可以录入学生信息
2. 录入过程中可以为其分配寝室(可选自动分配或手动分配,手动分配的话如果选择的寝室人员已满,提示重新分配)
3. 可以打印各寝室人员列表(做到表格打印是加分项)
4. 可以用学号索引打印特定学生信息,可以打印所有学生信息(做到表格打印是加分项)
5. 可以为学生调整寝室(一人调整到其他寝室,两人交换寝室等,自由发挥)
6. 程序启动时,将文件中的学生信息自动导入系统


#!/usr/bin/python# -*- coding: UTF-8 -*-

studentinformations=[]

def recover():
    global studentinformations
    f=open("f1.txt",'r')
    content1 = f.read()
    studentinformations=eval(content1)
    f.close()
    zhuye()

def zhuye():
    while True:
      printmenu()
      key=int(input("请输入功能对应的数字:"))
      if key==1:
            addstudentinformations()
      elif key==2:
            delstudentinformations()
      elif key==3:
            modifystudentinformations()
      elif key==4:
            displaystudentinformations()
      elif key==5:
            printbedroominformations()
      elif key==6:
            saveallinformations()
      elif key==7:
            print("退出系统")
            exit()
      else:
            print("抱歉,你输入的信息有误,请重新输入")



def addstudentinformations():
    global studentinformations
    global newinformation
    newinformation={}
    studentname=raw_input("请输入学生姓名:")
    studentphone=int(input("请输入手机号码:"))
    studentage=int(input("请输入学生的年龄:"))
    studentid=int(input("请输入学生的学号:"))
    for i in studentinformations:
      n=int(i['id'])
      if studentid==n:
            print("你输入的学号已经存在了")
            zhuye()
      else:
            None
    studentsex=raw_input("请输入学生的性别:")
    if studentsex=='男':
      print("男生的寝室有100、101、102")
      studentbedid=int(input("请输入学生的寝室号:"))
      if studentbedid==100 or studentbedid==101 or studentbedid==102:
            i=0
            for y in studentinformations:
                n=int(y['bedid'])
                if studentbedid==n:
                  i=i+1
                else:
                  None
            if i>=4:
                zhuye()
            else:
                None   
      else:
            print("你输入的信息有误,请重新输入")
            zhuye()
    else:
      print("女生的寝室有200、201、202")
      studentbedid=int(input("请输入学生的寝室号:"))
      if studentbedid==200 or studentbedid==201 or studentbedid==202:
            i=0
            for y in studentinformations:
                n=int(y['bedid'])
                if studentbedid==n:
                  i=i+1
                else:
                  None
            if i>=4:
                print("抱歉,该寝室已经满员")
                zhuye()
            else:
                None   
      else:
            print("你输入的信息有误,请重新输入")
            zhuye()
    newinformation['name'] = studentname
    newinformation['phone']=studentphone
    newinformation['id']=studentid
    newinformation['sex']= studentsex
    newinformation['age']= studentage
    newinformation['bedid']= studentbedid
    studentinformations.append(newinformation)
    print("信息添加成功")

def displaystudentinformations():
    print("="*30)
    print("学生的信息如下;")
    print("序号    姓名         性别      手机号码   寝室号       学生号")
    i=1
    for tempinfo in studentinformations:
      print("%d%12s%12s%12d%12d%12d" %(i, tempinfo['name'], tempinfo['sex'], tempinfo['phone'], tempinfo['bedid'],tempinfo['id']))
      i =i+1
    print("="*30)

def printbedroominformations():
    print("="*30)
    c=int(input("请输入寝室号:"))
    print("寝室      姓名         性别      电话      年龄")
    for i in studentinformations:
      y=int(i['bedid'])
      if c==y :
            print("%d%12s%12s%12d%12d" %(i['bedid'], i['name'], i['sex'], i['phone'],i['age'] ))
      else:
            None
    print("="*30)

def printmenu():
    print("="*30)
    print("   学生管理系统   ")
    print("1.添加学生信息")
    print("2.删除学生信息")
    print("3.修改学生信息")
    print("4.显示所有学生信息")
    print("5.打印寝室成员列表")
    print("6.保存所有信息")
    print("7.退出系统")
    print("="*30)

def saveallinformations():
    f=open('f1.txt','w')
    f.write(str(studentinformations))
    print("------存储完毕--------")
    f.close()

def delstudentinformations():
    c=int(input("请输入要删除的序号:"))
    studentinformations.pop(c-1)


def modifystudentinformations():
    c=int(input("更换单人寝室请按1,双人对换请按2:"))
    if c==1:
      l=int(input("请输入你的序号"))
      studentsex=studentinformations['sex']
      if studentsex=='男':
            print("男生的寝室有100、101、102")
            studentbedid=int(input("请输入你要更换的寝室:"))
            if studentbedid==100 or studentbedid==101 or studentbedid==102:
                i=0
                for y in studentinformations:
                  n=int(y['bedid'])
                  if studentbedid==n:
                        i=i+1
                  else:
                        studentinformations['bedid']=studentbedid
                if i>=4:
                  zhuye()
                else:
                  None
            else:
                print("你输入的信息有误,请重新输入")
                zhuye()
      else:
            print("女生的寝室有200、201、202")
            studentbedid=int(input("请输入你要更换的寝室:"))
            if studentbedid==200 or studentbedid==201 or studentbedid==202:
                i=0
                for y in studentinformations:
                  n=int(y['bedid'])
                  if studentbedid==n:
                        i=i+1
                  else:
                        None
                if i>=4:
                  print("抱歉,该寝室已经满员")
                  zhuye()
                else:
                  studentinformations['bedid']=studentbedid
            else:
                print("你输入的信息有误,请重新输入")
                zhuye()
      studentinformations['bedid']=studentbedid
    else:
      i=int(input("请输入一个序号:"))
      y=int(input("请输入另一个序号:"))
      m=int(studentinformations['bedid'])
      n=int(studentinformations['bedid'])
      if studentinformations['sex']==studentinformations['sex']:
            studentinformations['bedid']=n
            studentinformations['bedid']=m
            print("更换寝室成功")
      else:
            print("抱歉,你输入的信心错误")
            zhuye()
recover()   
print(studentinformations)
zhuye(<span style="background-color: rgb(255, 255, 255);">)</span>def recover():
将f1.txt的内容提取出来到studentinformations这个列表里面
def zhuye():功能页面的主页面
def addstudentinformations():添加学生信息
def displaystudentinformations():显示已经记录的学生信息
def printbedroominformations():打印相应寝室的学生信息
def printmenu():功能页面的提示信息
def saveallinformations():在退出程序的时候对信息的保存
def delstudentinformations():删除相应学生信息
def modifystudentinformations():
修改相应学生信息

这里的主要是通过一个列表包含多个字典的形式对信息进行的相应处理
显示结果:


这个是我刚开始学习Python的时候写的,仅供参考。
如果你有更好的建议,欢迎下方留言

hnyzcj 发表于 2020-10-28 14:22:54

好东西

DFSH_Cranberry 发表于 2020-10-28 14:31:58

hnyzcj 发表于 2020-10-28 14:22
好东西

我还没有写完呢,你们就在看了呀

hnyzcj 发表于 2020-10-28 18:26:17

你放出来我们就看了

DFSH_Cranberry 发表于 2020-10-29 10:03:27

hnyzcj 发表于 2020-10-28 18:26
你放出来我们就看了

挺好的,有什么好的建议可以给我这边提哦,后面我会陆续出一些python有关的示例,大家可以一起交流

南山1 发表于 2020-12-4 16:18:27

请问一下这个f1.txt里面是什么内容呢(界面吗)

DFSH_Cranberry 发表于 2020-12-8 15:31:55

南山1 发表于 2020-12-4 16:18
请问一下这个f1.txt里面是什么内容呢(界面吗)

f1.txt是一个存储的文件夹,是一个列表,所以你可以看到一个[ ],[ ]里面就是存放的相关内容。
页: [1]
查看完整版本: 基于python的寝室管理系统