تمرین برنامه نویسی؛ با کدبزن!

منبع جامع سوالات و تمرینات برنامه نویسی

لیست دانشجویان در اکسل

تمرین آسان 1815/ دانلود 263 بازدید

یک برنامه گرافیکی بسازید که اطلاعات دانشجویان و نمرات آن‌ها را مدیریت کند و این داده‌ها را در یک فایل Excel (فرمت csv) ذخیره و بازیابی کند.

امکان افزودن دانشجو با نام، شماره دانشجویی و نمره
نمایش لیست دانشجویان و نمرات
قابلیت ویرایش و حذف رکوردها از لیست
👨‍💻 1 ساعت قبل کاربر ناشناس این تمرین رو مشاهده کرد
👨‍💻 18 ساعت قبل Nima1393 این تمرین رو مشاهده کرد

1 جواب

from csv import *
from tkinter import *
def get_next_id():
    try:
        with open("Exel_Peractis_Code.csv", mode='r', newline='') as f:
            rows = list(DictReader(f))
            if not rows:
                return 1
            return int(rows[-1]['id']) + 1
    except FileNotFoundError:
        return 1

def writer_csv():
    with open("Exel_Peractis_Code.csv", mode = "a", newline="") as file:
        dict_students = {'id':get_next_id(),'name':name.get(),'student_number':student_number.get(),'score':score.get()}
        writerer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])

        with open('Exel_Peractis_Code.csv', mode = 'r', newline="") as fr:
            if len(list(DictReader(fr))) == 0:
                writerer.writeheader()

        writerer.writerow(dict_students)

def edit_csv():
    target_id = edit_id.get().strip()
    if not target_id:
        print("No id entered")
        return

    new_data = []
    with open("Exel_Peractis_Code.csv", mode='r', newline='') as file:
        reader = DictReader(file)
        for row in reader:
            if row['id'] == target_id:
                row['name'] = name_edit.get()
                row['student_number'] = student_number_edit.get()
                row['score'] = score_edit.get()
            new_data.append(row)       

        with open("Exel_Peractis_Code.csv", mode='w', newline='') as file:
            writer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])
            writer.writeheader()
            writer.writerows(new_data)

def delete_csv():
    target_id = id_delete.get().strip()
    if not target_id:
        print("No id entered")
        return

    new_data = []
    found = False

    with open("Exel_Peractis_Code.csv", mode='r', newline='') as file:
        reader = DictReader(file)
        for row in reader:
            if row['id'] != target_id:
                new_data.append(row)
            else:
                found = True

    if found:
        with open("Exel_Peractis_Code.csv", mode='w', newline='') as file:
            writer = DictWriter(file, fieldnames=['id', 'name', 'student_number', 'score'])
            writer.writeheader()
            writer.writerows(new_data)
        print(f"Row with id {target_id} deleted.")
    else:
        print(f"No row with id {target_id} found.")


main = Tk()         
main.geometry("700x500")
main.title("Peractis")

name_label = Label(main, text="First_Name:")
student_number_label = Label(main, text="Student_Number:")
score_label = Label(main, text="Score:")

name = Entry(main)
student_number = Entry(main)
score = Entry(main)
btn = Button(main, text="Register", command=writer_csv)

name_label.grid(row=0, column=0)
name.grid(row=0, column=1)
student_number_label.grid(row=1, column=0)
student_number.grid(row=1, column=1)
score_label.grid(row=2, column=0)
score.grid(row=2, column=1)
btn.grid(row=3, column=0)

# EDIT

name_label_edit = Label(main, text="First_Name:")
student_number_label_edit = Label(main, text="Student_Number:")
score_label_edit = Label(main, text="Score:")

name_edit = Entry(main)
student_number_edit = Entry(main)
score_edit = Entry(main)
button = Button(main, text="Edit", command=edit_csv)

name_label_edit.grid(row=4, column=0)
name_edit.grid(row=4, column=1)
student_number_label_edit.grid(row=5, column=0)
student_number_edit.grid(row=5, column=1)
score_label_edit.grid(row=6, column=0)
score_edit.grid(row=6, column=1)
label_edit = Label(main, text='edit_id:')
edit_id = Entry(main)
edit_id.grid(row=7, column=1)
label_edit.grid(row=7, column=0)
button.grid(row=8, column=0)

# DELETE

id_delete_label = Label(main, text="Id_For_Delete:")
id_delete = Entry(main)
id_delete.grid(row=9, column=1)
id_delete_label.grid(row=9, column=0)
btn_delete = Button(main, text="Delete", command=delete_csv)
btn_delete.grid(row=10, column=0)
main.mainloop() 
Nima1393 دانلود Python

ارسال جواب

  • قبل از ارسال جواب ویدیو زیر رو ببین تا کار کردن با markdown رو یاد بگیری
  • لطفا جواب های تکراری ارسال نکن
  • سعی کن داخل کدت از کلمات فارسی یا فینگلیش (فارسی با حروف انگلیسی) استفاده نکنی و کدت تماما انگلیسی باشه
  • لطفا داخل جواب از ایموجی یا کاراکترهای خاص استفاده نکن
  • ارسال جواب حق مادی یا معنوی برای ارسال کننده ایجاد نمیکند و تمام حقوق برای سایت کدبزن محفوظ است

راهنمای ارسال جواب 👇

×
×
بستن