Python信息管理系统
- 刚学习Python,写了一个十分简易的信息管理系统。
环境
- Python3.7.4,安装教程可以参考Python安装
- PyCharm,安装教程可以参考PyCharm安装
功能
- 主要功能如下:
- 登录模块。
- 根据用户信息判断用户角色。
- 调用聚合网API,获取星座运势。
项目展示
文件结构
- 文件结构如下:
- data:数据的初始化,存储用户账号密码信息。
- DateUtil:工具类,获取用户属相、星座、年龄、图书信息等信息。
- error:异常类。
- main:主函数入口。
- user:用户类。
代码部分
user代码
from haicoder.DateUtil import DateUtil
class User():
def __init__(self, name, password):
self.name = name
self.password = password
def login(self,name,password):
if name ==self.name and password ==self.password:
return self
class Student(User):
def __init__(self,name,password,year=0,month=0,date=0,group="无",source=0):
super().__init__(name,password)
self.year = year
self.month = month
self.date = date
self.group = group
self.source = source
self.util = DateUtil()
def updateStudentInfo(self):
print("======更新信息=======")
while True:
try:
year = int(input("请输入出生年份:"))
break
except ValueError:
print("年份的输入格式错误,请输入数字:")
while True:
try:
month = int(input("请输入出生月份:"))
break
except ValueError:
print("月份的输入格式错误,请输入数字:")
while True:
try:
date = int(input("请输入日期:"))
break
except ValueError:
print("日期的输入格式错误,请输入数字:")
while True:
try:
group = int(input("请输入年级:"))
break
except ValueError:
print("年级的输入格式错误,请输入数字:")
while True:
try:
source = int(input("请输入分数:"))
break
except ValueError:
print("分数的输入格式错误,请输入数字:")
self.year = year
self.month = month
self.date = date
self.group = group
self.source = source
print("添加成功!")
def showStudentInfo(self):
print("======显示学生信息======")
sx = self.util.GetSX(self.year)
xz = self.util.GetXZ(self.month,self.date)
age = self.util.GetAge(self.year)
xzys = self.util.GetXZYS(xz)
print("学生姓名:%s,class:%s,属向:%s,星座:%s"%(self.name,self.group,sx,xz))
print("年龄:%s"%age)
print("分数为:%s"%self.source)
print("星座运势:%s"%xzys)
class Teacher(User):
def __init__(self,name,password,subject=0):
super().__init__(name, password)
self.subject=subject
def showTeacherInfo(self):
print("Teacher name:%s,subject:%s,"%(self.name,self.subject))
data代码
from haicoder.user import Student
from haicoder.user import Teacher
from haicoder.error import UserError
class Group():
def __init__(self):
self.data =[
Student("张三",'123',1997,9,14,"six",90),
Student("李四", '123'),
Student("王五", '123'),
Teacher("Tony",'123')]
def check(self,inputUserName,inputPassword):
for user in self.data:
u = user.login(inputUserName,inputPassword)
if u:
return u
else:
raise UserError("用户名或者密码错误")
DateUtil代码
from lxml import html
from haicoder.error import UserError
import datetime
import json
import requests
class DateUtil():
def __init__(self):
self.sx = ['猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊']
self.xz = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座']
self.xz_data = [(1,20),(2,19),(3,21),(4,21),(5,21),(6,22),(7,23),(8,23),(9,23),(10,23),(11,23),(12,23)]
self.book = ['','','']
def check(self,inputUserName,inputPassword):
for user in self.data:
u = user.login(inputUserName,inputPassword)
if u:
return u
else:
raise UserError("用户名或者密码错误")
def GetSX(self,year):
print("获取属相")
position = int(year) % 12
return self.sx[position]
def GetXZ(self,month,date):
print("获取星座")
n = 0
while self.xz_data[n] < (month, date):
n += 1
return self.xz[n]
def GetAge(self,year):
print("获取年龄")
return datetime.date.today().year-year
def GetXZYS(self,xz):
print("今日星座运势")
url = "http://web.juhe.cn:8080/constellation/getAll?consName=%s&type=today&key=ea6dcc3f96608847eea99f38b620685a"%xz
jsonStr = requests.get(url).text
result = json.loads(jsonStr)
xzys = result['summary']
return xzys
- url = “http://web.juhe.cn:8080/constellation/getAll?consName=%s&type=today&key=ea6dcc3f96608847eea99f38b620685a”%xz
- 以上代码的key为本人申请,一天只有50次免费,所以大家可以自己申请一个key。
- 申请步骤如下:
error代码
class UserError(Exception):
def __init__(self,error):
self.error = error
def __str__(self):
return self.error
main代码
from haicoder.user import Student,Teacher,User
from haicoder.data import Group
from haicoder.error import UserError
if __name__=='__main__':
print("学生信息管理系统登录")
group = Group()
for i in range(3):
name = input("请输入姓名:")
pw = input("请输入密码:")
try:
user = group.check(name,pw)
except UserError as e:
print(e)
else:
print("正常登录")
if isinstance(user,Student):
user.updateStudentInfo()
user.showStudentInfo()
elif isinstance(user,Teacher):
user.showTeacherInfo()
break
- 以上为本人做的一个简易的学生信息管理系统,本人学识尚浅,如有不对的地方,请大家及时指出,如果想学习更多相关Python知识,本人推荐嗨客网。