LỜI MỞ ĐẦU 2 MỤC LỤC 3 CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 4 1 Khái quát đồ án 4 1 1 Đặt vấn đề 4 1 2 Hình thành ý tưởng 5 1 3 Tiêu chí đặt ra 5 1 4 Mục tiêu 5 1 5 Nhiệm vụ 5 1 6 Ứng dụng vào thực tế 5 2 Cơ sở lý thuyết 6 CHƯƠNG 2 THỰC HIỆN ĐỀ TÀI VÀ KẾT QUẢ 10 1 1 Các bước thực hiện 10 1 2 Điều kiện làm việc 10 1 3 Xây dựng thuật toán 11 1 4 Phân tích kỹ thuật 13 1 5 Vận hành thử nghiệm 14 KẾT LUẬN 15 TÀI LIỆU THAM KHẢO 16 PHỤ LỤC 17 CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1 1 Đặt vấn đề Ngày nay, tin học đã có những bư.
Trang 2LỜI MỞ ĐẦU.… ……… ……… ……… ……… ……… … … 2
MỤC LỤC………3
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT……….……… ……… 4
1 Khái quát đồ án……… 4
1.1 Đặt vấn đề……… 4
1.2 Hình thành ý tưởng……….5
1.3 Tiêu chí đặt ra ………5
1.4 Mục tiêu……… 5
1.5 Nhiệm vụ……….5
1.6 Ứng dụng vào thực tế……… …….……5
2 Cơ sở lý thuyết ……… ……….… ….6
CHƯƠNG 2 THỰC HIỆN ĐỀ TÀI VÀ KẾT QUẢ … ………….………10
1.1 Các bước thực hiện……… ……… 10
1.2 Điều kiện làm việc……… 10
1.3 Xây dựng thuật toán……… 11
1.4 Phân tích kỹ thuật……… 13
1.5 Vận hành thử nghiệm……….…14
KẾT LUẬN……….15
TÀI LIỆU THAM KHẢO……….… 16
PHỤ LỤC……… 17
Trang 3CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1 Đặt vấn đề
Ngày nay, tin học đã có những bước tiến nhanh chóng về ứng dụng của
nó trong mọi lĩnh vực của cuộc sống trên phạm vi toàn thế giới nói chung vàViệt Nam nói riêng.Tin học được người ta quan tâm và nhắc đến nhiều hơnbao giờ hết vì nó là một phần không thể thiếu trong cuộc sống văn minh,gópphần đẩy mạnh công cuộc công nghiệp hoá hiện đại hoá đất nước, tiến đếnnền kinh tế tri thức Máy vi tính cùng với những phần mềm là công cụ đắc lựcgiúp ta quản lý, tổ chức, sắp xếp và xử lý công việc một cách nhanh chóng vàchính xác Ở Việt Nam hiện nay, máy tính điện tử đặc biệt là máy vi tínhtrong nhiều năm qua đã được sử dụng rất rộng rãi Sự phát triển của tin học,các công nghệ phần mềm, phần cứng, các tài liệu tham khảo đã đưa chúng tatừng bước tiếp cận với công nghệ thông tin trong mọi lĩnh vực nhằm đáp ứngnhu cầu của con người
Quản lý sinh viên là một đề tài không còn mới mẻ với các bài toánquản lý Việc đưa tin học vào ứng dụng để quản lý là rất hữu ích, vì chúng ta phải bỏ ra rất ít thời gian mà lại thu được hiệu quả cao, rất chính xác và tiệnlợi nhanh chóng.Trong phạm vi bài báo cáo nhóm chúng em đã được đề cậpđến vấn đề “Quản lý sinh viên” ở trường ĐH Vinh bằng máy vi tính.Vớikhoảng thời gian không nhiều, vừa phân tích thiết kế, nghiên cứu tìm hiểukhai thác ngôn ngữ mới, vừa thực hiện chương trình quả là khó khăn đối vớichúng em Bởi “Quản lý sinh viên” là một đề tài có nội dung rộng, mặt kháckhả năng am hiểu về hệ thống của nhóm em vẫn còn nhiều hạn chế Tuynhiên trong quá trình làm vẫn còn có nhiều sai xót nên chúng em rất mongnhận được những ý kiến đóng góp của thầy cùng toàn thể các bạn trong lớp để
đồ án của em được hoàn thiện
Trang 4Nhận biết được các phần code
Hiểu được nguyên lí hoạt động của sản phẩm
Làm quen và sử dụng hỗ trợ công cụ lập trình
Nâng cao kĩ năng mềm, tăng đam mê với ngành TĐH, cảm thấy yêuthích thực sự ngành nghề kỹ thuật đã chọn để theo học, hình thànhđộng cơ học tập đúng đắn, xây dựng cho mình mục tiêu và những mơước nghề nghiệp
1.5 Nhiệm vụ
Phân tích hệ thống quản lí sinh viên
Thiết kế khung hệ thống quản lí sinh viên
Thuyết trình báo cáo
Trang 52 Cơ sở lý thuyết
2.1 Sử dụng ngôn ngữ Python
Python là một ngôn ngữ thông dịch Trình thông dịch thực thi code theotừng dòng (và bạn không cần phải biên dịch ra file chạy), điều này giúp choquá trình debug trở nên dễ dàng hơn và đây cũng là yếu tố khá quan trọnggiúp Python cũng là một ngôn ngữ lập trình hướng đối tượng Ngoài ra,Python còn hỗ trợ các phương thức lập trình theo hàm và theo cấu trúc
Để giải quyết đề tài đưa ra, chúng ta sẽ cần sử dụng tới các hàm, các module
có sẵn hoặc trong Python Vì vậy, chúng ta cần hiểu một hàm hoặc một module như thế nào…?
2 1.1 Hàm trong Python
Trong Python, hàm là một nhóm các lệnh có liên quan đến nhau được dùng để thực hiện một tác vụ, nhiệm vụ cụ thể nào đó Hàm giúp chia chươngtrình Python thành những khối/phần/mô-đun nhỏ hơn Khi chương trình Python quá lớn, hoặc cần mở rộng, thì các hàm giúp chương trình có tổ chức
và dễ quản lý hơn
Hàm còn có một tác dụng vô cùng quan trọng nữa là tránh việc phải lặp lại code để thực thi những tác vụ tương tự nhau, giúp code gọn hơn và có thể tái sử dụng
Cú pháp của hàm Python
def ten_ham(các tham số/đối số):
"""Chuỗi văn bản để mô tả cho hàm (docstring)"""
Các câu lệnh
Về cơ bản, một định nghĩa hàm Python sẽ bao gồm các thành phần sau:
1 Từ khóa def: Đánh dáu sự bắt đầu của tiêu đề hàm
2 ten_ham: Là định danh duy nhất dành cho hàm Việc đặt tên hàm phải tuân thủ theo quy tắc viết tên và định danh trong Python
3 Các tham số/đối số: Chúng ta truyền giá trị cho hàm thông qua các tham số này Chúng là tùy chọn
Trang 64 Dấu hai chấm (:): Đánh dấu sự kết thúc của tiêu đề hàm.
5 docstring: Chuỗi văn bản tùy chọn để mô tả chức năng của hàm
6 Các câu lệnh: Một hoặc nhiều lệnh Python hợp lệ tạo thành khối lệnh Các lệnh này phải có cùng một mức thụt đầu dòng (thường là 4 khoảng trắng)
7 Lệnh return: Lệnh này là tùy chọn, dùng khi cần trả về giá trị từ hàm
Ví dụ về hàm Python
Dưới dây là một định nghĩa hàm đơn giản, gồm tên hàm, tham số của hàm,
mô tả hàm và một câu lệnh:
def chao(ten):
"""Hàm này dùng đểchào một nguời được truyền vào như một tham số"""
print("Xin chào, " + ten + "!")
Gọi hàm trong Python
Khi một hàm đã được định nghĩa, bạn có thể gọi nó từ một hàm khác, chương trình khác hoặc thậm chí tại dấu nhắc lệnh Ðể gọi hàm chúng ta chỉ cần nhập tên hàm với những tham số thích hợp là được Ví dụ dể gọi hàm chao() vừa dịnh nghia bên trên, ta gõ lệnh sau ngay tại dấu nhắc:
>>> chao (‘abc’)
2.1.2 Lập trình giao diện trong python
Khái niệm về chương trình có giao diện đồ họa - Chương trình có giao diện đồ hoạ là một chương trình luôn chạy cho tới khi người dùng thoát
chương trình (có chạy 1 vòng lặp vô hạn để luôn hiển thị giao diện, gọi là main loop) Chương trình đồ họa hoạt động dựa trên những tương tác của người dùng và phản ứng với các tương tác đó (bấm nút nào thì thực hiện côngviệc tương ứng) Loại chương trình như vậy thuộc loại mô hình "Event-drivenprogramming"
2.1.3 Lập trình GUI với Tkinter
Trong chương trình đồ họa, các thao tác của người dùng được gọi là các event, các hành động tương ứng của chương trình (các function) được gọi là
Trang 7các callback, được gắn vào các bộ phận giao diện (gắn callback vào nút bấm thì khi ta bấm nút, callback sẽ được gọi) Các bộ phận giao diện như nút bấm, chữ, ô nhập ký tự được gọi là các widget Tkinter là một gói trong Python
có chứa module Tk hỗ trợ cho việc lập trình GUI Tk ban đầu được viết cho ngôn ngữ Tcl, sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông dịch Tcl trên nền Python Ngoài Tkinter ra còn có một số công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, và PyGTK
Để tạo ra một một khung cửa sổ đơn giản trong Tkinter chỉ cần làm như sau:from tkinter import Tk, Frame, BOTH
window = Tk()
window.title("Danh Tính Cá Nhân ")
window.geometry('1080x720')
window.mainloop()
2.2 Sqlite trong Python
SQLite là một thư viện phần mềm mà triển khai một SQL Database
Engine, không cần máy chủ, không cần cấu hình, khép kín và nhỏ gọn Nó là một cơ sở dữ liệu, không cần cấu hình, có nghĩa là giống như các cơ sở dữ liệu khác mà bạn không cần phải cấu hình nó trong hệ thống của mình
SQLite engine không phải là một quy trình độc lập (standalone process) như các cơ sở dữ liệu khác, bạn có thể liên kết nó một cách tĩnh hoặc động tùy theo yêu cầu của bạn với ứng dụng của bạn SQLite truy cập trực tiếp các file lưu trữ (storage files) của nó
Ví dụ: Dưới đây chúng ta xem phiên bản CSDL SQLite
import sqlite3 as lite
import sys
import os
con = None
try:
Trang 8path = os.path.dirname( file ) + "\\test.db"
Trang 9Bước 2: Xác định đề tài sản phẩm.
Bước 3: Tìm hiểu nguyên lí của đề tài
Bước 4: Tạo mô hình demo
Bước 5: Hoàn tất và viết báo cáo
1.2 Điều kiện làm việc
Nhóm thực hành gồm 1 người, nên không cần phân công nhiệm vụ cụ thể Các dụng cụ, phần mềm phục vụ ứng dụng quản lí sinh viên: Các phần mềm
hỗ trợ chạy chương trình dựa trên nền tảng Python như PyCharm, Visual Studio,…Đều sử dụng các phiên bản mới nhất
Một số khó khăn: Do lần đầu thử nghiệm lập trình một ứng dụng nênchưa có khả năng làm ứng dụng nhanh, nhiều code phải tìm hiểu trongkhoảng thời gian dài, trong quá trình làm việc có phát sinh lỗi…
Hình 1 Giao diện của phần mềm PyCharm
1.3 Xây dựng thuật toán
Trang 10Hình 2.1 Thuật toán
Trang 11Hình 2.2 Thuật toán
Trang 121.4 Phân tích kỹ thuật
1.4.1 Hoạt động của một cơ sở dữ liệu:
Hình 3 Hoạt động của một cơ sở dữ liệu
Hệ quản trị dữ liệu có các chức năng:
1 Cung cấp môi trường tạo lập cơ sở dữ liệu: Cung cấp cho con người dungngôn ngữ định nghĩa kiểu dữ liệu để người dùng khai báo kiểu và các cấu trúc
dữ liệu, đông thời tạo lập CSDL thong qua các giao diện đồ họa
2 Cung cấp môi trường cập nhật và khai báo dữ liệu: Cung cấp cho ngườidung ngôn ngữ thao tác dữ liệu để yêu cầu cập nhật hay khai thác thông tin
3 Thao tác dữ liệu gồm: - Cập nhật (nhập, xóa, sửa, xóa dữ liệu)
- Khai thác ( sắp xếp, tìm kiếm, kết xuất, báo cáo…)
4 Cung cấp công cụ kiểm soát, điều khiển truy cập vào cơ sở dữ liệu
Trang 13import stdDatabase (# module tự tạo)
import sqlite3
class Student:
def iExit():
iExit= tkinter.messagebox.askyesno(" Hệ Thống Quản Lí
Sinh Viên","Are you sure you want to exit?")
Trang 14KẾT LUẬN
1 Kinh nghiệm và bài học
1 Ứng dụng “Quản lí sinh viên” khá đơn giản, các code cần thiết dễ làm và
dễ hiểu Nguyên lí hoạt động rõ ràng, dễ hiểu,…Qua quá trình lập trình ứng dụng cho ta thêm kinh nghiệm xây dựng code để tạo ra các ứng dụng thực tế
2 Trong thế giới hiện đại ngày nay, công nghệ thông tin đã trở thành mộtphần tất yếu trong cuộc sống Với những hỗ trợ ngày càng nhiều của côngnghệ thông tin trong các lĩnh vực, con người đã tiết kiệm được khá nhiều thờigian và công sức làm việc, nhờ đó hiệu quả công việc tăng lên gấp nhiều lần.Một trong những đóng góp quan trọng của công nghệ thông tin cho con người
là việc tổ chức lưu trữ dữ liệu
3 Với việc tổ chức lưu trữ thông tin trên máy tính, con người thoát khỏi mộtkhối lượng lớn công việc phải ghi chép, giúp cho việc trao đổi và chia sẻthông tin trở nên linh hoạt hơn, còn giúp đảm bảo an toàn dữ liệu và dễ dàngthống kê… Các hình thức lưu trữ dữ liệu thường dùng ngày nay là: cơ sở dữliệu quan hệ, các dạng tài liệu văn bản, tài liệu … Nhờ cấu trúc đơn giản, dễtruy xuất và đặc biệt không phụ thuộc vào một nền tảng nào, việc lưu trữ bằngdatabase ngày càng trở nên phổ biến, được ứng dụng rộng rãi trong nhiều lĩnhvực… database đã trở thành chuẩn tiện lợi cho việc trao đổi thông tin trênWeb
2 Hướng phát triển đề tài
Ứng dụng quản lí sinh viên đã được hoạt động theo đúng yêu cầu, ta có thể biến đổi thành các ứng dụng khác như quản lí bệnh viện, quản lí sách trong một thư viện,…Hướng phát triển của đề tài là có thể thêm ảnh vào cùng với các thông tin cá nhân và tạo ra một cơ sở dữ liệu đám mây cho phép người dung lưu trữ thông tin online
Trang 15TÀI LIỆU THAM KHẢO
05/06/2020
cuối 07/06/2020
Trang 16def init ( selfs , root):
selfs root = root
selfs root.title("Hệ Thống Quản Lí Sinh Viên")
iExit= tkinter.messagebox.askyesno(" Hệ Thống Quản"
" Lí Sinh Viên","Are you sure"
" you want to exit?")
Gender.get(), Address.get(), Mobile.get())) def DisplayData():
studentlist.delete( 0 ,END)
for row in stdDatabase.viewData():
studentlist.insert(END,row, str (""))
Trang 17def StudentRec( event ):
MainFrame.grid()
TitFrame = Frame(MainFrame, bd = , padx = 54 ,
pady = , bg ='Ghost White',
relief =RIDGE)
Trang 18TitFrame.pack( side =TOP)
selfs lblTit = Label(TitFrame, font =('arial', 47 , 'bold'),
text ="Hệ Thống Quản Lí Sinh Viên",
bg ='Ghost White')
selfs lblTit.grid()
ButtonFrame = Frame(MainFrame, bd = , width = 1350 ,
height = 70 , padx = 18 , pady = 10 ,
bg ='Ghost White', relief =RIDGE)
ButtonFrame.pack( side =BOTTOM)
DataFrame = Frame(MainFrame, bd = , width = 1300 , height = 400 ,
padx = 20 , pady = 20 , relief =RIDGE,
bg ='cadet blue')
DataFrame.pack( side =BOTTOM)
DataFrameLEFT = LabelFrame(DataFrame, bd = , width = 1000 ,
height = 600 , padx = 20 , pady = 20 , relief =RIDGE,
bg ='Ghost White', font =('arial', 20 , 'bold'), text ='Thông tin\n'
DataFrameLEFT.pack( side =LEFT)
DataFrameRIGHT = LabelFrame(DataFrame, bd = , width = 450 ,
height = 300 , padx = 31 , pady = , relief =RIDGE,
bg ='Ghost White', font =('arial', 20 , 'bold'), text ='Chi tiết\n'
DataFrameRIGHT.pack( side =RIGHT)
# ============== Label and Entry Widget====================== selfs lblStdID = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='MSSV:', padx = , pady = ,
bg ="Ghost White")
selfs lblStdID.grid( row = , column = , sticky =W)
selfs txtStdID = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =StdID, width = 39 )
selfs txtStdID.grid( row = , column = )
selfs lblfna = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='Họ:', padx = , pady = ,
bg ="Ghost White")
selfs lblfna.grid( row = , column = , sticky =W)
selfs txtfna = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Firstname, width = 39 )
selfs txtfna.grid( row = , column = )
selfs lblSna = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='Tên:', padx = , pady = ,
bg ="Ghost White")
selfs lblSna.grid( row = , column = , sticky =W)
selfs txtSna = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Surname, width = 39 )
selfs txtSna.grid( row = , column = )
selfs lblDoB = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
Trang 19text ='Ngày sinh:', padx = , pady = ,
bg ="Ghost White")
selfs lblDoB.grid( row = , column = , sticky =W)
selfs txtDoB = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =DoB, width = 39 )
selfs txtDoB.grid( row = , column = )
selfs lblAge = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='Tuổi', padx = , pady = ,
bg ="Ghost White")
selfs lblAge.grid( row = , column = , sticky =W)
selfs txtAge = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Age, width = 39 )
selfs txtAge.grid( row = , column = )
selfs lblGender= Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='Giới tính:', padx = , pady = ,
bg ="Ghost White")
selfs lblGender.grid( row = , column = , sticky =W)
selfs txtGender = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Gender, width = 39 )
selfs txtGender.grid( row = , column = )
selfs lblAdr = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='Địa chỉ:', padx = , pady = ,
bg ="Ghost White")
selfs lblAdr.grid( row = , column = , sticky =W)
selfs txtAdr = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Address, width = 39 )
selfs txtAdr.grid( row = , column = )
selfs lblMobile = Label(DataFrameLEFT,
font =('arial', 20 , 'bold'),
text ='SĐT', padx = , pady = ,
bg ="Ghost White")
selfs lblMobile.grid( row = , column = , sticky =W)
selfs txtMobile = Entry(DataFrameLEFT,
font =('arial', 20 , 'bold'),
textvariable =Mobile, width = 39 )
selfs txtMobile.grid( row = , column = )
# ============== ListBox & ScrollBarWidget====================== scrollbar = Scrollbar(DataFrameRIGHT)
scrollbar.grid( row = , column = , sticky ='ns')
studentlist = Listbox(DataFrameRIGHT, width = 40 ,
height = 16 , font =('arial', 12 , ' bold'),
yscrollcommand =scrollbar.set)
studentlist.bind('<<ListboxSelect>>',StudentRec)
studentlist.grid( row = , column = , padx = )
scrollbar.config( command =studentlist.yview)