commit 3835a1cb80eaddb4fdf1d7815723b3898628858b Author: ada-dmitry Date: Mon Dec 11 20:23:07 2023 +0300 done uea diff --git a/project.py b/project.py new file mode 100644 index 0000000..05e2e0d --- /dev/null +++ b/project.py @@ -0,0 +1,140 @@ +import psycopg2 + +class Database: + def __init__(self): + self.db_params = { + "dbname": "postgres", + "user": "myuser", + "password": "qwerty", + "host": "localhost" + } + + def connect(self): + return psycopg2.connect(**self.db_params) + + def close(self, conn, cur): + if cur: + cur.close() + if conn: + conn.close() + +class ServiceDepartment: + def __init__(self, departmentID, departmentName, database): + self.departmentID = departmentID + self.departmentName = departmentName + self.database = database + + def addToDatabase(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO service_department (department_id, name) VALUES (%s, %s)", (self.departmentID, self.departmentName)) + conn.commit() + finally: + self.database.close(conn, cur) + + def handleInquires(self, application): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("UPDATE loan_applications SET status = %s WHERE application_id = %s", ('processed', application.applicationID)) + conn.commit() + finally: + self.database.close(conn, cur) + +class LoanOfficer: + def __init__(self, officerID, name, database): + self.officerID = officerID + self.name = name + self.database = database + + def addToDatabase(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO loan_officer (officer_id, name) VALUES (%s, %s)", (self.officerID, self.name)) + conn.commit() + finally: + self.database.close(conn, cur) + + def processLoanApplication(self, application): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + if (application.loanAmount <= 50000): + cur.execute("UPDATE loan_applications SET status = %s WHERE application_id = %s", ('approved', application.applicationID)) + else: + cur.execute("UPDATE loan_applications SET status = %s WHERE application_id = %s", ('rejected', application.applicationID)) + conn.commit() + finally: + self.database.close(conn, cur) + +class Client: + def __init__(self, clientID, name, email, database): + self.clientID = clientID + self.name = name + self.email = email + self.database = database + + def submitApplication(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO client (client_id, name, email) VALUES (%s, %s, %s)", (self.clientID, self.name, self.email)) + conn.commit() + finally: + self.database.close(conn, cur) + +class LoanApplication: + def __init__(self, applicationID, client, loanAmount, status, database): + self.applicationID = applicationID + self.client = client + self.loanAmount = loanAmount + self.status = status + self.database = database + + def addToDatabase(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO loan_applications (client_id, loan_amount, status) VALUES (%s, %s, %s)", (self.client.clientID, self.loanAmount, self.status)) + conn.commit() + finally: + self.database.close(conn, cur) + + +# Создание объектов +database = Database() + +my_client = Client(clientID=1, name='Alice Smith', email='alice@example.com', database=database) +my_client.submitApplication() + +# Подача заявки на кредит +application = LoanApplication(applicationID=1, client=my_client, loanAmount=20000.00, status='waiting', database=database) +application.addToDatabase() + +# Создание объектов +service_dept = ServiceDepartment(departmentID=1, departmentName='Customer Service', database=database) +service_dept.addToDatabase() + +# Обработка заявки на кредит +service_dept.handleInquires(application) + +# Создание объектов +loan_officer = LoanOfficer(officerID=1, name='John Doe', database=database) +loan_officer.addToDatabase() + +# Вынесение решения по заявке на кредит +loan_officer.processLoanApplication(application) \ No newline at end of file diff --git a/project/classes.py b/project/classes.py new file mode 100644 index 0000000..789c87f --- /dev/null +++ b/project/classes.py @@ -0,0 +1,133 @@ +import psycopg2 + +class data_base: + def __init__(self): + self.db_params = { + "dbname": "postgres", + "user": "myuser", + "password": "qwerty", + "host": "localhost" + } + + def connect(self): + return psycopg2.connect(**self.db_params) + + def close(self, conn, cur): + if cur: + cur.close() + if conn: + conn.close() + + +class patient: + def __init__(self, pat_id, pat_fio, pat_born, medcard_id, db): + self.pat_id = pat_id + self.pat_fio = pat_fio + self.pat_born = pat_born + self.medcardc_id = medcard_id + self.db = db + + def add2db(self): + conn = None + cur = None + try: + conn = self.db.connect() + cur = conn.cursor() + cur.execute("INSERT INTO patient_db (pat_id, pat_fio, pat_born, medcard_id) VALUES (%s, %s, %s, %s)",\ + (self.pat_id, self.pat_fio, self.pat_born, self.medcardc_id)) + conn.commit() + finally: + self.db.close(conn, cur) + + def note_check(self): + conn = None + cur = None + try: + conn = self.db.connect() + cur = conn.cursor() + cur.execute("SELECT * FROM appointment WHERE pat_id = %s", (self.pat_id)) + conn.commit() + finally: + self.db.close(conn, cur) + +class doctor: + def __init__(self, doc_id, doc_fio, doc_specialization, doc_room, db): + self.doc_id = doc_id + self.doc_fio = doc_fio + self.doc_specialization = doc_specialization + self.doc_room = doc_room + self.db = db + + def add2db(self): + conn = None + cur = None + try: + conn = self.db.connect() + cur = conn.cursor() + cur.execute("INSERT INTO doctors_db (doc_id, doc_fio, doc_specialization, doc_room) VALUES (%s, %s, %s, %s)", \ + (self.doc_id, self.doc_fio, self.doc_specialization, self.doc_room)) + conn.commit() + finally: + self.db.close(conn, cur) + + def workload_check(self, timetable): + conn = None + cur = None + try: + conn = self.db.connect() + cur = conn.cursor() + if (timetable.loanAmount <= 50000): + # что вместо апдейта? + cur.execute("UPDATE loan_applications SET status = %s WHERE application_id = %s", ('approved', timetable.applicationID)) + else: + cur.execute("UPDATE loan_applications SET status = %s WHERE application_id = %s", ('rejected', timetable.applicationID)) + conn.commit() + finally: + self.db.close(conn, cur) + +class MedWorker: + def __init__(self, mw_id, mw_fio, mw_born, mw_education, db): + self.mw_id = mw_id + self.mw_fio = mw_fio + self.mw_born = mw_born + self.db = db + +class DocAppointment: + def __init__(self, appointment_id, patient, status, db): + self.appointment_id = appointment_id + self.patient = patient + self.status = status + self.db = db + + def addToDatabase(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO loan_applications (client_id, loan_amount, status) VALUES (%s, %s, %s)", (self.client.clientID, self.loanAmount, self.status)) + conn.commit() + finally: + self.database.close(conn, cur) + + def del_appoint(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("DELETE FROM appointment WHERE appointment_id = %s", self.appointment_id) + conn.commit() + finally: + self.database.close(conn, cur) + + def add_appoint(self): + conn = None + cur = None + try: + conn = self.database.connect() + cur = conn.cursor() + cur.execute("INSERT INTO appointment (appointment_id, patient, status) VALUES (%s, %s, %s)", self.appointment_id, self.patient, self.status) + conn.commit() + finally: + self.database.close(conn, cur) \ No newline at end of file diff --git a/project/uml/done_ada.vsdx b/project/uml/done_ada.vsdx new file mode 100644 index 0000000..2d2f04c Binary files /dev/null and b/project/uml/done_ada.vsdx differ diff --git a/project/uml/done_uea.vsdx b/project/uml/done_uea.vsdx new file mode 100644 index 0000000..5776bf9 Binary files /dev/null and b/project/uml/done_uea.vsdx differ