|
Mister Micawber

#522220 Tue, 03 Jun 08 12:49 AM
|
|
. I have crossed out inappropriate material and underlined some problem areas. You have trouble with commas and with chatting:
In taking upon my Senior Honors Project I have thrown myself over a ledge with the intention to climb back up. Through this year my drive, enthusiasm, and patience have been tested. However, I believe I am within an arm’s reach of the top and, with one final grasp, I shall report my experience.I could not have completed my project without some very important outside resources. One of these resources that greatly aided me was the PHP manual on php.net. This website holds information on all of the built in PHP functions. On each page users can post solutions to common problems arisen by the function dedicated to it or describe in more detail how to use them. Using this has cut down on development time by giving me answers to almost all of my syntax and function related questions. If I had trouble remembering the name of a function I could simply look it up on the site. Without this I would either have to use a guess-and-check type of finding the solution or type it into a search-engine and rely on third-party sites. This resource also helped me discover new functions that made my coding easier; I would not have to ‘reinvent the wheel’ when a built in function existed. The conversations with my project mentor, Ed Sprenger, have also yielded great knowledge. The insight he has given me on all my questions was very informative and he has taught me what I would have otherwise never learned through basic research. Our topics of discussion ranged from future jobs, programming languages, and life in the computer science field to internet security and database advice. It has been very helpful to have someone to talk to who is in the computer science field and understands what I am doing. I cannot imagine getting through this project with someone who didn’t know a bit from a byte. Ed Sprenger was a valuable resource in my project and has taught me very well.
One of my objectives from the start of the project was to learn how to program in the windows environment. I am now confident that I am very knowledgeable in this field. Through use of the Windows API (Application Programming Interface) in my project I have learned all about programming windows applications. Some of the main topics I delved into were message controls and message handling. Controls are the things that make up a dialog box or application window: edit boxes, drop down boxes, and radio buttons. These, along with message handling, are all it takes to create a functional and effective Windows program. Message handling is a broad subject and was therefore a difficult subject to grasp and implement. Messages are data that is sent to the main application, child dialog boxes, and controls. These messages range from telling the object it has been clicked upon to telling the object to destroy itself. There are many messages that could be potentially sent and choosing which the ones to recognize and the handling of them is up to the programmer. Luckily the Windows SDK Documentation outlines all the messages and their data.The Windows SDK (Software Development Kit) Documentation and the online documentation at msdn.com both helped me in the application programming aspect of my project. Since the documentation is straight from Microsoft, I can rely on it to tell me everything about the piece of information that I am looking up. It describes itself plainly and clearly and cross references related data that has more than often helped me grasp the subject beyond a basic understanding. Every website needs a directory chain; a way of organizing the folders that hold the files. I got my idea from a web programming job I held with Chad Furman two summers back. I learned a lot from him, holding that job. This directory tree was one thing that I remember. I have one main folder that houses all of the main pages of the site. This includes the index page, the login page, and the report card page among others. From there I have a picture folder which houses all the pictures and a folder called ‘includes’. This ‘includes’ folder contains all of the PHP helper files that process the HTML forms along with some helper functions. Within lies another folder labeled ‘classes’ which contains the PHP classes of the project. Each class has its own file which is included by the different files in the ‘include’ folder. So an example design would be the report card page including the report card include file (in the ‘include’ folder). This included file would then include the report card class file (in the ‘classes’ folder). The design is not very complex but it does a good job of organizing my files.One aspect of the site that I was very proud of is the system for logging in. What I have set up is an include file that is required by all pages that require access to user validity or other user functions. This include file holds the user class which contains functions that deal with all aspects to the user. Any page containing the file can check for user validity, log the user in, log them out, and access the user’s data. Parents, teachers, and administrators all use the same login page. However when parents login they only in need of a password and not a username. The database holds all the different types of users’ data the same way and in the same table. I was lucky for the logging in system to turn out as good as it did.Upon logging in every user has a set of session variables. These variables are used for keeping track of the user and their credentials. They will hold their value for as long as the internet browser is open. So a user is logged in, even while surfing other pages, providing they don’t log themselves out or close out of their browser. This technique trumps using browser cookies for a couple of reasons. The pro of using cookies to save data over multiple sessions does hold value in my case. No one user will be travelling the website often enough for this feature to be worth the trouble of implementing it. Session variables are fine for what I am setting out to do. There are three basic sections that the end user has access to on the website. They are all accessed through the control panel, and depending on which type of user is requesting that page depends on the control panel they see. The control panel checks the session ‘access’ variable, and depending on the value, displays the appropriate options to be linked on the control panel. The most common type of user is the parent. Their control panel consists of one item; a link to see their child’s report card. Clicking this takes them to a table showing their report card. Each entry contains the class, the teacher, and the grade. For a class description they can simply click on the class name and a pop-up window will open containing the text. The only other option the parent has is to logout, which is on all the users’ control panels. The next type of user is the teacher. They have considerable more options than the parent, as they should. The first thing to be noted is the teacher panel. This page is where the teachers may access and edit the enrollment and grades of their class. They may add and remove students from their class and add, edit, and delete the grades of their students. This is where the teacher will be spending most of their time. The next thing a teacher may do is view report cards. They can see any child’s report card that is in their class. However the only grades that will be listed are the ones from classes that the viewing teacher teaches. So an English teacher will not be able to see the grade a student gets in a Math class. The last thing on the teacher control panel is the class stats page. This page contains a list of all the grades in the class and the class mean, class median, and class range. The last type of user is the administrator. They have access to everything. Right from the control panel they can go into the admin panel which lets them edit almost everything on the site. On this admin panel page there are the categories: Student, Parent, Teacher, Admin, Class, Enrollment, and Grade. Under each of these are the options: Add, Delete, and Edit. So under each of the categories they can add to them (e.g. adding a student), delete them (e.g. deleting a grade), and edit them (e.g. changing a class’s description). With this they can start from scratch and create a whole grading system complete with classes, teachers, students, and grades. Along with this power, the administrator can see all students’ report cards complete with all classes and see all classes’ stats pages. The administrator is the person who must set everything up once, and after this the teachers and parents may use the site to the max. On every one of the pages that displays personal data there is a security check on each page refresh. This is done to prevent users from seeing what they shouldn’t be seeing. This feature works by taking the user id session variable and/or the student id pertaining to that user and checks them against their respective get variables. Without this security, a user could log in and then see other users’ data. For example, a parent could log in and direct their browser to the report card page. Naturally, their child’s report card will show up. However if they change the user id ‘get’ variable and refresh the page they will see another child’s grades. This is where my protection kicks in, preventing this and giving the user an error explaining that they don’t have access to the page they are trying to view. With the database designed as it is, deleting data has become a little complicated. For example, when you delete a class, all the grades are still in the database despite the fact that they have no class associated with them. Also when a student is removed their grades stay behind to rot. I have fixed this by allowing the administrator (the only one doing any deleting affected by this) the option to delete all associative data relating to the entry being deleted. So now (assuming the user chooses the option) when a student is deleted their grades and their parent user are also deleted. Also when a class is deleted all the grades go along with it. This prevents old and needless data from piling up in the database and causing confusion among the users. Upon completion of my senior honors project I am confident with my skills and am ready to go out into the world in search of a computer science career. Spending a lot of my free time in front of my computer and programming has put me through the ringer, and I liked it. Before I started, I had no experience working on an organized project with a pre-existing goal. Before, I have just worked on small projects that have not gone anywhere. Now that I am done programming, I can see the product that I have made. I can see that it has been completed with success. I have taken my ideas and integrated them efficiently and successfully. I have learned a great deal this year.
|
|
|
|
|
Joined on
Wed, Aug 4 2004
Yokohama
|
'The question is,' said Humpty Dumpty, 'which is to be master-- that's all.'
|