Commit d1298d4c authored by jadtaphon chinnapan's avatar jadtaphon chinnapan

jadtaphon 30/04/63

parent 1f622368

Too many changes to show.

To preserve performance only 761 of 761+ files are displayed.

{
"CurrentProjectSetting": "No Configurations"
}
\ No newline at end of file
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}
\ No newline at end of file
File added
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
\chapter{บทนำ}
\section{ที่มาและเหตุผล }
การเช็คชื่อเข้าเรียน เป็นสิ่งสำคัญในการตรวจสอบความกระตือรือร้นในการเข้าเรียนของนักศึกษา และเป็นตัวชี้วัดการให้คะแนนนักศึกษาของผู้สอนหรือเช็คยอดนักศึกษาที่เข้าเรียนในคลาสนั้น ๆ ซึ่งการเช็คชื่อเป็นสิ่งสำคัญที่ช่วยคณะกรรมการตรวจสอบ และเป็นหลักฐานในการให้คะแนนของผู้สอนที่จะแสดงต่อคณะกรรมการเมื่อมีการตรวจสอบแหล่งที่มาของคะแนน
การเช็คชื่อในคลาสเรียนส่วนมากเป็นการเรียกชื่อนักศึกษาแล้วให้นักศึกษาขานตอบ ซึ่งจะทำให้การเช็คชื่อนั้นมีความล่าช้าและทำให้เสียเวลาในการเรียนการสอน ซึ่งเวลาที่เสียไปในการเช็คชื่อนักศึกษาสามารถนำไปใช้ทำสิ่งต่าง ๆ ได้ เช่น พักครึ่ง ทำแบบฝึกหัด ติว ตอบคำถาม และเตรียมตัวสำหรับคาบต่อไป เป็นต้น นอกจากนี้ผู้สอนบางท่านอาจจะใช้วิธีสุ่มเช็คชื่อเพื่อลดเวลาในที่ใช้ในการเช็คชื่อในบ้างคาบเรียน แต่นั่นทำให้นักศึกษาส่วนมากคิดว่าผู้สอนอาจจะไม่เช็คชื่อในคาบเรียนจึงไม่เข้าเรียน และมีผู้สอนบางท่านยังใช้กระดาษในการเช็คชื่อ ซึ่งเป็นการสิ้นเปลืองกระดาษและอาจทำให้กระดาษชำรุด หรือสูญหาย ส่งผลทำให้ไม่มีหลักฐานในการให้คะแนนนักศึกษาที่เข้าเรียน และยังไม่สามารถระบุแหล่งที่มาของคะแนนที่ให้นักศึกษาต่อคณะกรรมการอีกดัวย
จากปัจจัยที่กล่าวมา ผู้พัฒนาจึงมีความคิดที่จะพัฒนาระบบเช็คชื่อเข้าเรียน โดยจะเน้นให้ระบบใช้งานง่ายไม่ซับซ้อน เข้าถึงง่าย และมีความรวดเร็ว โดยใช้เทคโนโลยี Quick Response Code (QR Code) เพื่อให้ง่ายต่อการใช้งาน ซึ่งจะให้นักศึกษาสแกน QR Code ของผู้สอน โดยผู้สอนจะเปิด QR Code ให้นักศึกษาทุกคนในคลาสเรียนสแกนเพื่อเป็นการเช็คชื่อเข้าเรียน นอกจากนี้นักศึกษาไม่จำเป็นต้องโหลดแอปพลิเคชันเพิ่มก็สามารถเช็คชื่อเข้าเรียนได้
\newpage
\section{วัตถุประสงค์}
\begin{enumerate}
\item เพื่อพัฒนาระบบแอปพลิเคการเช็คชื่อในคลาสเรียนที่มีขนาดใหญ่
\item เพื่อเป็นแหล่งเก็บข้อมูลการเข้าเรียนของนักศึกษาและเป็นหลักฐานแสดงการมาเรียนของนักศึกษา ซึ่งจะเป็นแหล่งที่มาของคะแนนการเข้าเรียน
\item เพื่อลดการใช้กระดาษที่ใช้ในการเช็คชื่อ และป้องกันการสูญหายหรือชำรุดของข้อมูล
\end{enumerate}
\section{ขอบเขตของโครงงาน}
\begin{enumerate}[label=1.3.\arabic*]
\item ผู้สอน
\begin{itemize}
\item สามารถเพิ่ม และลบ คลาสเรียน
\item สามารถตรวจสอบรายชื่อนักศึกในคลาสเรียน
\item สามารถจัดการคะแนนของนักศึกษา
\item สามารถสร้าง QR Code สำหรับให้นักศึกษาสแกนเพื่อเช็คชื่อได้
\item สามารถเพิ่ม ลบ และแก้ไข ชื่อนักศึกษาในคลาสเรียนได้
\item สามารถรวมไฟล์คะแนน ของคลาสเรียนเดียวกัน
\end{itemize}
\item นักศึกษา
\begin{itemize}
\item สแกน QR Code ของผู้สอนเพื่อเป็นการเช็คชื่อเข้าเรียน
\end{itemize}
\end{enumerate}
\section{ประโยชน์ที่คาดว่าจะได้รับ}
\begin{enumerate}
\item ช่วยอำนวยความสะดวกผู้สอนและนักศึกษามีเวลาในการเรียนการสอนมากขึ้น
\item ช่วยให้นักศึกษามีความกระตือรือร้นในการมาเรียนและตรงต่อเวลา
\item ผู้สอนมีแหล่งเก็บข้อมูลการเข้าเรียนของนักศึกษาและป้องกันการชำรุดหรือเสียหายของข้อมูล
\item ผู้สอนตรวจสอบพฤติกรรมการเข้าเรียนของนักศึกษาได้ง่าย
\end{enumerate}
\newpage
\section{เครื่องมือที่ใช้ในการพัฒนา (Development tools)}
\subsection{ฮาร์ดเเวร์}
\begin{enumerate}
\item สมาร์ทโฟน (Smart phone)
\begin{itemize}
\item ทำงานบนระบบปฏิบัติการแอนดรอย์เวอร์ชัน 5.0 หรือ API Level 21
\item หน่วยประมาลผลกลาง Mediatek MT6753 Octa-core ความเร็ว 1.3 กิกะเฮิร์ตซ์ (Gigahertz, GHz)
\item หน่วยประมวลผลกราฟฟิกอย่างน้อย Mali-T720MP3
\item หน่วยความจำหลักอย่างน้อย 2 กิกะไบต์ (Gigabyte, GB)
\item หน่วยความจำสำรองอย่างน้อย 16 กิกะไบต์ (Gigabyte, GB)
\item หน้าจอแสดงผลความละเอียดอย่างน้อย 1080 x 1920 พิกเซล (Pixel)
\item หน้าจอแสดงผลขนาดอย่างน้อย 5 นิ้ว
\item กล้องถ่ายรูปความละเอียดอย่างน้อย 13 เมกกะพิกเซล (Magapixel)
\end{itemize}
\item เครื่องคอมพิวเตอร์ส่วนบุคคล (Personal computer)
\begin{itemize}
\item ทำงานบนระบบปฏิบัติการวินดโวส์ 10 (Windows operating system 10)
\item หน่วยประมวลผลกลาง Intel(R) Core(TM) i7-7500U CPU ความเร็ว 2.70 กิกะเฮิร์ต (Gigahertz, GHz)
\item หน่วยประมวลผลกราฟฟิก NVIDIA GeForce 960M ความจำ 4 กิกะไบต์ (Gigabyte, GB)
\item หน่วยความจำหลัก 4 กิกะไบต์ (Gigabyte, GB)
\item หน่วยความจำสำรอง 1 เทระไบต์ (Terabyte: TB)
\end{itemize}
\end{enumerate}
\subsection{ซอฟต์แวร์ (Software)}
\begin{enumerate}
\item Angular เวอร์ชั่น 8 เป็นเฟรมเวิร์ค (Framework) สำหรับทำหน้าเว็บแสดงผล โดยใช้ JavaScript ในการพัฒนา
\item MongoDB คือฐานข้อมูลแบบไม่มีความสัมพันธ์ของตารางซึ่งมีโครงสร้างแบบ NoSQL (Not Only Structured Query Language) มีรูปแบบการจัดเก็บข้อมูลแบบ JSON(JavaScript Object Notation)
\item Echo Golang เวอร์ชั่น 1.13 ใช้สำหรับทำเว็บเซิฟเวอร์ (Web Server) พัฒนาดัวยภาษา Golang
\item Postman คือเครื่องมือสำหรับช่วยในพัฒนา API (Applocation Programming Interface) ใช้ในการทดสอบการทำงานของ Service รวมถึงจำลอง Service
\item Visual Studio Code คือเครื่องมือแก้ไขและปรับแต่งโค้ดสำหรับพัฒนาเว็บแอปพลิเคชัน
\item Google Chrome คือโปรแกรมเว็บเบราเซอร์ (Web Browser) ใช้สำหรับเปิดเว็บไซต์และเป็นเครื่องมือที่ช้สำหรับตรวจสอบ หรือหาจุดบกพร่องของเว็บแอปพลิเคชัน
\end{enumerate}
\subsection{แผนการดำเนินการ}
ในการสร้างระบบเช็คชื่อดัวยคิวอาร์โค้ด ผู้พัฒนาได้แบ่งขั้นตอนการดำเนินงานไว้ด้วยกัน 7 ขั้นตอน ดังต่อไปนี้
%\begin{landscape}
%\sffamily
\begin{table}[H]
\noindent
\caption{ขั้นตอนการดำเนินงาน}
\begin{ganttchart}[
canvas/.append style={fill=none, draw=black!5, line width=.75pt},
vgrid={*2{draw=black!7, line width=.75pt}},
title label font=\bfseries\footnotesize,
bar label node/.append style={
align=left,
text width=width("7. Functional Testing On")},
bar/.append style={draw=none, fill=black!63}
]{1}{22}
\gantttitle{2562}{10}
\gantttitle{2563}{12}\\
\gantttitle{ต.ค.}{2}
\gantttitle{พ.ย.}{2}
\gantttitle{ธ.ค.}{2}
\gantttitle{ม.ค.}{2}
\gantttitle{ก.พ.}{2}
\gantttitle{มี.ค.}{2}
\gantttitle{เม.ย.}{2}
\gantttitle{พ.ค.}{2}