Farooq Shahzad 70126800
Farooq Shahzad 70126800
Sohaib: 70126364
Adv Se Project Part 1
import sys
import sqlite3
import re
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout,
QHBoxLayout, QFormLayout, QLineEdit, QComboBox, QPushButton,
QTableWidget, QTableWidgetItem, QHeaderView, QMessageBox,
QTextEdit, QSpinBox, QDateEdit
from PyQt5.QtCore import Qt, QDate
# Database setup
def initialize_db():
conn = sqlite3.connect("student_data.db")
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS student_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER,
address TEXT,
contact_number TEXT,
email TEXT,
gender TEXT,
dob TEXT,
course TEXT,
year INTEGER,
feedback TEXT
)
''')
conn.commit()
conn.close()
conn.close()
# Validation checks
if not all([name, age, address, contact_number, email, gender, dob,
course, year, feedback]):
QMessageBox.warning(window, "Validation Error", "All fields must
be filled!")
return
if not name.isalpha():
QMessageBox.warning(window, "Validation Error", "Name must
contain only letters!")
return
if not dob:
QMessageBox.warning(window, "Input Error", "Date of Birth is
required!")
return
conn = sqlite3.connect("student_data.db")
cursor = conn.cursor()
cursor.execute("DELETE FROM student_data WHERE id=?",
(record_id,))
conn.commit()
conn.close()
refresh_table()
if row:
name_input.setText(row[1])
age_input.setText(str(row[2]))
address_input.setText(row[3])
contact_number_input.setText(row[4])
email_input.setText(row[5])
gender_input.setCurrentText(row[6])
dob_input.setDate(QDate.fromString(row[7], 'yyyy-MM-dd'))
course_input.setText(row[8])
year_input.setText(str(row[9]))
feedback_input.setPlainText(row[10])
# Layout setup
layout = QVBoxLayout(window)
# Form Layout
form_layout = QFormLayout()
name_input = QLineEdit()
age_input = QLineEdit()
address_input = QLineEdit()
contact_number_input = QLineEdit()
email_input = QLineEdit()
gender_input = QComboBox()
gender_input.addItems(["Male", "Female", "Other"])
dob_input = QDateEdit()
dob_input.setCalendarPopup(True)
course_input = QLineEdit()
year_input = QLineEdit()
feedback_input = QTextEdit()
form_layout.addRow("Name:", name_input)
form_layout.addRow("Age:", age_input)
form_layout.addRow("Address:", address_input)
form_layout.addRow("Contact Number:", contact_number_input)
form_layout.addRow("Email:", email_input)
form_layout.addRow("Gender:", gender_input)
form_layout.addRow("Date of Birth:", dob_input)
form_layout.addRow("Course:", course_input)
form_layout.addRow("Year:", year_input)
form_layout.addRow("Feedback/Suggestions:", feedback_input)
# Buttons Layout
buttons_layout = QHBoxLayout()
submit_button = QPushButton("Submit")
clear_button = QPushButton("Clear")
delete_button = QPushButton("Delete Selected")
edit_button = QPushButton("Edit Selected")
submit_button.clicked.connect(submit_form)
clear_button.clicked.connect(clear_form)
delete_button.clicked.connect(delete_selected)
edit_button.clicked.connect(edit_selected)
buttons_layout.addWidget(submit_button)
buttons_layout.addWidget(clear_button)
buttons_layout.addWidget(delete_button)
buttons_layout.addWidget(edit_button)
# Table Layout
table = QTableWidget()
table.setColumnCount(11)
table.setHorizontalHeaderLabels(
["ID", "Name", "Age", "Address", "Contact Number", "Email", "Gender",
"DOB", "Course", "Year", "Feedback"]
)
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# Initialize database
initialize_db()