大一新生一个小python作业,请大神帮忙!!(T⌓T)
扁平星球
题目对我来说有些复杂, 已经尝试了一下,但真心觉得自己能力有限。代码已经写出了一部分,我复制过来了(对不起代码有点儿长╥﹏╥) 剩下的希望大神们可以帮帮忙 (T⌓T) 真的感激不尽!!!
以下是题目要求:
数据被存储在MySQL数据库中。这个代码是一个管理十字军橄榄球俱乐部的程序。该系统允许用户从十字军橄榄球俱乐部作为 "主场 "的角度来管理等级、俱乐部、球队、成员和比赛(赛程)。
在系统中添加以下功能。 1. 所有年级(grade)按年级名称(grade name)顺序列出 2. 列出所有球队(teams),显示俱乐部(club)和年级名称(grade names),按俱乐部名称(club name)然后球队名称(team name)排序。 3. 列出所有成员(member),显示其俱乐部(club)、团队(team)和年级名称(grade name),按俱乐部(club)、年级(grade)和团队名称(team name)排序,然后按姓氏(last name)和名字(first name)排序。不包括所有地址栏(address fields)。 4.可更新会员(member)资料(但不包括会员ID(Member ID)。 5.可添加新会员(member)(不指定会员ID)。 6.所有的赛程(fixtures)都是从十字军橄榄球队的角度列出的。
以下是数据库

以下是已经写出来一半的代码
import mysql.connector from mysql.connector import FieldType import datetime import connect_rugby dbconn = None def getCursor(): global dbconn global connection connection = mysql.connector.connect(user=connect_rugby.dbuser, \ password=connect_rugby.dbpass, host=connect_rugby.dbhost, \ database=connect_rugby.dbname, autocommit=True) dbconn = connection.cursor() return dbconn def updateRecord(record,colsDict): # 使用这个函数循环浏览每个值,以更新一行或添加一个新行 # 如果记录是一个元组,updateRecord将循环浏览元组中的每个值,询问你是否要更新每个值。 # 如果记录是无,那么updateRecord将循环浏览每个字段,询问是否要将一个值添加到空记录中。 # 对于GradeID、ClubID或TeamID字段,表格将被列出,以便用户知道要输入哪个值。 #(注意,虽然所有的团队都被列出,但对于会员来说,输入的团队必须与会员在同一个俱乐部。 # 否则数据库会出现外键错误) # 返回一个包含新记录或更新记录的元组 if record==None: update=False record=[None for col in colsDict] else: update=True for index,(col,item) in enumerate(zip(colsDict,record)): print(col+":") if update: print(" - Current value: "+str(item)) itemType=colsDict[col] if update: response=input(f" - Update {col}? Y/N: ").upper() else: response='N' if response=='Y' or not update: askForValue=True while askForValue: if col=='TeamGrade': cur = getCursor() cur.execute("select GradeID, GradeName, GradeMinimumAge as 'From', GradeMaximumAge as 'To' from grades;") dbList = cur.fetchall() cols = [desc[0] for desc in cur.description] formatStr = "{: >7} - {: <10} {: >4} - {: <4}" print(formatStr.format(*cols)) for row in dbList: print(formatStr.format(*row)) elif col=='ClubID': cur = getCursor() cur.execute("select ClubID, ClubName from clubs;") dbList = cur.fetchall() cols = [desc[0] for desc in cur.description] formatStr = "{: >7} - {: <20}" print(formatStr.format(*cols)) for row in dbList: print(formatStr.format(*row)) elif col=='TeamID': cur = getCursor() cur.execute("select t.TeamID, t.TeamName, t.TeamGrade, c.ClubName from teams t join clubs c on t.ClubID=c.ClubID order by c.ClubName, t.TeamName;") dbList = cur.fetchall() cols = [desc[0] for desc in cur.description] formatStr = "{: >7} - {: <20} {: <8} {: <10}" print(formatStr.format(*cols)) for row in dbList: print(formatStr.format(*row)) if itemType in ('LONG','INT','INTEGER'): newEntry=input("Enter a whole number: ") if newEntry.isdigit(): askForValue=False else: askForValue=True print("Must be a whole number.") if itemType in ('FLOAT',): newEntry=input("Enter a number: ") if newEntry.isnumeric(): askForValue=False else: askForValue=True print("Must be a number.") if itemType in ('TINY',): newEntry=input("Enter a 0 or 1: ") if newEntry in ('0','1'): askForValue=False else: askForValue=True print("Must be either a 0 (zero) or 1 (one) as numbers.") if itemType in ('DATE',): dateStr=input("Enter date (yyyy-mm-dd): ") try: askForValue=False newEntry=datetime.datetime.strptime(dateStr, "%Y-%m-%d") except: askForValue=True print("Must be a date in yyyy-mm-dd format.") if itemType in ('DATETIME',): dateStr=input("Enter date and time (yyyy-mm-dd hh:mm): ") try: askForValue=False newEntry=datetime.datetime.strptime(dateStr, "%Y-%m-%d %H:%M") except: askForValue=True print("Must be a date in yyyy-mm-dd format.") if itemType in ('VAR_STRING','BLOB'): newEntry=input("Enter text: ") askForValue=False if newEntry=="": newEntry=None # If no value entered, None is recorded (which MySQL Connector converts to Null in the database through the %s marker) record[index]=newEntry return tuple(record) def columnOutput(dbData,cols,formatStr): # dbData是一个图元的列表 # cols是一个字典,列名是键,数据类型是项 # formatStr使用以下格式,每一列都有一组大括号{}。 # 对于每一列"{: <10}"决定了该列的宽度,用空格填充(在这个例子中是10个空格) # <, ^ 和 > 决定文本的对齐方式。<(左对齐),^(中间对齐),>(右对齐)。 # 下面的例子是3列输出:左对齐,5个字符宽;中心对齐,10个字符;右对齐,15个字符。 # formatStr = "{: <5} {: ^10} {: >15}" # 你也可以用空格以外的东西来填充,并在各列之间放置字符。 # 例如,这是用句号'......'来填充,用管道字符|来分隔各列。 # formatStr = "{:.<5} ! | {:.^10} | {:.>15}" print(formatStr.format(*cols)) for row in dbData: rowList=list(row) for index,item in enumerate(rowList): if item==None: rowList[index]="" elif type(item)==datetime.date: rowList[index]=str(item) print(formatStr.format(*rowList)) def listGrades(): cur = getCursor() cur.execute("select * from grades;") dbGrades = cur.fetchall() colGradesDict = {desc[0]:FieldType.get_info(desc[1]) for desc in cur.description} print("\nGRADES:\n") formatStr = "{: ^7} {: <10} {: >15} - {: <15}" columnOutput(dbGrades,colGradesDict,formatStr) input("\nPress Enter to continue.") def listTeams(): # 在这里列出团队 input("\nPress Enter to continue.") # 在这里列出成员,但不包括地址1和2、城市和邮编,这样输出就可以放在一行中了 def listMembers(): response=input("\n(A)dd | (E)dit | or Enter for Main Menu: ").upper() if response=='A': addMember() if response=='E': updateMember() def addMember(): # 在成员表上运行一个查询,以获得列名,即使你不使用行数据。 # 应该能够添加所有的列,包括地址细节。 # 使用updateRecord函数(record=None)来返回一个带有用户输入的数据的元组。 # 将元组中的值写到数据库中。 pass def updateMember(): # 应该能够添加所有的列,除了MemberID,包括地址细节。 # 使用updateRecord函数来返回一个包含用户更新的数据的元组。 # 将元组中的值写到数据库中。 # 提示:为了避免MemberID被更新,将其从查询输出中排除,并将memberID传递给这个函数。 pass
def dispMenu(): print("==== WELCOME TO CRUSADERS RUGBY ===") print("1 - Grades") print("2 - Teams") print("3 - Members") print("4 - Fixtures") print("5 - Team Eligibility Report") print("Q - Quit")
dispMenu() response = input("Please select menu choice: ").upper() while response != "Q": if response == "1": listGrades() elif response == "2": listTeams() elif response == "3": listMembers() elif response == "4": pass elif response == "5": pass else: print("Invalid response, please re-enter.") print("") dispMenu() response = input("Please select menu choice: ") print("=== Thank you for using CRUSADERS RUGBY ===")
你的回复
回复请先 登录 , 或 注册相关内容推荐
最新讨论 ( 更多 )
- ⭐程序员妹子【搞笑教程】Python 深度学习 (编程八点档)
- Python小白办公自动化实用高薪课程 (kuandnww)
- 【架构师】Django+FastAPI+uniapp+微服务秒杀系统教程 (kuandnww)
- 招聘兼职python技术 淘宝和多多店铺接单兼职 (橙子)
- 今天花了些时间给大家整理了一份python学习资料,我觉得这些... (A.赴山看落日)