VIETNAM NATIONAL UNIVERSITY HOCHIMINH CITYUNIVERSITY OF INFORMATION TECHNOLOGY ADVANCED PROGRAM IN INFORMATION SYSTEMS AN AUTOMATIC SYSTEM FOR QUESTIONS MANAGEMENT AND MULTIPLE-CHOICE TE
A Ý›
Some systems in Viet ẽNam - 6 + St 1211111 1111910 HT HH HH gen 2
1.2.1.1 Cungthi.online io 7 cungthi.online
Dễ dàng tạo va quản lý ngân hang câu hỏi theo chủ đề.
Tạo và quản lý nhóm, lớp học thuận tiện.
Bắt đầu cùng với cungthiontine
Cungthi is one of the most largest website in create quiz field With IT support, they do the quiz create very detail From class, from subject of student, With simple user interface, cungthi make teacher can easier to make their quiz and the question bank.
Besides that, cungthi support for uploading slide to teach online via the website. Student can access and view the video their teacher uploaded.
But this website seem like lack of support for teacher who is in the university and colleges
1.2.1.2 Studio.exam24h.com tIunf] =ằ=› Tạo một kờnh mới và đăng tải đề thi Online thật dễ dang sa 9 -R _
Trở thành kênh chính thức để tiếp cận nhiều người dùng hơn
Figure 1.2.2 studio.exam24.com website
This is another kind of website for creating quiz It’s like a education community which support some channel for studying belong with the quiz creating It’s allow user for sharing their knowledge and how to learn at school for another can read it.
Even have some good things like above The website still no support for foreign teacher which mean that only for vietnamese teacher can use this website.
Some systems in WorldWide - 6 611211 vn HH TH HH re 4
The quiz maker that's easy to use, fun and fully customizable HOW MUCH OF A GEEK ARE YOU? a
Why should you make a quiz?
Figure 1.2.3 Typeform.com website Typeform takes quizzes and makes them intuitive for both the creator and the user.
By offering one question at a time and delivering the quiz in an attractive, responsive interface, Typeform has become a leader in the world of online quizzes and surveys.
The platform is easy to use with its drag-and-drop editing tools It’s also versatile, offering customer surveys, quizzes, lead generation tools, and more There are numerous templates to choose from which can be customized to your individual needs.
Using Zapier, Typeform can be seamlessly integrated into CRM services like HubSpot This way, all the data you collect is automatically added to your existing contacts.
However, it’s important to note some people might feel frustrated when receiving questions one at a time, since it can be more time-consuming Additionally, the free version limits you to collecting only 100 responses per month.
ClassMarker can be used for:-
A) Business usage such as skills and employment testing
B) Schools and educational purposes C) Promotional tests
E) All of the above and more
ClassMarker gives you multiple options for displaying results to Test taker and sending Test results via email.
A) I can choose to display results to users instantly once the Test is completed
B) | can choose to hide or reveal the correct answers when displaying results to
C) I can see the Test Duration, Points scored, Percentage and other statistics with
Test results D) | can select to have Test results emailed to my Test takers and/or Myself.
ClassMarker is a quiz maker designed for education professionals with custom plans for business users, too You can create tests and exams online that are accessible to as many users as you like The test can be customized to your branding and can even include branded certificates A sophisticated results platform allows you to easily analyze the data and draw your conclusions.
This is a good option for large businesses who need to survey a lot of users Pricing plans are pretty competitive for the level of functionality and customization available.
Comment aR ẽể7ốếổ “số ` hố
Overall, all website above have some same function as: create a only quiz, make some new question and answer to the bank.
But there are some limit:
- The variety in type of test.
- Inability to automatically generate a printed sample of the quiz in a given format.
- Can not manually generate the test according to the predetermined diffuculty and format.
Objectives and SCOD€ 1E ST 11101 11111111 ngư 6
THEORETICAL BAASIS - - Ăn nh mg 7
Technical background oo cececccessesessssesesessesseseseseeseseseeseseeseseseeseeeseseeeesesseseeeesesseeeaes 7
Hypertext Markup Language(HTML) is the normal markup language for documents designed to be shown in a web browser It may be supported by technologies such as Cascading Style Sheets (CSS) and scripting languages like as JavaScript.
Website receive HTML reports file from an online server or local storage and render the documents into multimedia sites HTML groups the model of an internet page semantically and originally included cues for the looks of the document HTML components, written using angle brackets, are delineated by tags.
JavaScript(JS) is a very effective language for client-side scripting JavaScript is used specifically to enhance a user's engagement with the website In other words, with the assistance of JavaScript, you can make your website more colorful and social In game creation and smartphone device development, JavaScript is still commonly used.
Structure Query Language(SQL) is a database query language used in Relational DBMS for the collection and management of data SQL was the first commercial language introduced for the database Relational paradigm of E.F Codd Almost all RDBMS(MySq], Oracle, Infomix, Sybase, MS Access) now use SQL as the standard language for database queries In Relational Database Ma, SQL is used to run all types of data operations.
API is an acronym that stands for Platform for Application Programming More simply,the term is 'a set of functions and procedures enabling applications to be developed that access the OS, server, or other service features or data.' Currently, it is not a database,but rather a component of the server that helps multiple programs to attach with one another APIs work with the burden of accepting inquiries and returning answers as a middle man Imagining the rhythm of a restaurant may be a simple way of considering this You order a meal through the waiter(API) from the customer(your application),who then relays your order to the kitchen (the system) The kitchen produces the food(response) and it's taken back to you by the waiter it's important to recollect that these answers aren't exclusively limited to data alone which multiple APIs are often used for various purposes.
Your data and software (and brand) become more valuable by being leveraged by partners, developers, and third-party services.
*) | have access to apps that provide richer exper by leveraging the data and
Figure 2.1.2 Flow of using API
REpresentational State Transfer (REST) is an architectural style that describes a collection of web service creation restrictions to be used The REST API is a quick and versatile means of accessing web resources without any processing.
In general, REST technology is preferred to the more robust Basic Object AccessProtocol (SOAP) technology, since REST uses less bandwidth, making it faster and more versatile to use the internet It is used to collect or include such data from a web server Only the Hypertext Transmission Protocol (HTTP) request was used for allREST API communication.
Client sends a request HTTP methods Server sends a response
The word CRUD is closely associated with modern data processing CRUD applies, to be more precise, to the acronym of four simple persistent database server operators:
- Read or Retrieve (read datasets)
- Delete or Destroy (destroy datasets) Simply put, in order to build and handle data, the word CRUD sums up the functions that users require There are several data processing systems focused on
CRUD, whether the job involves handling files or using software, and sometimes these procedures are precisely customized to both the user and the device in question.
Following this, practices are important access resources that enable experts to check database issues CRUD for users involves the creation (creation) of an account that can be used (read), changed (updated), or removed at any time CRUD operations are performed very differently depending on the language environment, as the following table demonstrates:
CRUD Operation SQL RESTful HTTP
Table 2.1.1 Table of CRUD operation
Web-based programs are a special category of program that enables users, via a web browser interface, to communicate with a remote server In recent years, they have seen a massive rise in popularity, replacing desktop apps and being a critical platform for small and large organizations around the world.
Web-based programs, most importantly their portability, have a range of benefits over conventional desktop software Users don't have to install extra applications for web-based technology, and developers don't have to write several copies of the same program for different operating systems.
Figure 2.1.4 Web based application work
A hierarchical application system that divides activities or workloads between a resource or service provider, called servers, and service requesters, called clients, is the client-server model Clients and servers frequently operate on different machines over a data network, but both the client and the server can be on the same machine One or more server programs that share their services with clients are run by a server host A client does not share any of its services, but from a server it requests content or service. Therefore, clients begin chat sessions with servers, anticipating incoming requests. Examples of computer applications that use the client-server model are email, network printing, and the World Wide Web(WWW).
Clients — _ lai lý Pp Server
Database
A database may be a different program during which a group of knowledge is stored For building, accessing, maintaining, searching and replicating the information it contains, each database has one or more distinct APIs.
It is also possible to use other sorts of data stores, like files on the classification system or large hash tables in memory, except for those styles of structures, data collection and writing won't be so simple and convenient.
Nowadays, to store and handle massive volumes of information, we use computer database management systems (RDBMS) this can be called the electronic database
12 where all the data is contained in multiple tables and first keys or other keys like Primary Keys construct relationships.
A Relational DataBase Management System (RDBMS) is a software that —
Enables you to implement a database with tables, columns and indexes.
Guarantees the Referential Integrity between rows of various tables.
Interprets an SQL query and combines information from various tables.
For several small and big corporations, MySQL is a smooth, easy-to-use RDBMS. MySQL is produced, sold, and sponsored by a Swedish corporation named MySQL
AB For many good reasons, MySQL has been so popular-
MySQL is released under an open-source license So you have nothing to pay to use it.
MySQL is a very powerful program in its own right It handles a large subset of the functionality of the most expensive and powerful database packages. MySQL uses a standard form of the well-known SQL data language.
MySQL works on many operating systems and with many languages including PHP, PERL, C, C++, JAVA, etc.
MySQL works very quickly and works well even with large data sets.
MySQL is very friendly to PHP, the most appreciated language for web development.
MySQL supports large databases, up to 50 million rows or more in a table. The default file size limit for a table is 4GB, but you can increase this (if your operating system can handle it) to a theoretical limit of 8 million terabytes (TB).
MySQL is customizable The open-source GPL license allows programmers to modify the MySQL software to fit their own specific environments.
Vue js is a modern platform for user interface building (UI) Vue is built from the ground up to be incrementally adoptable, unlike other monolithic architectures The core repository focuses exclusively on the view layer and can quickly be picked up and combined with other repositories or current ventures In the other hand, when used in conjunction with current tooling and supporting libraries, Vue is also perfectly able to power complex single-page applications.
Node.js is a runtime environment for open-source and cross-platform JavaScript. For almost every form of project, it is a common method!
Outside of the browser, Node.js runs the V8 JavaScript engine, the foundation of Google Chrome This enables Node.js to be very powerful.
In a single method, a Node.js app is executed without generating a new thread for any order In its standard library, Node.js includes a series of asynchronous I/O primitives that prohibit JavaScript code from blocking and, in general, Node.js libraries are written using non-blocking paradigms, making blocking activity an exception rather than the rule.
Node.js will resume processes when the response comes back, instead of halting the thread and wasting processor cycles waiting as Node.js performs an I/O procedure, such as reading from the network, accessing a database or filesystem.
This helps Node.js to manage thousands of simultaneous host-to-single server connections without incurring the responsibility of handling thread rivalry, which may be a huge source of glitches.
Node.js has a unique benefit that, in addition to the client-side code, millions of frontend developers who write JavaScript for the browser are now able to write the server-side code without the need to learn an entirely new language.
You will quickly use the latest ECMAScript specifications of Node.js and you don't have to wait on all the users to upgrade their browsers - you are responsible for determining the version of ECMAScript to use by updating the version of Node.js, and you can even allow unique experimental features by running Node.js with flags.
The most popular Node web framework is Express, and for variety of other popular Node web frameworks, it's the elemental library It offers frameworks for:
- Write handlers for requests with different HTTP verbs at different URL paths (routes).
- Integrate with "view" rendering engines so as to get responses by inserting data into templates.
- Set common web application settings just like the port to use for connecting, and also the location of templates that are used for rendering the response.
- Add additional request processing "middleware" at any point within the request handling pipeline.
Although Express itself is fairly minimalist, developers have built compatible packages of middleware to unravel almost every issue with web creation Working with cookies, sessions, user logins, URL parameters, POST info, protection headers, and lots of more, libraries exist an inventory of packages of middleware managed by the Express team is found at Express Middleware (along with an inventory of some popular 3rd party packages).
Amazon web services are a set of cloud services that offer cloud-based processing, storage, and other features that enable companies and individuals to deliver on-demand and commodity-priced software and services Using REST and Basic Object Access Protocol (SOAP) protocols, Amazon Web Services services can be accessed via HTTP.
Docker is an open platform for creating, delivery, and running applications Docker empowers you to isolate your applications from your foundation so you will delivery software quickly With Docker, you'll be able to manage your infrastructure within the same ways you manage your applications By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you'll significantly reduce the delay between writing code and running it in production.
Theoretical background and our appèiCafùOn - ¿5+ ++s+s+x+x+exexexerseexresexes 17
Three required factors to generate a quiz:
- Template: This is a general frame of quiz Including answersheet and a section which displays information of that quiz This factor can be used for many quiz.
- Examination: Contains all information of an examination.
- Configuration: An important factor, it has number of question of each level and the total This one is inputed based on the need of user.
After choosing above elements, the system will get the template first, then fill information from an examination into it Then the system uses the configuration to take questions from database randomly but fit with requirement of user And these questions will be generated into the quiz In the end, user will receive the final quiz with exact requirement they chose in the begin.
2.2.2 Manage variety type of quiz
The quiz we make here to manage all the type of question like single-choice, multiple-choice, match, fill in the blank,
In order to store and using all the type of question, we create a question table to store the question content Then in the answer database, we using 3 element that can display all the answer of all type of questions.
Content: is the answer content that display in the quiz.
IsCorrect: is the correct answer ( with single and multiple choice question, display in 0 and I with | is the correct answer)
CorrectAnswer: normally if the question is single or multiple choice in here is blank, but if the question is match there is a correct answer with the content and the IsCorrect is 1 If the question is fill the blank CorrectAnswer here we store the correct word for the question.
We using rand() function in mysql base on the config database which store the number of question for each level.
The rand() function is returns a random floating-point value between the range 0 to
1 When a hard and fast integer value is passed as an argument, the worth is treated as a seed value and as a result, a repeatable sequence of column values are returned.
In our website, the we using the rand() syntax:
“SELECT ID FROM question where type = ${type} and level = '${level}' and IsDeleted = 0 ORDER BY RAND() LIMIT ${quantity}
With the type,quantity and level is pass throught the api And we using the rand() to get the random question id.
GET y http://localhost:5000/v1/question/getrandom?type=Single Choice&quantity=5&level=1
Params @ Authorization Headers (7) Body Pre-request Script Tests
3ody Cookies Headers (8) Test Results @ Status: 2000K Time: 126 ms
SYSTEM ANALYSIS AND DESIGN -. ST, 19
Analysis requirements
Question management: Allows adding, deleting, editing, support teacher to search with content they need
Answer management: Allows adding, deleting, editing, support teacher to search with content they need
Topic management: Allows adding, deleting, editing, support teacher to search with content they need.
Config management: allow adding, deleting, editing, support when creating config count total number of questions by each level.
Template management: allow deleting, adding by import file config with requirement inside Support to review config before create a complete quiz. Quiz management: allow view only Have a final page for print.
User management: allows adding, delete, editing for only admin and super admin.
Examination management: allows adding, deleting, editing All page must have a pagination, filter by value, order by id and export to excel if needed.
Requires website with friendly UI, can use easily for every teacher, stable and good performance.
WSs Question Topic ĐỘC Management
1 Super Highest authority, can do all function and account can not be
2 Admin Authorized by super admin, can do all functions but can not delete super admin
Teacher Normal account Do anything except user management
1 User management Add, delete, edit account.
Export all data to excel file
2 Question management Add, delete, edit question.
Export all data to excel file
3 Answer management Add, delete, edit Answer.
Export all data to excel file
4 Config management Add, delete, edit config.
Export all data to excel file
5 Template management View and import template.
6 Examination management Add, delete, edit examination Export all data to excel file
7 Question topic management Add, delete, edit question topic Export all data to excel file
8 Quiz management View and export all data
9 Topic management Add, delete, edit topic.
Export all data to excel file
Table 3.2.2 Description of use case
Activity diagram
Navigate to page belong with role
3.3.6 Quiz management process quiz management
Visit quiz generate manage site
Del ete ED Update page
3.3.9 Topic management process topic management
CieteSAt catetne rK | our mitt)
` pated: tt) £ ne ‘Question: ml)
Updated dan nà mw Croat) sDekro4 it
Descrator angst mẻ Headercontent longtet NumberQuestonteveSn$0)
Content String Main content of topic(topic name)
CreatedAt Datetime Time when created
UpdateAt Datetime Time when updated
Table 3.4.1 Description of topic table
CreatedBy Id of user create
Updateby Id of user update
IsDeleted Value to know which topic is delete or not
Table 3.4.2 Description of questiontopic table
NO Attribute name Datatypes Meaning ae ee oe
Content String Main content of topic(topic name)
CreatedAt Datetime Time when created
UpdateAt Datetime Time when updated
Table 3.4.3 Description of question table
NO Attribute name Datatypes Meaning
1 ID int Id of entry
Content String Main content of topic(topic name)
Question Int Id of question
}4 | IsCorrect Boolean Correct answer, use for choice question
5 CorrectAnswer String Correct answer, use for fill the blank question
/6 | CreatedBy Int Id of user create
7 CreatedAt Datetime Time when created
8| Updateby Int Id of user update
/9 | UpdateAt Datetime | Time when updated ime IsDeleted Int Value to know which topic is delete or not
Table 3.4.4 Description of answer table
NO Attributename Datatypes Meaning mm ID int Id of entry mm Duration Int Time of exam
3| Semester String Semester of exam
}4 | Notes String Notes of teacher for this exam
5 Department String Department of exam
}6 | Course String Course of exam
7 CourseCode String Course code of exam
/8 | Academic Year String Year of exam taken
/9 | Lecturer String Teacher who do this exam
10 | Description String Description about exam jue CreatedBy Int Id of user create
IV CreatedAt Datetime Time when created
Kee Updateby Int Id of user update
15 Int Value to know which topic is delete or not
Table 3.4.5 Description of examination table
NO Attribute name Datatypes Meaning
ID int Id of entry
TemplateName String Name of template
3 Description String Description of template
String Content of quiz String Answer sheet for quiz
Int Id of user create
TInt Id of user update
Datetime Time when updated Int Value to know which topic is delete or not
Table 3.4.6 Description of template table
NumberQuestionLevell Int Number of question level 1 NumberQuestionLevel2 Int Number of question level 2 NumberQuestionLevel3 Int Number of question level 3 NumberQuestionLevel4 Int Number of question level 4 NumberQuestionLevel5 Int Number of question level 5 NumberQuestionLevel6 Int Number of question level 6
NumberQuestionLevel7 Int Number of question level 7
NumberQuestionLevel9 — Int Number of question level 9
CreatedBy Id of user create
Updateby Id of user update
IS IsDeleted Value to know which topic is delete or not
Table 3.4.7 Description of config table
CreatedBy Id of user create
Updateby Id of user update
IsDeleted Value to know which topic is delete or not
Table 3.4.8 Description of quiz table
NO Attribute name Datatypes Meaning
ID int Id of entry
Quiz Int Id of quiz
3 QuestionID Int Id of question
}4 | CreatedBy Int Id of user create
CreatedAt Datetime Time when created
/6 | Updateby Int Id of user update
UpdateAt Datetime Time when updated
8| IsDeleted Int Value to know which topic is delete or not
Table 3.4.9 Description of quizcontent table
ID int Id of entry
Username String Username for user login
Password String Password for user login
4 | Fullname String Full name of user
Role ENUM Role of user
}6 | CreatedBy Int Id of user create
CreatedAt Datetime Time when created
8| Updateby Int Id of user update
/9 | UpdateAt Datetime Time when updated
IsDeleted Int Value to know which topic is delete or not
Table 3.4.10 Description of user table
Relational điaBT4Im .- - c2 233333133 335115111 1111211711111 11.1 TxrkE 32
Open terminal on folder backend
After install all packages needed.
Wait for it run to see: Database connected and then it’s work perfectly.
[nodemon] 2.8.4 [nodemon] to restart at any time, enter “rs”
[nodemon] watching extensions: js,mjs,7json [nodemon] starting “node index index.js”
Server is listening on port 5888 Database Connected!
Open terminal on folder frontend
After install all packages needed.
Wait for it run to see: html link of website and then it’s work perfectly.
RESULTS AND DEPLOYMENT - - SH ng 38
Development enVirOnIm€II( - - 5:52 S+S+EE+E+E+EEEESESEEEEEEESEEEEEEkrkrkrkrkrkrrrrrkek 38
Open terminal on folder backend
After install all packages needed.
Wait for it run to see: Database connected and then it’s work perfectly.
[nodemon] 2.8.4 [nodemon] to restart at any time, enter “rs”
[nodemon] watching extensions: js,mjs,7json [nodemon] starting “node index index.js”
Server is listening on port 5888 Database Connected!
Open terminal on folder frontend
After install all packages needed.
Wait for it run to see: html link of website and then it’s work perfectly.
Note that the development build is not optimized.
To create a production build, run npm run build.
Some graphical images of r€SUẽ( -¿- - 2+ 232 33+ E*E+EESEtEEEEeEtrrerrtrrrrsrrrsrrsrerree 39 "9U
Hl Deploying Nodes Apps to AW © Microsot Word - Onlin intelige x | (1) Messenge SIS TREE) @ Osis Warageme x - 8 x
4.2.11 Template page we Datecrests Template Name Description Status Actions
4.2.14 User page e 1D Ascend admin z#min@omallcom Super Admin Actos
P00
Firstly you need to install docker from here
Then run terminal in the folder backend
If it run like normal terminal run then it will display a same response.
Exit the process with CTRL + C
Now push the image to Ducker hub:
In here I use EC2 services in AWS for create an instance to running in linux for always run the api app in its
After setting all in EC2, we will head back the terminal and navigate to the folder where the key-pair you downloaded earlier is located It will be named as whatever you entered for the key-pair name, with a pem as its extension
Let’s change the key’s permissions and then SSH into the EC2 instance
$ chmod 400
From here, we just need to launch our app via Docker:
$ docker run —d —p 5000:5000 /appname
You'll be able to rach the instance using the same address you used to SSH into the instance Simply navigate the browser to:
Your app should return the status endpoint to you that we have done.
System test
By using automatically so that our system have the accuracy when create quiz is up to 99% with the time running very small
Our system reduce the time for quiz progress in about one or two days to at least 4-
6 hours to complete and print the quiz.
With others system, our system have the import and using template which no website online support it.
Chapter 5 CONCLUSION AND FUTURE WORK
After researching the project, tools, framework we have gained the following knowledge:
- Building a Quiz management system website with basic functions in manage and create quiz
- Learned a new framework: Nodejs, Vuejs, Docker
- Learned how to work with teammate under pressure
- Well-look UI, easy to use and easy maintanc, develope more function
- Safe storage question and answer bank in database
- The system brings many benefits to teacher by helping them reduce their time in create quiz.
- Our website function still limited
- Teacher need to have their own style in template for them to make their own quiz
- Time when get data from database still not stable when query a large question at the moment
- Need to optimize time for better time running when create quiz
- Have a multiple language for more wide use
- Need to make to a cross-platform application
- Need to develop a deep learning for evaluate the level of question due to real result in each exam taken to modify the level reasonable.
[1] Deploying Node.js Apps to AWS EC2 with Docker [Online] Available at:
[Accessed on 10" October 2020]
[2] Vue.js document [Online] Available at:
< https://vuejs.org/v2/guide > [Accessed on 5" July 2020]
[3] Nodejs document.[Online] Available at:
< https://nodejs.dev > [Accessed on 15 September 2020]
[4] Express.js document [Online] Available at:
[Accessed on 20" July 2020]
[7] Javascript introduction [Online] Available at:
[8] Introduction about SQL [Online] Available at:
< https://www.studytonight.com/dbms/introduction-to-sql.php > [Accessed on 17%
[9] Introduction about APIs [Online] Available at:
< https://dev.to/mshin1995/a-basic-introduction-to-apis-27a0> [Accessed on 24" July
[10] Restful api [Online] Available at:
< https://phpenthusiast.com/blog/what-is-rest-api > [Accessed on 22"4 June 2020]
[11] CRUD introduction [Online] Available at: