SHATIN TSUNG TSIN SECONDARYSCHOOL HKCEE 2009 Computer and Information Technology Coursework Multiple-Choice Analysis Report
Name:
Law Shan
Class:
5A(20)
Supervisor
Mr. Lee Kin Chung
Content 1. Introduction .........................................................................................................4 - Background ........................................................................................................ 4 - Objectives ........................................................................................................ 6 - Task Objective .................................................................................... 6 - Learning Objective .............................................................................8
2. Analysis ................................................................................................................. 11 - Choice of Language ........................................................................................... 11 - Rationale of choosing language ......................................................................... 12
3. Design .................................................................................................................... 17 - Project Planning ................................................................................................. 17 - Project specification ........................................................................................... 19 - Main Menu ......................................................................................... 19 - Individual entry................................................................................... 20 - Searching entry .................................................................................. 21 - Filtering entry .................................................................................... 23 - Display Report ................................................................................... 26 - Awards ................................................................................................ 29 - Editing entry .......................................................................................31 - Output Report......................................................................................33 - Operation Rules ................................................................................................. 34 - Program Flow Chart ........................................................................................... 36
4. Implementation .................................................................................................. 37 - Samples .............................................................................................................. 37 - File Structure ...................................................................................................... 46
2
- Program listing ................................................................................................... 47
5. Testing and Evaluation .................................................................................... 83 - Testing table ....................................................................................................... 83 - First Test (26 / 8 / 2008) .................................................................... 83 - Second Test (15 / 9 / 2008) ................................................................ 92
6. Discussion and Conclusion ............................................................................. 101 - Discussion ..........................................................................................................101 - Strengths of the program .................................................................... 101 - Weaknesses of the program ................................................................ 103 - Suggest improvements ........................................................................ 104 - Conclusion ......................................................................................................... 105
7. Reference .............................................................................................................. 107 - Books ................................................................................................................. 107 - Websites ............................................................................................................. 108
3
Introduction - Background Information
Since the use of computer is very common nowadays, lots of work can be done by using computer and with suitable software. Computer is highly reliable that it seldom fails. It also has a high accuracy that it never does wrong things unless bug presents. The large capacity and high processing speed make computer more popular as it records many files and saves lots of time for people to do other things. Therefore, the applications of computer are varied. Multiple-choice questions always related closely to our daily life. It appears in your tests, work and examinations. We do the questions carefully to make sure that we fill in the correct blanks. However, how do you feel if the marker marks wrongly? In the past, people marked multiple-choice questions and collected data manually. Therefore, it was very time-consuming and wasted lots of manpower. If you want to save the data in computer, you need to key in the large amount of data at once. Therefore, mistakes are made easily by marking manually. In 1951, David Sheppard invented the first Optical Character Recognition (OCR). At first, OCR could only recognize English characters. Nowadays, this technology is greatly developed. It can also recognize Chinese characters. Thus, it has been applied to different areas, such as business, research, study, etc. OCR helps a lot, especially in business. For example, the bank handles a huge numbers of data for investments and this may cause a gain or lost. If there is any mistake or delay when handling the data and costs a lost of its
4
Introduction - Background Information
client, it needs to compensate for the lost. As the time of using OCR to input data in computer is very fast, we can save time and manpower. Also, it can afford the manual mistakes. Therefore, the problems mentioned before can be solved. Moreover, OCR also helps a lot when marking multiple-choice questions. When the multiple-choice answer sheet is put into the OCR, it scans the answer as an image. Then, the image is changed to characters. Thus, the answer we had chosen can be correctly input into computer and the analysis of the results can be carried out then. OCR is so user-friendly that we can use it without any expertise. Thus, it is used by teachers, students and researchers. We can have many detailed multiple-choice analyses because of OCR. It saves lots of resources for us to do these analyses.
5
Introduction - Task Objectives
In this coursework, a program is used to produce a detailed analysis report on an inter-school mathematics competition, which is in the form of multiple-choice questions. The program should contain the following functions: First, the program will contain a menu function which can let the user to choose different functions. On the main menu, there will be eight options: showing individual entry, search entry, filter entry, display report, award, edit entry, output report and exit. Having a menu with instructions is clear and convenient for user to use as the user does not need to think of the techniques for using the program. Moreover, the user does not need to input anything, except searching, this reduces the chance of making transcription errors. Second, it will have a bar chart function which shows the position of the each participant and the analysis graphically. This has an advantage that the user can see clearly and immediately where the positions of students are in the ranking. Also, the user does not need to create a chart by himself/ herself. Third, the program will have a function which helps the user to produce a text file. Thus, the user can print out the report in the form of text only. It is more convenient than printing different parts of the report one by one which waste a lot of time and ink. Forth, this program will have a function which allows the user to search specific entry. He can search by ranking, age, id, school and name, etc. It provides a faster method for the user to read a specific data. This saves lots of time, especially for the competition
6
Introduction - Task Objectives
which holds a lot of data. To search by ranking, the user can quickly find out which participants is at the top of the list and who is at the bottom. To search by age, the user can know participants at which age can do better in the competition. To search by id, to user can rapidly find out the data of specific participant which save time for searching one by one. Sometimes, searching one by one can also miss the data you want. Thus, this can ensure you will not miss out any. To search by school, the user can quickly find out all participants who are from the same school. If the user search one by one, he may also miss some.
To
search by name, it is just as same as search by id. However, there maybe more than one participant whose name are the same. In this condition, the user have to check with the other data and cause inconveniences. There is still a benefit, if the user does not know the id of the participant.
7
Introduction - Learning Objectives
Doing this project, writing program, typing project and doing presentation, all the things have to be done by myself. Although I had done a project of Computer and Information Technology before, this is the first time I do the whole project individually. Therefore, I hope I can learn more than before. The things that I had learnt are listed as following: First, it will enhance my programming skills. In this project, the programming language I used is pascal. Although I have been learning it since form three, I found that what I had learnt in the lesson is not sufficient. In order to meet my planning, I have to find out some other skills on the Internet and try to digest it all by my own. Also, debugging is a great experience for me to improve the programming skills as I can discover my own mistakes and solve it. Therefore, I will never make the same mistake again. Second, I can improve my English. Doing this project, I have to type the report in English. I need to explain every step of the project clearly without leading any misunderstanding. Therefore, no matter more or less, my English must have been improved. The benefit is long lasting. Third, I can enhance my presentation skills. In this project, I have to present my program to teachers and classmates. I have to present it with PowerPoint, thus, I can revise the use of PowerPoint and this improved my skills on PowerPoint. Forth, I can improve my problem solving skills. In this project, the report includes
8
Introduction - Learning Objectives
analysis and implementation; I will learn how to divide a big problem into different parts so I can solve smaller problems easily. Also, during debugging, I have to figure out which parts go wrong and solve it. Therefore, my problem solving skills will be improved a lot. This will be beneficial for my next project soon or late in the future. Fifth, I can be braver. During the presentation, I have to face my teachers and classmates. I present my program to them by using English. That is no easy task. I have to overcome the pressure made by my teachers and classmates. I leave my comfort zone to use a foreign language. I am brave. Sixth, I can increase the knowledge in Internet. Doing the program, I have to search some websites which teach people the skills of pascal. I discover that using Internet can do many things. Also, I find some skills which help me to search things easier. Moreover, I know which search engine is better now. Seventh, I can increase my knowledge in technology. During the process, I have to search some history of OCR. This will build up my mind on OCR. Also, this can broaden my horizon in technology. Since the invention of OCR, there are numerous types of OCR in the world that I could never dream of. Last, I am more interested in technology and computer. As computer can do many things for us and brings lots of convenience, I will be more interested in computer to find out more benefit of it and make my life become easier. I am interested in technology now. I
9
Introduction - Learning Objectives
become more interested in comparing the difference between two different brands of electric appliances like mobile phone, computer, printer, etc. to figure out the strengths and weaknesses between them. I really get lots of experiences and benefit from this project. Doing this project is no easy task for me, but I finished it at last.
10
Analysis - Choice of Language
As the technology has improved a lot, there are many different types of programming language and their attributes are different. Different attributes such as speed, size, compatibility, etc. of programming language cause a big difference in your program as some programming languages may not be able to do some tasks. Therefore, choosing a suitable programming language is extremely important and essential before the program is developed. „
Choice of language After analysis, I prefer choosing Pascal to other programming languages for my
project. Also, I have found some information about Pascal on the Internet. According to Wikipedia:
“Pascal has its roots in the Algol 60 language, but also introduced concepts and mechanisms which (on top of Algol's scalars and arrays) enabled programmers to define their own complex (structured) datatypes, and also made it easier to build dynamic and recursive data structures such as lists, trees and graphs. Important features included for this were records, enumerations, subranges, dynamically allocated variables with associated pointers, and sets. To make this possible and meaningful, Pascal has a strong typing on all objects, which means that one type of data cannot be converted or interpreted as another without explicit conversions. Similar mechanisms are standard in many programming languages today.� Therefore, Pascal is suitable to use in this because the features and function of pascal can fulfill the requirement of the program in the project.
11
Analysis - Rationale of choosing language
In this part, I would like to compare a number of programming languages about their strengths and weaknesses so as to find out a suitable language in this project. 1. Pascal z
Strengths of Pascal Pascal is easy to use and understand. Therefore, it is easy for user to debug. Moreover, the excute speed is fast enough to handle the program. Pascal has a very high compatibility as the compiled excutable file can be run on most platform. Also, the program can be very user-friendly as the layout of the program can not be very complicated. In addition, Pascal is a free ware, people can access to the official website and download it with no charge.
z
Weaknesses of Pascal The storage capacity of Pascal is smaller compare with the other programming languages. For example, the range of integer is only ranged from -32767 to 32768. Therefore, a larger number cannot be calculated.
2. PHP (PHP: Hypertext Preprocessor) z
Strengths of PHP User of PHP does not need to download excludable program as it is run on server. Also, the program is run on the server through Internet, thus, this provides an interactive act. Moreover, the webpage layout is depended on the
12
Analysis - Rationale of choosing language
design so the interface is user friendly. In addition, PHP is an open source program. Thus, we do not need to pay before using it. Last but not least, the compatiblity is high because the users only receive webpages. Therefore, the program can be used in most platforms and OS such as Window, Linux and Mac OS. z
Weaknesses of PHP This program must need the setup of server to compile. If the server is down, the program cannot be used. Moreover, it is really unconvenient that everytime the user wants to use it, he needs to connect to the Internet and have browsers to run the program. If the network is not accessable, he cannot use the program also. The stability of the program is depended on the server. Therefore, when the server is overloaded, the stability is a question.
3. Java z
Strengths of Java People can access to the Internet to its official website and download the development kit to develop Java program as Java is an open source programming language.
z
Weaknesses of Java A higher requirement of computer is needed for running the Java program.
13
Analysis - Rationale of choosing language
Also, before running a Java program, the user has to install the Java platform for the Java program to run. 4. C++ z
Strength of C++ The strength of C++ is that the requirement of the computer is low for running a compiled executed file of C++. Therefore, it can be run in most computers and is quite portable. C++ supports both Structured Programming and Object-Oriented Programming. When comparing with the other programming languages, The processing speed of C++ is faster.
z
Weaknesses of C++ The weaknesses of C++ are most users do not want. It is because programmer needs to PAY before writing the program as most compiler of C++ are not free. Furthermore, the user has to download the program before they can run it and there is less interaction between users.
5. Visual Basic z
Strengths of Visual Basic The most significant strength of Visual Basic is that it is in Graphical User Interface (GUI) . Therefore, the program is user friendly. The code of Visual Basic is easy to understand so it is more easy for programmer to debug.
14
Analysis - Rationale of choosing language
z
Weaknesses of Viusal Basic First, visual basic is a program developed by the Microsoft Co. , therefore , we need to purchase the software before we can use it. Users may not be willing to use it. Moreover, some extensions drivers have to be installed to use the functions of the program as its file size is quite large. If the user do not install the extensions delivers, the program may not be run. Furthermore, the program can only be run in Window environment.
From the above information, a table can be drawn for easier and clear comparison: Pascal
PHP
C++
Java
Visual Basic
Product
Executable file
Webpage
Executable file
Executable file
Executable file
Interface
Console
GUI
GUI
GUI
GUI
Open source
No
Yes
No
Yes
No
Free ware
Yes
Yes
No
Yes
No
Compatibility
Medium
Depends
High
High
Medium
Medium
Difficult
Difficult
Easy
Understandable Easy
15
Analysis - Rationale of choosing language
Conclusion: After comparing with the other programming languages, Pascal has lots of advantages. Although Pascal is not the best in each comparison, it does better in average. The product of the programming languages does not affect my choice. Thus, I just left it behind. Pascal is not Graphical User Interface(GUI) so it is a disadvantage. However, it is not a big deal. Pascal, C++ and Visual Basic are not open source while PHP and Java are. Nevertheless, when I look at category that is it a free ware, Pascal can still take a place as it is a free aware. Money is my first concern. When I look at the compatibly, pascal is not that bad. It is better than PHP as PHP is not stable. It comes to the important part, the easiness of writing the program. Pascal is the easiest among the three free wares. Therefore, Pascal is used by me at last. The above conclusion can be express clearly and be easier to understand by drawing a flow chart.
16
Design - Project Planning
A Project plan is set up before the beginning of the project: Date
Task
15-17/5/2008
Research of different programming languages
18-20/5/2008
Analysis of different programming languages
28/5/2008
Study of guideline
30/5/2008
Submission of draft project proposal
26-27/6/2008
Adjustment of the draft project proposal
4/7/2008
Submission of project proposal
10/7/2008
Design the whole flow path of the program
18/7/2008
Construct the main program
24/7/2008
Study Pascal on the Internet
5/8/2008
Construct the functions
20/8/2008
Develop further functions
26/8/2008
First testing and debuging
1/9/2008
First adjustment of program
15/9/2008
Final testing and bugging
22/9/2008
Demonstration of product
15/10/2008
Research of OCR
17
Design - Project Planning
31/10/2008
Submission of draft report
1-3/11/2008
Prepare for presentation
4/11/2008
Oral Presentation
18-20/11/2008
Adjustment of report
10/12/2008
Submission of report and CD-ROM
18
Design - Project Specification
1.
Main Menu The main menu is the first page of the program that the user will see if he types in
the correct pathway of the program. A banner is shown at the top of the main menu showing ‘Welcome to the MC analyzer’. Also, the user can see a menu which shows eight options:
Welcome to the Multiple-Choice analyzer
1. 2. 3. 4. 5. 6. 7. 8.
Show individual entry Search entry Filter entry Display report Awards Edit entry Output report Exit
The main menu
19
Design - Project Specification
2.
Individual entry After choosing ‘individual entry’, the program will show each individual entry which contains every datum. When you press the space bar, it will show another individual entry. If you press ‘E’, you will enter to the edit menu. Then, if you press ‘Esc’, the program will go back to the main menu.
Show individual data Name: CHAN CHUN MAN Sex: M Age: 18 School: Shatin Tsung Tsin Secondary School Answer: ABCDACBCDABCDDCBADCABACDB Checking: OOOXXOXOOOXOOOOOXOOOXOOX Marks: 34 Ranking: 128 ======================== 1/172 ======================= Press SPACE to enter next page Press ESC to Exit
Individual entry
20
Design - Project Specification
3.
Searching entry After choosing ‘search entry’, the program will show another menu which contains the other four options:
Search Entry
1. 2. 3. 4.
Search by name Search by ID Search by ranking Back to menu
Search entry menu i)
Search by name When the user chooses ‘search by name’, the program will ask the user to input the name of the participant he wants to search. If the input from the user is present in the program, the program will show the individual entry of the searched participant.
Search Entry Please enter the name for searching:
Search by name ii)
Searching by id
21
Design - Project Specification
When the user chooses ‘search by id’, the program will ask the user to input the id of the participant he wants to search. If the input from the user is present in the program, the program will show the individual entry of the searched participant.
Search Entry Please enter the ID for searching:
Search by ID iii)
Searching by ranking When the user chooses ‘search by ranking’, the program will ask the user to input the ranking of the participant he wants to search. If the input from the user is present in the program, the program will show the individual entry of the searched participant.
Search Entry Please enter the ranking for searching:
Search by ranking iv)
Back to menu When the user choose ‘back to menu’, the program will go back to the
22
Design - Project Specification
main menu. 4.
Filtering entry After choosing ‘filter entry’, the program will show another menu which contains another six options:
Filter Entry
1. 2. 3. 4. 5. 6.
Filter by sex Filter by age Filter by school Filter by mark Filter by ranking Back to menu Filter entry menu
i)
Filtering by sex when the user chooses ‘filter by sex’, the program will ask the user to input ‘M’ or ‘F’ which represents male and female respectively. If the input is ‘M’, the program will show all data of male participants. If the input is ‘F’, the program will show all data of female participants.
Filter entry Please select M/F: Filter by sex ii)
Filtering by age When the user chooses ‘filter by age’, the program will ask the user to input age he wants to search. If the data is in the program, the
23
Design - Project Specification
program will show all participants who are in the searched-age.
Filter entry Please input the age: Filter by entry iii)
Filtering by school When the user chooses ‘filter by school’, the program will ask the user to input the school code he wants to search. If the data is in the program, the program will show all participants who belong to the searched-school.
Filter entry Please input the school code: Filter by school iv)
Filtering by mark When the user chooses ‘filter by mark’, the program will ask the user to input a mark he wants to search. Then, the program will further ask the user whether he wants to filter the data which are greater than the mark or smaller than. If the data is in the program, the program will show all participants who are in the range of searched-mark.
24
Design - Project Specification
Filter entry
Please input the mark: 34 Greater<1> or smaller<2> than 34: Filter by mark v)
Filtering by ranking When the user chooses ‘filter by ranking’, the program will ask the user to input a ranking he wants to search. Then, the program will further ask the user whether he wants to filter the data which are greater than the ranking or smaller than. If the data is in the program, the program will show all participants who are in the range of searched-ranking.
Filter entry
Please input the ranking: 120 Greater<1> or smaller<2> than 120: Filter by ranking vi)
Back to menu When the user choose ‘back to menu’, the program will go back to the main menu.
25
Design - Project Specification
5.
Display Report After choosing ‘display report’, the program will show another menu which contains another four options:
Display report 1. 2. 3. 4.
Candidates analysis Schools analysis Questions analysis Back to menu Display report menu
i)
Candidates analysis When the user chooses ‘candidates analysis’, the program will display candidates analysis.
Display report Total candidate: 172 Total school: 20 Male: 92 Female: 80 Age 16: 34 Age 17: 31 Age 18: 29 Age 19: 40 Press any key to next page….. Display report
26
Design - Project Specification
ii)
schools analysis When the user chooses ‘schools analysis’, the program will display schools analysis.
Display report
CUHKFAA CHAN CHUN HA SECONDARY SCHOOL Students: 3 Marks: 113 GCC&ITKD LAU PAK LOK SECONDARY SCHOOL Students: 11 Marks: 406 JOCKEY CLUB TI-I COLLEGE Students: 3 Marks: 112 Page1/4
Schools analysis
27
Design - Project Specification
iii)
Questions analysis When the user chooses ‘questions analysis’, the program will display questions analysis.
Display report
Q1 | Correct: 136 <79%> Q2 | Correct: 127 <74%> Q3 | Correct: 132 <77%> Q4 | Correct: 135 <78%> Q5 | Correct: 134 <78%> Q6 | Correct: 134 <78%> Q7 | Correct: 132 <77%> Q8 | Correct: 130 <76%> Page 1/6
Question analysis iv)
Back to menu When the user choose ‘back to menu’, the program will go back to the main menu.
28
Design - Project Specification
6.
Awards After choosing ‘awards’, the program will show another menu which contains another three options:
Awards 1. Awards for students 2. Awards for schools 3. Back to menu Awards menu i)
Awards for students When the user chooses ‘awards for students’, the program will display all the awards which are given to students.
Awards Gold award: CHAN SHUK YAN Silver award: CHAN WING SHAN Bronze award: YU HIU TONG Honorable Mentions: FUNG MING KIT YU SAU CHU KU KA MING KONG SHING YU Press any key to continue…..
Awards for students
29
Design - Project Specification
ii)
Awards for schools When the user chooses ‘awards for schools’, the program will display all the awards which are given to schools.
Awards Gold award: HKCWC FUNG YIU KING MEMORIAL SCHOOL Silver award: PENTECOSTAL LAM HO KONG SCHOOL Bronze award: NG YUK SECONDARY SCHOOL Honorable Mentions: MA ON SHAN TSUNG TSIN SECONDARY SCHOOL MA ON SHAN ST JOSEPH’S SECONDARY SCHOOL LOCK TAO SECONDARY SCHOOL Most Participates: NG YUK SECONDARY SCHOOL LOCK TAO SECONDARY SCHOOL Press any key to continue….
Awards for schools iii)
Back to menu When the user choose ‘back to menu’, the program will go back to the main menu.
30
Design - Project Specification
7.
Editing entry After choosing ‘edit entry’, the program will ask the user to enter the id of the students. Then, the program will show another menu which contains another six options.
Edit entry Please enter the id: Ask for id Edit entry
1. 2. 3. 4. 5. 6.
Name Sex Age Answer School code Back to menu Edit entry menu
i)
Name When the user chooses ‘name’, the program will changed the name of the student with chosen-id.
Edit entry Please enter the new name:
31
Design - Project Specification
Edit by name ii)
Sex When the user chooses ‘sex’, the program will change the sex of the student with chosen-id.
Edit entry Please enter the new sex: Edit by sex iii)
Age When the user chooses ‘age’, the program will changed the age of the student with chosen-id.
Edit entry Please enter the new age: Edit by age iv)
Answer When the user chooses ‘answer’, the program will changed the answer of the student with chosen-id.
Edit entry Please enter the new answer: Edit by answer
32
Design - Project Specification
v)
School code When the user chooses ‘school code’, the program will changed the school code of the student with chosen-id.
Edit entry Please enter the new school code: Edit by school code vi)
Back to menu When the user choose ‘back to menu’, the program will go back to the main menu.
8.
Output Report After choosing ‘output report’, the program will show a statement “Report has been saved to ‘Report.txt’…” and it will ask the user to press any key to continue.
Output report
Report has been saved to ‘Report.txt’ … Press any key to continue…. Output report 9.
Exit After choosing ‘exit’, the program will end.
33
Design - Operation rules
1.
For inputting file pathway The format should be at this way “drive:\filename\” For example: C:\coursework\ Remember that all the filenames should be in English. If the pathway of file is not correct, the window will be closed.
2.
To Control the menu Users can only use the arrow key ↑and↓to control the movement of the pointer so as to choice the item they want by pressing Enter key only.
3.
For the input of search by name Remember all the input of student names should be capital latter. For example: CHAN TAI MAN
4.
For the input of search by id and ranking Remember that all student id and ranking should be within the total number of students while that of school id should be within the total number of school.
5. For filtering Users can choose filtering the data by sex, age, school, mark and ranking. They can filter the data out by inputting the desire condition For example: if he wants to find out all the students’ result from one school, they can filter by inputting the school no.
34
Design - Operation rules
The filtering function is different from the searching function because filtering can find out all the data from a wide range of condition but searching is only for finding out one specific entry. 6. Output of report The report will be outputted in the same directory of the exe file. And the output is a text file named â&#x20AC;&#x153;report.txtâ&#x20AC;?.
35
Design - Program flow chart
Start
Input path of data files.
Read Data
Calculation mark of candidates & school
Sorting marks of candidate and school.
Distribute the awards
Filter by age
according to ranking. Data found
Filter by sex Display main menu Filter by marks Show Individual
Filtering Entry
Filter by school
entry. Output to â&#x20AC;&#x153;Report.tx Show student report
Awards of
Output Report
Show entry
Show report Quit Program
Searching Entry
Awards
Data found
Show school report
Filter by ranking
Search by name
Edit Entry
Search by id
Students Search by rank
Input id for editing Awards of Schools Edit name
Edit sex
Edit age
Edit answer
Edit school
End
36
Design - Implementation
1. Samples
Fig1. Input of path of the database and the loading screen Description: When user opens the executable file, he will be asked to input the path of the data file so that the program can read the file from the directory inputted. If the user input a wrong path then the program cannot be run and shut down automatically.
37
Design - Implementation
Fig2. The main menu of the program
Fig3. The arrow key and enter key to control the menu Description: After the loading screen, the user will enter the main menu. In the main menu, all the functions of the program are listed (As shown in Fig2). User can choose their option by pressing the arrow key on the keyboard, and then the highlighted word will be change press by press. After choosing the desire item, user can press the enter key to run that procedure.
38
Design - Implementation
Fig4. The screen of showing individual data
Fig5. Show the key on the keyboard that user will use Description: When the users choose show individual data, the screen above will be shown. The name, sex, age, school, answer, marks and ranking will be shown. The checking is for let the user to see which questions he/she got incorrect. Moreover, the bar besides the ranking shows the position of the student in the whole competition. If the user presses ‘SPACE’ key then next entry will be shown. If the user presses ‘E’ then he can edit the entry he chosen. Last, if the user press Esc then ,it will return to the main menu.
39
Design - Implementation
Fig6. Search Entry and its options Description: When the users choose search entry, the screen above will be shown. User can search data in three ways: search by name, search by id, and search by ranking. After choosing an option, you will be asked to enter the data for searching. If no data is found, the screen below will be shown and then back to the searching menu.
Fig7. No Data Found
40
Design - Implementation
Fig8. The menu of filtering entry
Description: After the user choosing filtering entry. The menu and the function of filtering entries are more less the same to the searching entry. User can filter data by their sex, age, school, mark and ranking. If the user input M in the filter by sex, then all the male data will be shown without showing any entries from female. This function is more useful than searching when doing analysis as we can see the difference between groups of candidates. Moreover, filtering data can let us find the party which can satisfy some special condition but searching is just finding out the desire one.
41
Design - Implementation
Fig9. Displaying different kind of data. Description: When the user chooses display report. The user can choose which report he wants to read: candidates analysis, school analysis and question analysis. So that he can see though the competition completely by different approach. And the screens above show the program using graphical method to represent the data instead of only numerical data which is more easy to compare the data.
42
Design - Implementation
Fig10. Showing the awards
Description:
Awards are an important of a competition. Therefore, user can see
which individual students and which school gets the price after choosing awards. The awards giving is calculated by the mark they get and the ranking. And the top 10 student can get prices and the top 10 school can also get the prices. As shown above, the awards are: gold award, silver award, bronze award and Honorable Mentions. The marks and the ranking will be calculate automatically right after reading the database, therefore, no calculation work is need to do by the users themselves to find out which team get the awards.
43
Design - Implementation
Fig11. Editing data
Description: User can also edit the data if they find any mistake. What they need to do is to enter the id of the candidate who they want to edit. Then they can edit the name, sex, age, answer and belonging school of the candidate. They can edit they data in the following ways:
44
Design - Implementation
\\\
Fig12. Output of the report Description: After the user chooses output of Report, then â&#x20AC;&#x153;Report.txtâ&#x20AC;? will be built in the same directory of the exe file. The report includes all the data about the
45
Design - Implementation
competition and the analysis of the candidates, schools and questions. You can have further detail by the sample of report found in the appendix.
2. Program Listing Files Structure: z
Main.pas ( The source code of the whole program)
z
Random.pas ( The source of the program to randomize all the data)
z
Student.txt ( All the data about the candidates)
z
School.txt ( All the data about the school)
z
Data.txt ( The data collected after the competition)
z
Report.txt ( The written output of the program)
Database Structure: Table: Student Field
Size
Data type
ID (keyfield)
3
Integer
Name
255
String
Answer
50
String
Age
2
Integer
Sex
1
Char
School_no
2
Integer
Mark
2
Integer
Ranking
3
integer
Field
Size
Data type
ID (keyfield)
3
Integer
Name
255
String
No_of_student
50
String
Ranking
3
integer
Table: School
46
Design - Implementation
File: Data.txt Description: This file contains all the answers of each student and the first line is the model answer. BDCDABDBDDDDCDCDAAACDDCAAADBBDACDDDBCDABAADCBDDCDD 1 BDADDBDBADBACDCDABABDDDAAADBBDACDCDBBBABCADCBADCDD 2 BDCDABDBDDDBCDDDAADCDDCAAADBCDBCDDCBCDABADDCCDDCDD 3 BDCDABBBCCDCCDCDAAACDDCAAADDBBCCDDDBCDABCADCBDDCDD 4 BDCDBBDBDDCDCDCDAAACDBCADAAABDACBDDBCDABABDCADDCDD 5 CDCDABDBCDBDCDCCBABCADCAAADCBDACADDBCDABAADCBDBCDD 6 BDCDADDADDDDADBBAAACBCCAAACBBDACDDABCCABAAACBDCCDD 7 BDCDABDBDDDDCDADABACDCCADCDBDDACDCCBADABAABCBDDCDD 8 BDBDABDAADDDCDCCAAACDDCAAAABCCDCCDDBCDBCCADCCDDDDD 9 BDCDABDBDDDDCDCDAAACDDCADADBBDACDDDBCCCBAADCBDDCDD 10 BDCDABDBBADDADCDDAACDCCAAADBBDACDDDBCDCBCACABADCDA 11 BDCDABABDDDDCDCDAAACDDBAAADBBDACDDDBCDABAADCBDACDD 12 BDCAABDBDDDDCDCDBABCDDCAAABBBDACDDDBCDABAADCBBDCCD
. . . . . . . .
47
Design - Implementation
172 BDCDABDBDDDDCDCAAACCDDCAAADBBDACDDDBCDABAADBBDDCAD File:
Student.txt
Description: This file contains all data of each student, the format is like this: -
ID
-
Name
-
Age
-
School
1 CHAN CHUN MAN 18 M 2 2 CHAN PING CHUN 16 F 10 3 CHAN SHUK YAN 19 F 20
. . . . . . . 171 YU SAU CHU 19 M 3 172 YUM POU MAN 18
48
Design - Implementation
F 14 File: School.txt Description: This file contains all name of the schools. CUHKFAA CHAN CHUN HA SECONDARY SCHOOL GCC&ITKD LAU PAK LOK SECONDARY SCHOOL HELEN LIANG MEMORIAL SECONDARY SCHOOL (SHATIN) K & KLN CCPA MA CHUNG SUM SECONDARY SCHOOL HKBU AFFILIATED SCHOOL WONG KAM FAI SECONDARY HKCWC FUNG YIU KING MEMORIAL SECONDARY SCHOOL IMMACULATE HEART OF MARY COLLEGE JOCKEY CLUB TI-I COLLEGE KIANGSU-CHEKIANG COLLEGE (SHATIN) KWOK TAK SENG CATHOLIC SECONDARY SCHOOL LAM TAI FAI COLLEGE LOCK TAO SECONDARY SCHOOL LOK SIN TONG YOUNG KO HSIAO LIN SECONDARY SCHOOL MA ON SHAN ST JOSEPH'S SECONDARY SCHOOL MA ON SHAN TSUNG TSIN SECONDARY SCHOOL NG YUK SECONDARY SCHOOL PENTECOSTAL LAM HON KWONG SCHOOL PO LEUNG KUK C W CHU COLLEGE PO LEUNG KUK WU CHUNG COLLEGE POH CHAN KAI MEMORIAL COLLEGE
49
Design - Implementation
File: Random.pas Description: This file contains all name of the schools. 10.
Program random_student;
11.
uses crt;
12.
Var
13.
filein : text;
14.
name : Array[1..172] of string;
15.
i,j,k,no : integer;
16.
path : string;
17.
ans : string;
18.
temp : string;
19.
Begin
20.
Write('Path of the database : ');
21.
Readln(path);
22.
Write('How many entries do you want? ');
23.
readln(no);
24.
Assign(filein,path+'Student_name.txt');
25.
reset(filein);
26.
for i := 1 to no do
27.
readln(filein,name[i]);
28.
close(filein);
29.
Assign(filein,path+'Student.txt');
30.
rewrite(filein);
31.
randomize;
32.
for i := 1 to no do
33.
Begin
34.
writeln(filein,i);
35.
writeln(filein,name[i]);
36.
writeln(filein,random(4)+16);
37.
j := random(2)+1;
38.
Case j of
39.
1 : writeln(filein,'M');
40.
2 : writeln(filein,'F');
41.
End;
42.
writeln(filein,random(20)+1);
50
Design - Implementation
End;
43. 44.
close(filein);
45.
Assign(filein,path+'data.txt');
46.
rewrite(filein);
47.
ans := '';
48.
for i := 1 to 50 do Begin
49. 50.
k := random(4)+1;
51.
Case
k of
52.
1: ans:= ans+'A';
53.
2: ans:= ans+'B';
54.
3: ans:= ans+'C';
55.
4: ans:= ans+'D'; End;
56. End;
57. 58.
writeln(filein,ans);
59.
for i := 1 to no do Begin
60. 61.
writeln(filein,i);
62.
temp := ans;
63.
For j := 1 to random(25)+5 do Begin
64.
k := random(4)+1;
65.
Case
66.
k of
67.
1: temp[random(50)+1] := 'A';
68.
2: temp[random(50)+1] := 'B';
69.
3: temp[random(50)+1] := 'C';
70.
4: temp[random(50)+1] := 'D'; End;
71. End;
72.
writeln(filein,temp);
73. 74.
End;
75.
Close(filein);
76. 77.
End.
51
Design - Implementation
File: Random.pas Description: This file contains all name of the schools. 1.
Program CIT_Coursework;
2.
Uses
3. 4.
Crt; Const
5.
Max_No_of_School= 20;
6.
Max_No_of_Student = 200;
7.
Type
8.
Student = Record
9.
id : integer;
10.
name : string;
11.
ans : string;
12.
age : integer;
13.
sex : char;
14.
school_no : integer;
15.
mark : integer;
16.
ranking : integer;
17.
End;
18.
School = Record
19.
name : string;
20.
id : integer;
21.
no_of_student : integer;
22.
total_mark : integer;
23.
ranking : integer;
24. 25.
End; Var
26.
Student_data : Array[1..Max_No_of_Student] of Student;
27.
School_data : Array[1..Max_No_of_School] of School;
28.
show_data : Array[1..Max_No_of_Student] of Student;
29.
header : Array[1..20] of String;
30.
menu_length
31.
menu_string : Array[1..20,1..20] of String;
32.
Answer : String;
33.
total_School,total_Student,choice: Integer;
: Array[1..10] of integer;
52
Design - Implementation
34.
path : String;
Form line 1 to 34 is for declaring variables. 35.
Procedure welcome;
36.
var
37. 38.
i : integer; Begin
39.
For i := 1 to 12 do
40.
Writeln;
41.
Write('':20,'Path of the database : ');
42.
Readln(path);
43.
Clrscr;
44.
For i := 1 to 9 do
45.
Writeln;
46.
TEXTCOLOR(14);
47.
Writeln('':30,'Reading Database...');
48.
Writeln;
49.
write('':15);
50.
For i := 1 to 50 do
51.
Begin
52.
TextBackGround(4);
53.
delay(50);
54.
write(' ');
55. 56.
End; End;
For line 35 to 42 is for reading the path of the program. From 44 to 56 showing the bar which indicates the process of reading path. 57. 58.
Procedure Input_data; Var
59.
id,i : integer;
60.
filein : text;
61.
Begin
62.
total_Student := 0;
63.
total_School := 0;
64.
Assign(filein,path+'Student.txt');
65.
Reset(filein);
66.
While not eof(filein) do
67.
Begin
53
Design - Implementation
68.
Readln(filein,id);
69.
Student_data[id].id := id;
70.
Readln(filein,Student_data[id].name);
71.
Readln(filein,Student_data[id].age);
72.
Readln(filein,Student_data[id].sex);
73.
Readln(filein,Student_data[id].school_no);
74.
total_Student := total_Student+1;
75.
End;
76.
Close(filein);
77.
Assign(filein,path+'School.txt');
78.
Reset(filein);
79.
id :=1;
80.
While not eof(filein) do
81.
Begin
82.
School_data[id].id := id;
83.
Readln(filein,School_data[id].name);
84.
id := id+1;
85.
total_School := total_School+1;
86.
End;
87.
Close(filein);
88.
Assign(filein,path+'data.txt');
89.
Reset(filein);
90.
Readln(filein,Answer);
91.
While not eof(filein) do
92.
Begin
93.
Readln(filein,id);
94.
Readln(filein,Student_data[id].ans);
95.
End;
96.
Close(filein);
97.
For i := 1 to total_School do
98.
Begin
99.
School_data[i].total_mark := 0;
100.
School_data[i].ranking := 0;
101.
School_data[i].no_of_student := 0;
102. 103. 104.
End; For i := 1 to total_Student do School_data[Student_data[i].school_no].no_of_student :=
54
Design - Implementation
105. School_data[Student_data[i].school_no].no_of_student + 1; 106.
End; From line 57 to 106 is for reading data for the files.
107. Procedure Check_ans; 108.
Var
109.
pos : Array[1..200,1..2] of integer;
110.
n,i,j,temp1 : integer;
111.
mark : integer;
112.
Begin
113.
n:= length(Answer);
114.
For i := 1 to total_Student do
115.
Begin
116.
mark := 0;
117.
For j := 1 to n do
118. 119.
If Student_data[i].ans[j] = Answer[j] then mark:= mark+1;
120. 121. 122. 123.
Student_data[i].mark := mark; End; For i := 1 to total_Student do School_data[Student_data[i].school_no].total_mark :=
124. School_data[Student_data[i].school_no].total_mark+ Student_data[i].mark; 125. 126.
For i := 1 to total_Student do Begin
127.
pos[i,1] := Student_data[i].mark;
128.
pos[i,2] := Student_data[i].id;
129. 130. 131.
End; For i := total_Student-1 DownTo 1 do Begin
132.
For j := 1 to i do
133.
Begin
134.
If (pos[j-1,1] < pos[j,1]) then
135.
Begin
136.
temp1 := pos[j-1,1];
137.
pos[j-1,1] := pos[j,1];
138.
pos[j,1] := temp1;
139.
temp1 := pos[j-1,2];
140.
pos[j-1,2] := pos[j,2];
55
Design - Implementation
141.
pos[j,2] := temp1;
142.
End;
143.
End;
144.
End;
145.
For i := 1 to total_Student do
146.
Student_data[pos[i,2]].ranking := i;
147.
For i := 1 to total_School do
148.
Begin
149.
pos[i,1] := School_data[i].total_mark;
150.
pos[i,2] := i;
151.
End;
152.
For i := total_School-1 DownTo 1 do
153.
Begin
154.
For j := 2 to i do
155.
Begin
156.
If (pos[j-1,1] < pos[j,1]) then
157.
Begin
158.
temp1 := pos[j-1,1];
159.
pos[j-1,1] := pos[j,1];
160.
pos[j,1] := temp1;
161.
temp1 := pos[j-1,2];
162.
pos[j-1,2] := pos[j,2];
163.
pos[j,2] := temp1;
164.
End;
165.
End;
166.
End;
167.
For i := 1 to total_School do
168. 169.
School_data[pos[i,2]].ranking := i; End;
From line 107 to 169 is for checking the answers of students. 170. Procedure initial; 171. Begin 172.
TextBackground(1);
173.
TextColor(14);
174.
Input_data;
175.
Check_ans;
176.
choice := 1;
56
Design - Implementation
177.
menu_length[1] := 8;
178.
menu_length[3] := 4;
179.
menu_length[4] := 6;
180.
menu_length[5] := 3;
181.
menu_length[6] := 3;
182.
menu_length[7] := 4;
183.
menu_length[10] := 6;
184.
header[1] := 'Welcome to the Multiple-Choice Analyzer';
185.
header[2] := '
186.
header[3] := '
Search Entry
187.
header[4] := '
Filter Entry
188.
header[5] := '
189.
header[6] := '
Add/Edit Entry
';
190.
header[7] := '
Display Report
';
191.
header[8] := '
Output Report
';
192.
header[10] := '
Edit Entry
Show individual data
'; '; ';
Awards
193.
menu_string[1,1] := 'Show invidual entry';
194.
menu_string[1,2] := 'Search entry';
195.
menu_string[1,3] := 'Filter entry';
196.
menu_string[1,4] := 'Display Report';
197.
menu_string[1,5] := 'Awards';
198.
menu_string[1,6] := 'Edit entry';
199.
menu_string[1,7] := 'Output Report';
200.
menu_string[1,8] := 'Exit';
201.
menu_string[3,1] := 'Search by name';
202.
menu_string[3,2] := 'Search by id';
203.
menu_string[3,3] := 'Search by ranking';
204.
menu_string[3,4] := 'Back to menu';
205.
menu_string[4,1] := 'Filter by Sex';
206.
menu_string[4,2] := 'Filter by Age';
207.
menu_String[4,3] := 'Filter by School';
208.
menu_String[4,4] := 'Filter by mark';
209.
menu_String[4,5] := 'Filter by ranking';
210.
menu_String[4,6] := 'Back to menu';
211.
menu_string[5,1] := 'Awards for students';
212.
menu_string[5,2] := 'Awards for schools';
213.
menu_string[5,3] := 'Back to menu';
';
';
57
Design - Implementation
214.
menu_string[7,1] := 'Candidates Analysis';
215.
menu_string[7,2] := 'Schools Analysis';
216.
menu_string[7,3] := 'Questions Analysis';
217.
menu_string[7,4] := 'Back to menu';
218.
menu_string[10,1] := 'Name';
219.
menu_string[10,2] := 'Sex';
220.
menu_string[10,3] := 'Age';
221.
menu_string[10,4] := 'Answer';
222.
menu_string[10,5] := 'School Code.';
223.
menu_string[10,6] := 'Back to menu';
224. End; From line 170 to 173 is for setting the text color and background color. From line 174 to 175 is for calling the procedures input_data and check_ans. From line 176 to 224 is for making the menus. 225. Procedure show_header( mode :integer ); 226. Begin 227.
Clrscr;
228.
Writeln('==============================================
229. ==============================='); 230.
Writeln('*
231. 232.
*'); Writeln('*
',header[mode]:39,'
233. *'); 234.
Writeln('*
235. 236.
*'); Writeln('==============================================
237. ==============================='); 238.
Writeln('
239.
');
240. End; From line 225 to 240 is for showing the header. 241. Procedure show_menu( mode,temp_choice : integer ); 242. Var 243.
i : integer;
244. Begin 245.
show_header(mode);
58
Design - Implementation
246.
For i := 1 to menu_length[mode] do
247.
Begin
248.
if temp_choice = i then TextColor(10);
249.
Writeln('
',i,'.
250. ',menu_string[mode,i]); 251.
TextColor(14);
252.
End;
253. End; 254. function read_key( mode : integer ) :integer; 255. Var 256.
temp_choice : integer;
257.
key : char;
258. Begin 259.
temp_choice := 1;
260.
Repeat
261.
show_menu(mode,temp_choice);
262.
key := readkey;
263.
Case key of
264.
'H' : Begin
265.
if temp_choice = 1 then temp_choice :=
266. menu_length[mode] 267.
else if temp_choice >1 then temp_choice :=
268. temp_choice -1; 269. 270.
End; 'P' : Begin
271.
if temp_choice = menu_length[mode] then
272. temp_choice := 1 273.
else if temp_choice < menu_length[mode] then
274. temp_choice := temp_choice +1; 275.
End;
276.
End;
277.
Until key = chr(13);
278.
read_key := temp_choice;
279. End; From line 241 to 279 is for showing the menu by reading the key input by the user. 280. Procedure EDIT_ENTRY ( mode : integer );
59
Design - Implementation
281. Var 282.
temp_key,temp_key1,id,i : integer;
283.
new_name : string;
284.
new_sex : char;
285.
temp_key2 : char;
286.
new_data : integer;
287.
new_ans : string[50];
288. Begin 289.
Begin
290.
Clrscr;
291.
if mode = 0 then
292.
Begin
293.
show_header(10);
294.
Writeln;
295.
Write('Please Enter the id : ':50);
296.
Readln(id);
297.
End Else
298. 299.
id := mode; Repeat
300.
show_menu(10,1);
301.
temp_key1 := read_key(10);
302.
Case temp_key1 of
303.
1: Begin
304.
show_header(10);
305.
writeln(id);
306.
Writeln;
307.
Write('Please enter the new name : ':40);
308.
Readln(new_name);
309.
Student_data[id].name := new_name;
310.
Clrscr;
311.
show_header(10);
312.
writeln;writeln;
313.
Writeln('Data Edited!':45);
314.
Writeln;
315.
Writeln;
316.
Writeln('Press any key to continue....':55);
317.
repeat until keypressed;
60
Design - Implementation
318.
temp_key2:=readkey;
319.
End;
320.
2: Begin
321.
show_header(10);
322.
Writeln;
323.
Write('Please enter the new Sex : ':40);
324.
Readln(new_sex);
325.
Student_data[id].sex := new_sex;
326.
Clrscr;
327.
show_header(10);
328.
writeln;writeln;
329.
Writeln('Data Edited!':45);
330.
Writeln;
331.
Writeln;
332.
Writeln('Press any key to continue....':55);
333.
repeat until keypressed;
334.
temp_key2:=readkey;
335. 336.
End; 3: Begin
337.
show_header(10);
338.
Writeln;
339.
Write('Please enter the new Age : ':40);
340.
Readln(new_data);
341.
Student_data[id].age := new_data;
342.
Clrscr;
343.
show_header(10);
344.
writeln;writeln;
345.
Writeln('Data Edited!':45);
346.
Writeln;
347.
Writeln;
348.
Writeln('Press any key to continue....':55);
349.
repeat until keypressed;
350.
temp_key2:=readkey;
351. 352.
End; 4: Begin
353.
show_header(10);
354.
Writeln;
61
Design - Implementation
355.
Write('Please enter the new Answer : ':40);
356.
Readln(new_ans);
357.
Student_data[id].ans := new_ans;
358.
Clrscr;
359.
show_header(10);
360.
writeln;writeln;
361.
Writeln('Data Edited!':45);
362.
Writeln;
363.
Writeln;
364.
Writeln('Press any key to continue....':55);
365.
repeat until keypressed;
366.
temp_key2:=readkey;
367.
End;
368.
5: Begin
369.
show_header(10);
370.
Writeln;
371.
Write('Please enter the new Shool code : ':40);
372.
Readln(new_data);
373.
Student_data[id].school_no := new_data;
374.
Clrscr;
375.
show_header(10);
376.
writeln;writeln;
377.
Writeln('Data Edited!':45);
378.
Writeln;
379.
Writeln;
380.
Writeln('Press any key to continue....':55);
381.
repeat until keypressed;
382.
temp_key2:=readkey;
383.
End;
384.
End;
385.
until temp_key1 = 6;
386.
Check_ans;
387.
For i := 1 to total_student do
388. 389.
show_data[i] := student_data[show_data[i].id]; End;
390. End; From line 287 to 298 is for asking the ID of the participant whom the user wants to
62
Design - Implementation
edit. From line 299 to 385 is for editing the entry of participant by name, sex, age, school and answer by repeat until loop. Line 386 is for calling the procedure Check_ans. From line 387 to 390 is for showing the entry. 391. Procedure show_entry( no_of_entry : integer ); 392. Var 393.
i,j : integer;
394.
key : char;
395. Begin 396.
i := 1;
397.
Repeat
398.
clrscr;
399.
show_header(2);
400.
writeln;
401.
TEXTCOLOR(10);
402.
Writeln('
403.
TEXTCOLOR(11);
404.
Writeln('
405.
TEXTCOLOR(12);
406.
Writeln('
407.
TEXTCOLOR(13);
408.
Writeln('
Name : ',show_data[i].name); Sex : ',show_data[i].sex); Age : ',show_data[i].age); School :
409. ',School_data[show_data[i].school_no].name); 410.
TEXTCOLOR(15);
411.
Writeln('
412.
Write('
413.
For j := 1 to length(Answer) do
414.
Answer : ',show_data[i].ans); Checking : ');
if show_data[i].ans[j] = Answer[j] then write('O')
415.
else Begin TEXTCOLOR(12);write('X'); TEXTCOLOR(15);
416. End; 417.
Writeln;
418.
TEXTCOLOR(10);
419.
Writeln('
420.
TEXTCOLOR(11);
421.
Write('
422.
TextBackground(10);
423.
For j := 1 to round (40 * (show_data[i].ranking / total_Student)) do
424.
Marks : ',show_data[i].mark); Raking : ',show_data[i].ranking:3,' [');
write(' ');
63
Design - Implementation
425.
TextBackground(1);
426.
For j := 1 to 40 - round( 40 * (show_data[i].ranking / total_Student)) do
427.
write(' ');
428.
write(']');
429.
TEXTCOLOR(14);
430.
Writeln;
431.
Writeln;
432.
Writeln;
433.
Writeln('================================
434. ',i:3,'/',no_of_entry,' ===================================='); 435.
Writeln;
436.
TEXTCOLOR(12);
437.
Writeln('
438.
Press ''E'' to edit this entry');
TEXTCOLOR(10);
439.
Writeln('
440.
Press SPACE to the next page');
TEXTCOLOR(15);
441.
Writeln('
442.
Press Esc to Exit ');
TEXTCOLOR(14);
443.
key := readkey;
444.
if (key = ' ') and (i < no_of_entry )then i := i +1
445.
else if ((key = 'e' )or(key = 'E')) then EDIT_ENTRY(show_data[i].id);
446.
Until (key = chr(27));
447. End; From line 391 to 428 is for showing the individual entry of each participant. From line 429 to 447 is for instructing the user to press ‘E’ to edit entry, SPACE bar to enter next page and ESC to exit. 448. Procedure Searching_Data( mode : integer ); 449. Var i : integer; 450.
search_name : string;
451.
search_id,search_ranking : integer;
452.
flag : boolean;
453.
temp_key : char;
454. Begin 455.
Clrscr;
456.
show_header(3);
457.
writeln;
458.
Case
mode of
64
Design - Implementation
459.
1 : Begin
460.
write('
461.
readln(search_name);
462.
End;
463.
2 : Begin
464.
write('
465.
Repeat
466.
Please enter the name for searching : ');
Please enter the ID for searching : ');
read(search_id);
467.
until (search_id >= 1) and (search_id <= total_student);
468.
End;
469.
3:
Begin
470.
write('
Please enter the ranking for searching :
471. '); 472.
Repeat
473.
read(search_ranking);
474.
until (search_ranking >= 1) and (search_ranking <=
475. total_student); 476.
End;
477.
End;
478.
If mode = 2 then
479.
Begin
480.
show_data[1] := student_data[search_id];
481.
Clrscr;
482.
show_entry(1);
483.
End;
484.
If mode <>2 then
485.
Begin
486.
flag := FALSE ;
487.
For i := 1 to total_student do
488. 489.
Begin if (Student_data[i].name = search_name)and(mode = 1)
490. then 491.
Begin
492.
show_data[1] := student_data[i];
493.
flag := TRUE;
494. 495.
End; if (Student_data[i].ranking = search_ranking)and(mode =
65
Design - Implementation
496. 3) then 497.
Begin
498.
show_data[1] := student_data[i];
499.
flag := TRUE;
500.
End;
501.
End;
502.
If flag = TRUE then
503.
Begin
504.
Clrscr;
505.
show_entry(1);
506.
End
507.
Else Begin
508.
Clrscr;
509.
show_header(10);
510.
writeln;
511.
writeln;
512.
Writeln('Sorry! No Data Found !':50);
513.
Writeln;
514.
Writeln;
515.
Writeln('Press any key to continue....':55);
516.
repeat until keypressed ;
517.
temp_key := readkey;
518.
End;
519.
End;
520. End; 521. Procedure Searching; 522. Var 523.
temp_key : integer;
524. Begin 525.
Repeat
526.
show_menu(3,1);
527.
temp_key := read_key(3);
528.
Case temp_key of
529.
1 : Searching_Data(1);
530.
2 : Searching_Data(2);
531.
3 : Searching_Data(3);
532.
End;
66
Design - Implementation
533.
until temp_key = 4;
534. End; From line 448 to 534 is for searching entry by different ways such as name, ID, ranking, etc. 535. Procedure filtering; 536. Var 537.
temp_key,i,n,age,school,flag,mark,ranking : integer;
538.
sex,eat_key : char;
539. Begin 540.
Repeat
541.
show_menu(4,1);
542.
temp_key := read_key(4);
543.
Case temp_key of
544.
1 : Begin
545.
Clrscr;
546.
show_header(4);
547.
writeln;
548.
write('Please select M/F : ':50);
549.
repeat
550. 551.
read(sex); until (sex = 'm') or( sex ='M') or (sex = 'f') or (sex
552. ='F'); 553.
if sex = 'm' then sex := 'M';
554.
if sex = 'f' then sex := 'F';
555.
n:=0;
556.
For i := 1 to total_student do
557.
if Student_data[i].sex = sex then
558.
Begin
559.
n:=n+1;
560.
show_data[n] := student_data[i];
561.
End;
562.
Clrscr;
563.
if n > 0 then show_entry(n)
564.
else Begin
565.
show_header(4);
566.
writeln;
567.
writeln('No Data Found!':47);
67
Design - Implementation
568.
Writeln;
569.
Writeln;
570.
Writeln('Press any key to continue....':55);
571.
repeat until keypressed;
572.
eat_key := readkey;
573.
End;
574.
End;
575.
2 : Begin
576.
Clrscr;
577.
show_header(4);
578.
writeln;
579.
write('Please input the age : ': 40);
580.
read(age);
581.
n:=0;
582.
For i := 1 to total_student do
583.
if age = Student_data[i].age then
584.
Begin
585.
n:=n+1;
586.
show_data[n] := student_data[i];
587.
End;
588.
Clrscr;
589.
if n > 0 then show_entry(n)
590.
else Begin
591.
show_header(4);
592.
writeln;
593.
writeln('No Data Found!':47);
594.
Writeln;
595.
Writeln;
596.
Writeln('Press any key to continue....':55);
597.
repeat until keypressed;
598.
eat_key := readkey;
599.
End;
600.
End;
601.
3 : Begin
602.
Clrscr;
603.
show_header(4);
604.
writeln;
68
Design - Implementation
605.
write('Please input the School code : ':40);
606.
read(school);
607.
n:=0;
608.
For i := 1 to total_student do
609.
if Student_data[i].school_no = school then
610.
Begin
611.
n:=n+1;
612.
show_data[n] := student_data[i];
613.
End;
614.
Clrscr;
615.
if n > 0 then show_entry(n)
616.
else Begin
617.
show_header(4);
618.
writeln;
619.
writeln('No Data Found!':47);
620.
Writeln;
621.
Writeln;
622.
Writeln('Press any key to continue....':55);
623.
repeat until keypressed;
624.
eat_key := readkey;
625.
End;
626.
End;
627.
4 : Begin
628.
Clrscr;
629.
show_header(4);
630.
writeln;
631.
write('Please input the mark : ':40);
632.
read(mark);
633.
writeln;
634.
write('
Greater(1) or smaller(2) then ',mark:2,' :
635. '); 636.
repeat read(flag) until (flag = 1) or (flag = 2);
637.
n:=0;
638.
For i := 1 to total_student do
639.
if ((Student_data[i].mark >= mark)and(flag = 1))
640. or ((Student_data[i].mark <= mark)and(flag = 2)) then 641.
Begin
69
Design - Implementation
642.
n:=n+1;
643.
show_data[n] := student_data[i];
644.
End;
645.
Clrscr;
646.
if n > 0 then show_entry(n)
647.
else Begin
648.
show_header(4);
649.
writeln;
650.
writeln('No Data Found!':47);
651.
Writeln;
652.
Writeln;
653.
Writeln('Press any key to continue....':55);
654.
repeat until keypressed;
655.
eat_key := readkey;
656.
End;
657.
End;
658.
5 : Begin
659.
Clrscr;
660.
show_header(4);
661.
writeln;
662.
write('Please input the ranking : ':40);
663.
read(ranking);
664.
writeln;
665.
write('
Greater(1) or smaller(2) then
666. ',ranking:2,' : '); 667.
repeat read(flag) until (flag = 1) or (flag = 2);
668.
n:=0;
669.
For i := 1 to total_student do
670.
if ((Student_data[i].ranking >= ranking)and(flag
671. = 1)) or ((Student_data[i].ranking <= ranking)and(flag = 2)) then 672.
Begin
673.
n:=n+1;
674.
show_data[n] := student_data[i];
675.
End;
676.
Clrscr;
677.
if n > 0 then show_entry(n)
70
Design - Implementation
678.
else Begin
679.
show_header(4);
680.
writeln;
681.
writeln('No Data Found!':47);
682.
Writeln;
683.
Writeln;
684.
Writeln('Press any key to continue....':55);
685.
repeat until keypressed;
686.
eat_key := readkey;
687.
End;
688.
End;
689. 690.
End; until temp_key = 6;
691. End; From line 535 to 690 is for filtering entry by sex, age, school, mark, ranking, etc. 692. Procedure award; 693. Var 694.
temp_key,i,j : integer;
695.
eat_key : char;
696. Begin 697.
Repeat
698.
show_menu(5,1);
699.
temp_key := read_key(5);
700.
Case temp_key of
701.
1:
Begin
702.
Clrscr;
703.
show_header(5);
704.
Writeln;
705.
Write('Gold award : ':40);
706.
for i := 1 to total_student do
707. 708.
if student_data[i].ranking = 1 then writeln(student_data[i].name);
709.
Write('Silver award : ':40);
710.
for i := 1 to total_student do
711. 712. 713.
if student_data[i].ranking = 2 then writeln(student_data[i].name); Write('Bronze award : ':40);
71
Design - Implementation
714.
for i := 1 to total_student do
715.
if student_data[i].ranking = 3
716.
then writeln(student_data[i].name);
717.
Write('Honorable Mentions
718.
: ':40);
for i := 1 to total_student do
719.
if student_data[i].ranking = 4
720.
then
721. writeln(student_data[i].name); 722.
for j := 5 to 10 do
723.
Begin
724.
write(' ':40);
725.
for i := 1 to total_student do
726.
if student_data[i].ranking = j
727.
then
728. writeln(student_data[i].name); 729.
End;
730.
Writeln;
731.
Writeln('Press any key to continue....':55);
732.
repeat until keypressed;
733.
eat_key := readkey;
734. 735.
End; 2:
Begin
736.
Clrscr;
737.
show_header(5);
738.
Writeln;
739.
Writeln('Gold award : ':30);
740.
for i := 1 to total_school do
741.
if school_data[i].ranking = 1
742.
then begin write('':25);
743. writeln(school_data[i].name);end; 744.
Writeln('Silver award : ':30);
745.
for i := 1 to total_school do
746.
if school_data[i].ranking = 2
747.
then begin write('':25); writeln(school_data[i].name);end;
748.
Writeln('Bronze award : ':30);
72
Design - Implementation
749.
for i := 1 to total_school do
750.
if school_data[i].ranking = 3
751.
then begin write('':25);
752. writeln(school_data[i].name);end; 753.
Writeln('Honorable Mentions
754.
for j := 4 to 10 do
755.
: ':30);
for i := 1 to total_school do
756.
if school_data[i].ranking = j
757.
then begin write('':25);
758. writeln(school_data[i].name);end; 759.
Writeln('Most participates : ':30);
760.
j := school_data[1].no_of_student;
761.
for i := 1 to total_school do
762.
if school_data[i].no_of_student > j then
763.
j:= school_data[i].no_of_student;
764.
for i := 1 to total_school do
765.
if school_data[i].no_of_student = j then
766.
begin write('':25);
767. writeln(school_data[i].name);end; 768.
Writeln;
769.
Writeln('Press any key to continue....':55);
770.
repeat until keypressed;
771.
eat_key := readkey;
772.
End;
773.
End;
774.
until temp_key = 3;
775. End; From line 692 to 774 is for showing the awards for the students and school. 776. Procedure reporting; 777. Var 778. 779. 780.
temp_key,i,j,k,male,female,temp_age,n,total_mark,entry_per_page,count : integer; eatkey : char;
781. Begin 782. 783.
Repeat show_menu(7,1);
73
Design - Implementation
784.
temp_key := read_key(7);
785.
Case temp_key of
786.
1 : Begin
787.
Clrscr;
788.
show_header(7);
789.
Writeln;
790.
Writeln('Total Candidate : ':40,total_student);
791.
Writeln('Total School : ':40,total_school);
792.
Writeln;
793.
male := 0;
794.
female := 0;
795.
For i := 1 to total_student do
796.
if student_data[i].sex = 'M' then
797.
male := male +1 else
798.
female := female +1;
799.
Write('Male : ':30,male:2,' ');
800.
TextBackGround(4);
801.
for i := 1 to round(50*(male/total_student)) do
802.
write(' ');
803.
TextBackGround(1);
804.
writeln;
805.
Write('Female : ':30,female:2,' ');
806.
TextBackGround(6);
807.
for i := 1 to round(50*(female/total_student)) do
808.
write(' ');
809.
TextBackGround(1);
810.
writeln;
811.
writeln;
812.
for j := 16 to 19 do
813.
begin
814.
temp_age := 0;
815.
for i := 1 to total_student do
816. 817.
if student_data[i].age = j then temp_age := temp_age +1;
818.
write('Age ':25,j,' : ',temp_age:2,' ');
819.
TextBackGround(4+j);
820.
for i := 1 to round(30*(temp_age/total_student))
74
Design - Implementation
821. do 822.
write(' ');
823.
writeln;
824.
TextBackGround(1);
825.
End;
826.
writeln;
827.
Writeln;
828.
Writeln('Press to Next Page...':45);
829.
repeat until keypressed;
830.
eatkey:=readkey;
831.
Clrscr;
832.
show_header(7);
833.
Writeln;
834.
Writeln('Top 10 Students : ':40);
835.
writeln;
836.
For i := 1 to 10 do
837.
For j := 1 to total_Student do
838.
if Student_data[j].ranking = i then
839.
writeln(i:30,'. ',Student_data[j].name);
840.
writeln;
841.
Writeln;
842.
Writeln('Press any key to continue....':55);
843.
repeat until keypressed;
844.
eatkey:=readkey;
845.
End;
846.
2 : Begin
847.
total_mark :=0;
848.
For i := 1 to total_school do
849.
total_mark := total_mark + School_data[i].total_mark;
850.
entry_per_page := 5;
851.
n := round(total_School/entry_per_page);
852.
For i := 1 to n do
853.
Begin
854.
Clrscr;
855.
show_header(7);
856.
For j := entry_per_page*(i-1)+1 to
857. entry_per_page*i do
75
Design - Implementation
858.
Begin
859.
Writeln('
860. ':20,School_data[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)].name); 861.
Write(' ':25,'Students :
862. ',School_data[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)].no_of_student:3, 863. ' '); 864.
TextBackGround(10);
865.
for k := 1 to
866. round(150*(School_data[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)].no_o 867. f_student/total_student)) do 868.
write(' ');
869.
TextBackGround(1);
870.
Writeln;
871.
Write(' ':28,'Marks :
872. ',School_data[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)].total_mark:3,' '); 873.
TextBackGround(7);
874.
for k := 1 to
875. round(150*(School_data[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)].total 876. _mark/total_mark)) do 877.
write(' ');
878.
TextBackGround(1);
879.
Writeln;
880.
End;
881.
Writeln;
882.
Writeln('':30,'
883.
repeat until keypressed;
884.
eatkey:=readkey;
885.
Page ',i,'/',n,'
');
End;
886.
End;
887.
3 : Begin
888.
entry_per_page := 8;
889.
n := round(length(Answer)/entry_per_page);
890.
For i := 1 to n do
891.
Begin
892.
Clrscr;
893.
show_header(7);
76
Design - Implementation
894.
For j := entry_per_page*(i-1)+1 to
895. entry_per_page*i do 896.
Begin
897.
count :=0;
898.
For k := 1 to total_student do
899.
if
900. student_data[k].ans[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)] = 901. Answer[(i-1)*entry_per_page+(j-(i-1)*entry_per_page)] 902.
then count := count+1;
903.
Write('':17,'Q',(i-1)*entry_per_page+(j-(i-1)*entry_per_page):2,'. |
904. Correct : ',count:2,' (',round((count/total_student)*100):2,'%) '); 905.
Randomize;
906.
TextBackGround(10+j*10+k);
907.
for k := 1 to round(30*(count/total_student))
908.
do
909.
write(' ');
910.
TextBackGround(1);
911.
Writeln;
912.
Writeln;
913.
End;
914.
Writeln;
915.
Writeln('':30,'
916.
repeat until keypressed;
917.
eatkey:=readkey;
918.
921.
');
End;
919. 920.
Page ',i,'/',n,'
End; End; until temp_key = 4;
922. End; From 776 to 922 is for analyzing the total no. of candidates, schools, gender, questions ,etc. 923. Procedure output_report; 924. Var 925.
fileout : text;
926.
i,j,count : integer;
927.
eatkey : char;
77
Design - Implementation
928. Begin 929.
Assign(fileout,path+'Report.txt');
930.
Rewrite(fileout);
931.
Writeln(fileout,'###############################################
932. ##############'); 933.
Writeln(fileout,'#
934.
#');
935.
Writeln(fileout,'#
936.
#');
937.
Writeln(fileout,'#
938. 939.
Analysis Report Generated by Program
#'); Writeln(fileout,'###############################################
940. ##############'); 941.
Writeln(fileout,'General Information:');
942.
Writeln(fileout,'1. Total Candidates : ',total_student);
943.
Writeln(fileout,'2. Total Schools : ',total_school);
944.
Writeln(fileout,'3. Total Questions : ',length(Answer));
945.
Writeln(fileout,'4. Model Answer :',Answer);
946.
Writeln(fileout,'###############################################
947. ##############'); 948.
Writeln(fileout,'Student Information:');
949.
Writeln(fileout);
950.
For i := 1 to total_student do
951.
Begin
952.
Writeln(fileout,'Name: ',Student_data[i].name);
953.
Writeln(fileout,'Age: ',Student_data[i].age);
954.
Writeln(fileout,'Sex: ',Student_data[i].sex);
955.
Writeln(fileout,'School:
956. ',School_data[Student_data[i].school_no].name); 957.
Writeln(fileout,'Answer: ',Student_data[i].ans);
958.
Writeln(fileout,'Marks: ',Student_data[i].mark);
959.
Writeln(fileout,'Ranking: ',Student_data[i].ranking);
960.
Writeln(fileout);
961.
End;
962.
Writeln(fileout,'###############################################
963. ##############');
78
Design - Implementation
964.
Writeln(fileout,'School Information:');
965.
Writeln(fileout);
966.
For i := 1 to total_school do
967.
Begin
968.
Writeln(fileout,'Name: ',school_data[i].name);
969.
Writeln(fileout,'No of Candidate: ',school_data[i].no_of_student);
970.
Writeln(fileout,'Total Marks: ',school_data[i].total_mark);
971.
Writeln(fileout,'Ranking: ',school_data[i].ranking);
972.
Writeln(fileout);
973.
End;
974.
Writeln(fileout,'###############################################
975. ###############'); 976.
Writeln(fileout,'Special Analysis:');
977.
Writeln(fileout);
978.
count := 0;
979.
For i := 1 to total_student do
980.
if student_data[i].sex = 'M' then count := count+1;
981.
Writeln(fileout,' Total Male Candidate: ',count);
982.
count := 0;
983.
For i := 1 to total_student do
984.
if student_data[i].sex = 'F' then count := count+1;
985.
Writeln(fileout,'Total Female Candidate: ',count);
986.
Writeln(fileout);
987.
For j := 16 to 19 do
988.
Begin
989.
count := 0;
990.
For i := 1 to total_student do
991.
if student_data[i].age = j then count := count+1;
992. 993.
Writeln(fileout,'Age of ',j,': ',count); End;
994.
Writeln(fileout);
995.
Writeln(fileout,'TOP 10 Students:');
996.
Writeln(fileout);
997.
For i := 1 to 10 do
998. 999. 1000.
Begin For j := 1 to total_student do if student_data[j].ranking = i then
79
Design - Implementation
1001. 1002.
writeln(fileout,i,'. ',student_data[j].name); End;
1003.
Writeln(fileout);
1004.
Writeln(fileout,'TOP 10 Schools:');
1005.
Writeln(fileout);
1006.
For i := 1 to 10 do
1007.
Begin
1008.
For j := 1 to total_school do
1009.
if school_data[j].ranking = i then
1010. 1011.
writeln(fileout,i,'. ',school_data[j].name); End;
1012.
Writeln(fileout);
1013.
Writeln(fileout,'###############################################
1014. ###############'); 1015.
Writeln(fileout,'Question Analysis:');
1016.
For i := 1 to length(Answer) do
1017.
Begin
1018.
count := 0;
1019.
For j := 1 to total_student do
1020.
if student_data[j].ans[i] = Answer[i] then count := count
1021. +1; 1022.
Writeln(fileout,'Q',i:2,'. | Correct : ',count,'
1023. (',round((count/total_student)*100),'%)'); 1024.
count := 0;
1025.
For j := 1 to total_student do
1026. 1027.
if student_data[j].ans[i] = 'A' then Writeln(fileout,'
|
''A''
count := count +1;
: ',count,'
1028. (',round((count/total_student)*100),'%)'); 1029.
count := 0;
1030.
For j := 1 to total_student do
1031. 1032.
if student_data[j].ans[i] = 'B' then Writeln(fileout,'
|
''B''
count := count +1;
: ',count,'
1033. (',round((count/total_student)*100),'%)'); 1034.
count := 0;
1035.
For j := 1 to total_student do
1036.
if student_data[j].ans[i] = 'C' then
count := count +1;
80
Design - Implementation
1037.
Writeln(fileout,'
|
''C''
: ',count,'
1038. (',round((count/total_student)*100),'%)'); 1039.
count := 0;
1040.
For j := 1 to total_student do
1041.
if student_data[j].ans[i] = 'D' then
1042.
Writeln(fileout,'
|
''D''
count := count +1;
: ',count,'
1043. (',round((count/total_student)*100),'%)'); 1044. 1045.
End; Writeln(fileout,'###############################################
1046. ###############'); 1047.
Writeln(fileout,'
End of Report');
1048.
Close(fileout);
1049.
Clrscr;
1050.
show_header(8);
1051.
writeln;
1052.
Writeln('':20,'Report has been saved to ''Report.txt''...');
1053.
Writeln;
1054.
Writeln('Press any key to continue....':55);
1055.
repeat until keypressed;
1056.
eatkey := readkey;
1057. End; From line 923 to 1057 is for outputting the report of the competition. 1058. Begin 1059.
welcome;
1060.
initial;
1061.
show_menu(1,1);
1062.
Repeat
1063.
choice := read_key(1);
1064.
Case choice of
1065.
1 : Begin
1066.
show_data := student_data;
1067.
show_entry(total_student);
1068.
End;
1069.
2 : Searching;
1070.
3 : filtering;
1071.
4 : reporting;
81
Design - Implementation
1072.
5 : award;
1073.
6 : EDIT_ENTRY(0);
1074.
7 : output_report;
1075.
End;
1076.
Until choice = 8;
1077. End. From line 1058 to 1077 is the main program which is calling procedures welcome, initial, show_menu, etc.
82
Testing and Evaluation - Testing tables
First Testing Test Date: 26/8/2008 Test item
Input
Expected result
Actual result
Remark
H:\coursework
Close window
Close window
Error free
H:\coursework\
Open program
Open program
Error free
Input path
Show
individual Show
individual
Press ‘enter’ on 1
Error free data
data
Press ‘enter’ on 2 Show entry menu Quit program
Error exist
Show filter entry Press ‘enter’ on 3
Show entry menu Error exist menu Show
display Show
display
Press ‘enter’ on 4
Error free report menu
report menu
Main menu Show award for Press ‘enter’ on 5 Show award menu
Error exist students
Ask for input of Ask for input of Press ‘enter’ on 6
Error free student ID
student ID
Tell you the report Tell you the report Press ‘enter’ on 7 has
been
saved has
been
saved Error free
and a file is made and a file is made.
83
Testing and Evaluation - Testing tables
Press ‘enter’ on 8 Quit program
Quit program
Error free
Press ‘?’ on 1
No response
No response
Error free
Press ‘o’ on 5
No response
No response
Error free
Press space bar
Show next data
Show next data
Error free
Press ‘esc’
Show main menu Show main menu Error free
Individual data Show edit entry Show edit entry Press ‘E’
Error free menu
menu
Ask for input of Ask for input of Press ‘enter’ on 1
Error exist student name
student ID
Ask for input of Ask for input of Press ‘enter’ on 2
Error free student ID
Search
student ID
entry Ask for input of Ask for input of
menu
Press ‘enter’ on 3
Error free ranking
ranking
Press ‘enter’ on 4 Show main menu Show main menu Error free
Search Search
Press ‘?’ on 1
No response
No response
Error free
Press ‘X’ on 3
No response
No response
Error free
Data not found
Data not found
Error free
Data not found
Data not found
Error free
entry; yyy by chan shuk yan
84
Testing and Evaluation - Testing tables
student name
CHAN
SHUK Show data of the Show data of the Error free
YAN
student
student
show data of the show data of the 1
Error free student with id=1 student with id=1
Search
entry; 198
No response
No response
Error free
Search by id The program
is The program
is
a
Error free suspended
suspended
Show data with Show data with 1 Search
entry;
Search
by 198
ranking
Error free ranking=1
ranking=1
No response
No response
The program
is The program
Error free is
A
Error free suspended
suspended
Show data with all Show data with all M
Error free sex=M
Filter
entry;
sex=M
Show data with all Show data with all F
Filter by sex
Error free sex=F
sex=F Show data with all
N
No response
Error exist sex=M
Filter
entry; 1
Data not found
Data not found
Error free
85
Testing and Evaluation - Testing tables
Filter by age
Show data with all Show data with all 15
Error free age=15 The program
age=15 is The program
is
?
Error free suspended
suspended
Show data with all Show data with all 1 Filter
Error free school code=1
school code=1
Data not found
No response
The program
is The program
entry; 78
Error exist
Filter by school is
?
Error free suspended
suspended
Show data with all Show data with all 1;1
1;2 Filter
entry; 999;1
Filter by mark
Error free mark>1
mark>1
Data not found
Data not found
Error free
Data not found
Data not found
Error free
Show all data with Show all data with 999;2
Filter
entry;
Error free mark<999
Filter by ranking
The program
mark<999 is The program
is
a
Error free suspended The program
suspended is The program
3;e
is Error free
suspended
suspended
86
Testing and Evaluation - Testing tables
3;3
No response
No response
Error free
Show all data with Show all data with 1;1
Error free ranking=> 1
ranking=> 1
Show all data with Show all data with 1;2
999;1
Error free ranking<=1
ranking<=1
Data not found
Data not found
Error free
Show all data with Show all data with 999;2
Error free ranking<=999
ranking<=999
The program
is The program
is
a
Error free suspended The program
suspended is The program
is
3;e
Error free suspended Back
Filter
to
suspended main Back
to
main
entry; Press ‘enter’
Error free menu
menu
No response
No response
Back to menu L
Show
candidates Show
Error free
candidates
Display report; analysis with total analysis with total candidates
Press ‘enter’
Error free paticipants,
age, paticipants,
age,
analysis top10, etc. which top10, etc. which
87
Testing and Evaluation - Testing tables
consists of 2 pages consists of 2 pages L
No response Show
No response
schools Show
Error free
candidates
analysis with total analysis with total Display report; Press ‘enter’
students,
total paticipants,
age, Error exist
shcools analysis
mark, etc. which top10, etc. which consists of 4 pages consists of 2 pages L
No response Show
Display report;
No response
questions Show
Error free
questions
analysis
with analysis
with
correct
ans’ correct
ans’ Error free
Press ‘enter’ etc. percentage
etc.
questions
percentage
analysis
which consists of which consists of
L
6 pages
6 pages
No response
No response
Back
to
main Back
to
Display report; Press ‘enter’
Error free main Error free
menu
mennu
No response
No response
back to menu L Awards
Error free
Press ‘enter’ on 1 Show awards for Show awards for Error free
88
Testing and Evaluation - Testing tables
Edit entry L
students
students
No response
No response
Error free
Show awards for Show awards for Press ‘enter’ on 2
L
Error exist schools
students
No response
No response
Back
to
main Back
to
Error free main
Press ‘enter’ on 3
L
Error free menu
mennu
No response
No response
Error free
Show edit entry Show edit entry Input id=1
Error free menu
menu
The input-id will The input-id will be cleared and the be cleared and the Input id=999
program will ask program will ask Error free the user to input the user to input the id again
the id again
Ask the user to Ask the user to Press ‘enter’
input new name input new name Error free
Edit entry; name
L
for the input-id
for the input-id
No response
No response
Error free
89
Testing and Evaluation - Testing tables
Ask the user to Ask the user to Press ‘enter’
input new sex for input new name Error exist
Edit entry; sex
L
the input-id
for the input-id
No response
No response
Error free
Ask the user to Ask the user to Press ‘enter’
input new age for input new age for Error free
Edit entry; age
L
the input-id
the input-id
No response
No response
Error free
Ask the user to Ask the user to Edit
entry; Press ‘enter’
answer L
input new answers input new anwers Error free for the input-id
for the input-id
No response
No response
Error free
Ask the user to Ask the user to input new shool input new school Edit
entry; Press ‘enter’
Error free code
for
the code
for
the
school code
L Edit entry; back
input-id
input-id
No response
No response
Back
to
main Back
Press ‘enter’ to menu
to
Error free main Error free
menu
mennu
90
Testing and Evaluation - Testing tables
L
No response
No response
Error free
A statement will A statement will be Press ‘enter’
shown
as be
shown
as
“Report has been “Report has been Error free
Output report saved
to saved
to
‘report.txt’...”
‘report.txt’...”
L
No response
No response
Error free
Press ‘enter’
Quit program
Quit program
Error free
L
No response
No response
Error free
Exit
91
Testing and Evaluation - Testing tables
z
Second Testing
Test Date: 15/9/2008 Test item
Input
Expected result
Actual result
Remark
H:\coursework
Close window
Close window
Error free
H:\coursework\
Open program
Open program
Error free
Input path
Show
individual Show
individual
Press ‘enter’ on 1
Error free data
data
Press ‘enter’ on 2 Show entry menu Show entry menu Error free Show filter entry Show filter entry Press ‘enter’ on 3
Error menu
menu
Show
display Show
display
Press ‘enter’ on 4 Main menu
free
Error free report menu
report menu
Press ‘enter’ on 5 Show award menu Show award menu Error free Ask for input of Ask for input of Press ‘enter’ on 6
Error free student ID
student ID
Tell you the report Tell you the report Press ‘enter’ on 7 has
been
saved has
been
saved Error free
and a file is made and a file is made.
92
Testing and Evaluation - Testing tables
Press ‘enter’ on 8 Quit program
Quit program
Error free
Press ‘?’ on 1
No response
No response
Error free
Press ‘o’ on 5
No response
No response
Error free
Press space bar
Show next data
Show next data
Error free
Press ‘esc’
Show main menu Show main menu Error free
Individual data Show edit entry Show edit entry Press ‘E’
Error free menu
menu
Ask for input of Ask for input of Press ‘enter’ on 1
Error free student name
student name
Ask for input of Ask for input of Press ‘enter’ on 2
Error free student ID
Search
student ID
entry Ask for input of Ask for input of
menu
Press ‘enter’ on 3
Error free ranking
ranking
Press ‘enter’ on 4 Show main menu Show main menu Error free
Search Search
Press ‘?’ on 1
No response
No response
Error free
Press ‘X’ on 3
No response
No response
Error free
Data not found
Data not found
Error free
Data not found
Data not found
Error free
entry; yyy by chan shuk yan
93
Testing and Evaluation - Testing tables
student name
CHAN
SHUK Show data of the Show data of the Error free
YAN
student
student
show data of the show data of the 1
Error free student with id=1 student with id=1
Search
entry; 198
No response
No response
Error free
Search by id The program
is The program
is
a
Error free suspended
suspended
Show data with Show data with 1 Search
entry;
Search
by 198
ranking
Error free ranking=1
ranking=1
No response
No response
The program
is The program
Error free is
A
Error free suspended
suspended
Show data with all Show data with all M
Error free sex=M
Filter
sex=M
entry; Show data with all Show data with all
Filter by sex
F
N Filter
entry; 1
Filter by age
15
Error free sex=F
sex=F
No response
No response
Error free
Data not found
Data not found
Error free
Show data with all Show data with all Error free
94
Testing and Evaluation - Testing tables
age=15 The program
age=15 is The program
is
?
Error free suspended
suspended
Show data with all Show data with all 1 Filter
Error free school code=1
school code=1
Data not found
Data not found
entry; 78
Error free
Filter by school The program
is The program
is
?
Error free suspended
suspended
Show data with all Show data with all 1;1
Error free mark>1
mark>1
1;2
Data not found
Data not found
Error free
999;1
Data not found
Data not found
Error free
Show all data with Show all data with Filter
entry; 999;2
Error free mark<999
mark<999
Filter by mark The program
is The program
is
a
Error free suspended The program
suspended is The program
3;e
3;3
is Error free
suspended
suspended
No response
No response
Error free
95
Testing and Evaluation - Testing tables
Show all data with Show all data with 1;1
Error free ranking=> 1
ranking=> 1
Show all data with Show all data with 1;2
999;1 Filter
Error free ranking<=1
ranking<=1
Data not found
Data not found
Error free
entry; Show all data with Show all data with
Filter by ranking 999;2
Error free ranking<=999
ranking<=999
The program
is The program
is
a
Error free suspended The program
suspended is The program
is
3;e
Error free suspended Back
Filter
to
suspended main Back
to
main
entry; Press ‘enter’
Error free menu
menu
No response
No response
Back to menu L
Show Display report; candidates analysis
candidates Show
Error free
candidates
analysis with total analysis with total Press ‘enter’
paticipants,
age, paticipants,
age, Error free
top10, etc. which top10, etc. which consists of 2 pages consists of 2 pages
96
Testing and Evaluation - Testing tables
L
No response Show
No response
schools Show
Error free
schools
analysis with total analysis with total Display report; Press ‘enter’
students,
total students,
total Error free
shcools analysis
mark, etc. which mark, etc. which consists of 4 pages consists of 4 pages L
No response Show
Display report;
No response
questions Show
Error free
questions
analysis
with analysis
with
correct
ans’ correct
ans’
Press ‘enter’
Error free
questions
percentage
analysis
which consists of which consists of
L
etc. percentage
6 pages
6 pages
No response
No response
Back
to
main Back
to
etc.
Error free main
Display report; Press ‘enter’
Error free menu
mennu
No response
No response
back to menu L
Error free
Show awards for Show awards for Awards
Press ‘enter’ on 1
Error free students
students
97
Testing and Evaluation - Testing tables
L
No response
No response
Error free
Show awards for Show awards for Press ‘enter’ on 2
L
Error free schools
schools
No response
No response
Back
to
main Back
to
Error free main
Press ‘enter’ on 3
L
Error free menu
mennu
No response
No response
Error free
Show edit entry Show edit entry Input id=1
Error free menu
menu
The input-id will The input-id will Edit entry
be cleared and the be cleared and the Input id=999
program will ask program will ask Error free the user to input the user to input the id again
the id again
Ask the user to Ask the user to Press ‘enter’
input new name input new name Error free
Edit entry; name
Edit entry; sex
for the input-id
for the input-id
L
No response
No response
Press ‘enter’
Ask the user to Ask the user to Error free
Error free
98
Testing and Evaluation - Testing tables
input new sex for input new sex for
L
the input-id
the input-id
No response
No response
Error free
Ask the user to Ask the user to Press ‘enter’
input new age for input new age for Error free
Edit entry; age
L
the input-id
the input-id
No response
No response
Error free
Ask the user to Ask the user to Edit
entry; Press ‘enter’
answer L
input new answers input new anwers Error free for the input-id
for the input-id
No response
No response
Error free
Ask the user to Ask the user to input new shool input new school Edit
entry; Press ‘enter’
Error free code
for
the code
for
the
school code
L
input-id
input-id
No response
No response
Back
to
main Back
to
Edit entry; back Press ‘enter’
Error free main Error free
menu
mennu
No response
No response
to menu L
Error free
99
Testing and Evaluation - Testing tables
A statement will A statement will be Press ‘enter’
shown
as be
shown
as
“Report has been “Report has been Error free
Output report saved
to saved
to
‘report.txt’...”
‘report.txt’...”
L
No response
No response
Error free
Press ‘enter’
Quit program
Quit program
Error free
L
No response
No response
Error free
Exit
100
Discussion and Conclusion - Discussion
To write this program, I spent near 35 hours. I am quite satisfied with my program as there is no error exists. Also, the functions can work well and associate together. However, it is not perfect. Thus, other than the strengths, there aare also some weaknesses. In this part, I am going to list out the strengths and weaknesses of my program. 1.
strengths of the program First, the program is organized well. The functions of the program are written separately in different modules and then combined together to form a main program. As each module only does few small jobs, thus, it is easier to modify it. Furthermore, the main program is well-designed that it allows adding new functions freely. Therefore, whenever I want, I can add some new functions to it conveniently without changing the core part. Second, its file size is very small. The size of the program is 49.5 KB. The total size of data files is only 7.96KB. Therefore, the total size of all files does not exceed 60KB. This is convenient that the whole program can be saved in even a floppy disk. Third, the processing speed of the program is really fast that there is no delay and waiting time. This is simply because there is no calculation needs to be worked out in the program.
101
Discussion and Conclusion - Discussion
Forth, the program needs a low requirement of computer only. As the program can be run in most platforms. Also, it is because the small file size requires a little RAM only. Even the computer, which is old-model, can run the program. Fifth, the program has lots of function that the otherâ&#x20AC;&#x2122;s program may not have. For example, the filter function which allows user to separate the data that he wants from he does not want and a function can output a report of the analysis which is text file and printable. These functions provide lots of convenience to the user. Sixth, the program is reusable, that means the program can run correctly with different set of data files. If the data is in the correct format, calculation, ranking, searching, and reporting can also function no matter how many entries are inside the file. This is very important as we can use the same program again when there is another competition. Seventh, the structure of the database is very well designed. Data can be added and edited easily in the data file. It is because the whole database is spitted into different text file which store different kinds of information and the key filed of each entry is the identifier in different text file. Eighth, the programming language is very readable, therefore, debugging
102
Discussion and Conclusion - Discussion
work and maintaining work is easy to do. Moreover, the program is easy enough for other programmers to develop and add more function on it. Last, the layout of the program is very user-friendly. Users use only the arrow keys and enter key can control all the instructions. And all of the instrctions of the program is clearly displayed , thus, it is very easy for user to understand and use it. 2.
Weaknesses of the program When searching the entry by student name, all the letters should be capital letter. Whenever the user search or filter entry, the input should be the correct variable type such as string for name, integer for mark, ranking and id. If the input does not match the required variable type, the program will suspended. When editing the answer of entry, the user has to type all the answers of the entry once by himself. If he just wants to correct one of the answer, this will cause a great inconvenience.
103
Discussion and Conclusion - Discussion
Besides the above weaknesses, my program can still be improved in order to make it perfect. 3.
Suggested improvements: First, the program can have more beautiful layout as this one cannot be classified as beautiful. A beautiful layout is important that it can attract people to use it. Everyone likes beautiful things. Second, some operation rules can be written on the program so that the user can avoid these and the caused inconveniences can be reduced. Last, the letters of the program can be larger. As the size of the letter now is not big enough. Some may think that it is difficult to see.
104
Discussion and Conclusion - Conclusion
The program has been finished. Pleasantly, there are no errors in my program. All the task objectives are achieved. My program gives lots of conveniences to user. First, the user just press â&#x20AC;&#x2DC;Enterâ&#x20AC;&#x2122; and all the things are done by the program unless the user wants to search, edit and filter entry. Second, bar charts of my program allow user to figure out the position of each participants quickly and easily. Third, the program has a function to output a report in the form of text file. This provides a convenience for user as he does not need to create one by himself. Forth, the search function is also available in my program which allows user to find entry easily and rapidly. Fifth, the filter function is special that the user can read the data which satisfies his requirements. Last, the edit function helps user the change data quickly as he does not need to find out the data of specific entry in a numerous of data. Other than the task objectives, all the learning objectives are reached also. First, I learnt my skills of pascal on the Internet such as delay, drawing charts, making text file, making menu etc. Second, my English has been improved a lot since I have practiced a lot with various of sentence structures and learnt lots of vocabulary items. Moreover, the pronunciation is also improved during presentation as my classmates corrected me. Third, my presentation skills are improved. My voice intensity is loud enough so everyone can hear me clearly. Also,
105
Discussion and Conclusion - Conclusion
the speed is medium. Forth, my problem solving skills are improved. When I faced questions, I would try to solve it by myself first. If the problem could not be solved, I would seek for help. Also, I know I can break a big problem into small pieces now. Small problem is always easier to solve. Fifth, I become braver. I am not that afraid of speaking in front of people now. At least better than before. Sixth, I have increased my knowledge in technology and Internet when I searched information on the Internet. I found there were many technology products which was I never knew. Last, I increased my interest in both technology and Internet. As there were many things I did not know and which were new. I am interested in studying on them.
106
Reference - Books
1.
Name: Pascal 語言三日通 Author: 招兆鏗 Publisher: 萬里機構
2.
Name: Pascal 程序設計 Author: 朱玉文 Publisher: 國防工業出版
3.
Name: Pascal : an introduction to modern programming Author: Goldstein, Larry Joel. Publisher: New York : Holt, Rinehart and Winston, 1988.
4.
Name: PASCAL 程序設計習題與選解 Author: 楊德元 Publisher: 清華大學出版社
5.
Name: Pascal for students, including Turbo Pascal Author: Brian D. Hahn, Ray Kemp. Publisher: London : Arnold, 1996.
107
Reference - Websites
1.
Name: URL: http://en.wikipedia.org/
2.
Name: Irie Pascal Programmer's Reference Manua URL: http://www.irietools.com/iriepascal/progref.html
3.
Name: Turbo Pascal Programmers Page URL: http://www.devq.net/pascal/
4.
Name: Pascal Programmers Paradise URL: http://www.petewww.kiev.ua/ppp/
5.
Name: John's Pascal Page URL: http://www.merlyn.demon.co.uk/
6.
Name: Ultimate Pascal URL: http://www.majicware.com/pascal/turbo_pascal.html
7.
Name: Pascal Central URL: http://pascal-central.com/
8.
Name: ERT 2007 HKCEE CIT Project 教學網 URL: http://personal.tsss.edu.hk/ert/cit/07/project/index.html
9.
Name: Turbo Pascal Infobase URL: http://infobase.hypermart.net/
108