Скачиваний:
0
Добавлен:
26.01.2024
Размер:
4.77 Кб
Скачать
#НИР часть 3
# А-02-20 Дашин И.Н.

import sqlite3
import sys
import os
from tabulate import tabulate


def getProfInput():
    cmd=profMenu() 
    while cmd != "0":
        if cmd == "1":
            return  "ИТ"
        elif cmd == "2":
            return  "КЛ"
        elif cmd == "3":
            return  "ГП"
        elif cmd == "4":
            return  "МП"
        else:
            print("Такого профиля нет!")
        cmd=profMenu()
    return cmd


def getStatusInput():
    cmd=statusMenu()
    while cmd != "0":
        if cmd == "1":
            return "Университет    " 
        elif cmd == "2":
            return "Академия       " 
        elif cmd == "3":
            return "Институт       "
        elif cmd == "4":
            return
        else:
            print("Такого статуса нет!")
        cmd=statusMenu()  
    return cmd

           
def tableProfMag(prof):
    con=sqlite3.connect('VUZ.sqlite')
    cur=con.cursor()
    sql="""SELECT z1
    FROM vuzkart
    JOIN vuzstat ON vuzkart.codvuz == vuzstat.codvuz
    WHERE vuzstat.mag>0 AND prof=="{}";""".format(prof)
    data = cur.execute(sql).fetchall()
    cur.close()
    con.close()
    count=[]
    for i in range(len(data)):
        count.append(i+1)
    headers = ["Полное наименование вуза"]
    print('')
    print(tabulate(data, headers=headers, showindex=count))


def tableStatus(status):
    con=sqlite3.connect('VUZ.sqlite')
    cur=con.cursor()
    if status != None:
        sql="""SELECT vuzkart.z1, vuzstat.mag, vuzstat.asp
        FROM vuzkart
        JOIN vuzstat ON vuzkart.codvuz== vuzstat.codvuz
        WHERE  status=="{}"
        ORDER BY vuzkart.z1""".format(status)
    else:
        sql="""SELECT vuzkart.z1, vuzstat.mag, vuzstat.asp
        FROM vuzkart
        JOIN vuzstat ON vuzkart.codvuz== vuzstat.codvuz
        ORDER BY vuzkart.z1"""
    cur.execute(sql)
    data=cur.fetchall()
    cur.close()
    con.close()
   
    count=[]
    for i in range(len(data)):
        count.append(i+1)
        if (data[i][1]!=0):
            data[i]+=(round(data[i][2]/data[i][1],2),)
        else: data[i]+=(0,)
        
    mag=0
    asp=0
    for i in range(len(data)):
        asp+=data[i][2]
        mag+=data[i][1]

    count.append("-")
    if (mag!=0):
            data+=(("ИТОГО", mag, asp, round(asp/mag,2)),)
    else: data+=(("ИТОГО", mag, asp, 0),)
    
    headers = ["Полное наименование вуза", "Количество магистров", "Количество аспирантов", "Отношение аспиранты/магистры"]
    print('')
    print(tabulate(data, headers=headers, showindex=count, tablefmt='orgtbl'))


def profMenu():
    print('')
    print("Доступные профили вузов:")
    print('1) Инженерно-технический')
    print('2) Классический университет')
    print('3) Гуманитарно-педагогический')
    print('4) Многопрофильный')
    print('0) Выход из меню')
    cmd = input('Выберите профиль вуза по номеру:  ')  
    return cmd


def statusMenu():   
    print('')
    print("Доступные статусы вузов:")
    print('1) Университет')
    print('2) Академия')
    print('3) Институт')
    print('4) Выбрать все')
    print('0) Выход из меню')
    cmd = input('Выберите статус вуза по номеру:  ')
    return cmd


def menu():
    print('')
    print('Меню:')
    print('1) Выбрать профиль вуза и перечень полных наименований вузов, соответствующих выбранному профилю и имеющих подготовку магистров')
    print('2) Выбрать статус вуза и получить информацию об обучающихся магистрах и аспирантах')
    print('0) Завершить работу с программой')
    cmd = input('Выберите действие: ')
    return cmd


def main():
    cmd=menu() 
    while cmd != "0":
        if cmd == "1":
            b = getProfInput()
            if(b!="0"): tableProfMag(b)
        elif cmd == "2":
            a = getStatusInput()
            if(a!="0"):tableStatus(a)
        else:
            print("Такой команды нет!")
        cmd=menu()
    return

main() #Вот и вся программа...
Соседние файлы в папке нир