zoukankan      html  css  js  c++  java
  • C语言 cgi(3)

    1
    cs3157 – Advanced Programming
    Summer 2014, Project 1, 150 points
    June 17, 2014
    Follow these step-by-step instructions. This homework must be submitted electronically by
    Sunday night July 6th, 11pm. Please start early, so we can help if you get stuck.
    In this project you will be making use of c’s pointers, arrays, dynamic memory allocation, i/o and your
    perl knowledge etc.
    Goal: the overall goal of your project is to develop a website which allows you to coordinate a shared
    calendar between users. Any user can create a meeting (think of a class) which a specific schedule
    (weekly, monthly, etc). A meeting has a title, subject, time, address, and description associated with it.
    Creativity counts, so feel free to improvise as long as you cover the general gist of the assignment.
    I am breaking down the assignment into section parts and then into steps to allow you to manage the
    project more efficiently. In addition we will be doing some of the work in class.
    Do not forget to comment, and create a makefile for the project. Please break the project into relevant .h
    and .c files so that it is easier to maintain and debug. In you readme make sure to note what each file does,
    and how each step is related to a specific file. You should submit final files which everything working (as
    much as you can). In addition, if you will need to demonstrate a working website to the TA either via
    showing it on your laptop or on a publicly available webspace. The front end cgi can be perl if you like,
    but the underlying data should be in c/c++ as relevant. For all design decisions please document in the
    README file.
    Step 1 (15 points) Initial Login Page
    Create a single cgi file which when loaded up for the first time presents the user with a login form (that is
    there is no external html page only output from the cgi on empty input).
    The form should contain a user field box and password field box. When typed, the password should show
    stars and not text. You should name this file MainProject1.c and create a MainProject1.h. The form action
    destination should point to the script itself.
    The top of the page should contain the title. The bottom of the main page you should display some
    information about yourself (and link to your homepage if you have one). Feel free to make it as fancy as
    you like.
    Step 2 (25 points) Create account
    Add a link to the initial page saying “click here to create an account”. This should call a
    CreateAccount.cgi program which will ask the user for their name, password, and email and add it to a
    password file.
    The password file is a simple text file with the following format:
    USER=MD5PASSWORD=email
    USER2=MD5PASSWORD2=email2
    2
    Each password is kept as an md5 of the password, and = can not be part of the user name.
    Before adding a new user to the file you should check if it is in the file already. If its not you can append
    it to the end.
    Verify this works by creating 2 accounts, and then visually inspecting the password.txt file.
    When this script is done, it should spit out the original login page. You can do this by calling the
    appropriate function which renders the page from the other.c file (ask me if this isn’t clear). This is why
    we split out the html page into a separate function in class.
    You should use pointers, make sure you are freeing the memory. As discussed in class, use any md5
    library you want.
    Step 3 (30 points) Main page
    If the original cgi is presented with a user name and password, you need to verify it in the password file.
    If it is verified, you will now create a subdirectory in the system to store appointments for the user (only
    done first time).
    Now the user is presented with the following links:
    1) add new meeting
    this will allow the user to add a new meetings into the system with another form
    2) view all meetings
    this will show all current meetings added to the system by this user
    3) system information
    show some information such as how many meetings are in the system and how many users
    for each of the above steps you should be calling the original script. Which means you need to embed
    information in the link when you call yourself. For example you can create a link for a test.cgi and pass
    information:
    <a href=”test.cgi?todo=newmeet”>Click here for new appointment</a>
    that will pass in a query string with todo set to “newmeet” so your script can check for that combination
    and act appropriately.
    Now add appropriate forms for a new meeting. Here you will collect the start date, start time, end date,
    end time, subject, and text info about the meeting. You need to decide how to save the meeting
    information as a file. For example you can choose each meeting as a separate file in a unique directory
    (made up from the usersname) and name them with the “startdate-starttime.app.txt”.
    For the view all meetings you can simply spit back a large html page with all the information….you
    should look into html tables as a way of organizing the information nicer.
    System information should run through all users directories and collect the correct stats info.
    3
    Step 4 (30 points) Navigation page
    We want to add a browser-able calendar feature. The idea is that once a user logs in, they can browse
    through an html calendar (basically a large html table with 7 columns (ie day of week) and be able to click
    on a entry to add an event.
    You will be creating a calendar class which will be able to take a month to display and be able to print out
    the month correctly.
    The English calendar has probably the simplest rules for figuring out how many days per month. Trickier
    is to figure out what the day of the week is…..if you can’t think of a trick please email me for hints…
    Note that the cells in the calendar page should be passing in information to whatever cgi component or
    argument is responsible for creating events.
    Step 5 (30 points) Search Engine
    We will now add a search capability for the specific user’s schedule. Present a form which allows the user
    to query their
    1) entire schedule history (show all appointments)
    2) all schedules between 2 dates (starting and end date)
    3) all schedule between 2 dates (starting and end) and between specific times (example : all
    appointments between july 1 2014 and july 20 2014, between 10:00 am and 11:00 am
    4) search through the text info for specific string.
    This might require you to reorganize the appointment representation on the back end. No reason why
    the data might not be stored in multiple forms to help search.
    In order to do this step cleanly, create a search class which has specific functions to help specific
    searches. For example step 2 and 3 are related and can be coded as one function if you play around
    with the times.
    Step 6 (30 points) Find a free spot
    In this step you want the user to be able to schedule a group appointment between X users on the system.
    You will need to allow the user to check off specific users on the system (will need to list all current
    users).
    Then the user can input a starting date (july 15, 2014), starting time (11am) and length of time (3 hour
    appointment (meeting) ).
    The system needs to search though all the users and find the first occurring timeslot where everyone is
    free for the length of the appointment.
    You need to show both first free timeslot and first date which has that time and free time slot.
    So for the above example, you might return
    1) July 15, 2014 at 6:00pm everyone is free for 3 hours.
    2) July 20, 2014 at 11am everyone is free for 3 hours.
    4
    The user can then click on one of the above and it will insert a group appointment into everyone’s
    schedule.
    Good Luck and Extra Credit for graphics and originality.
    Submit your project.
    You need to submit the following files for this homework: README, Makefile, plus all the files
    generated above. Submit it over courseworks.

  • 相关阅读:
    Promise原理实现(一):前置知识点
    移动端禁用缩放
    多条命令同时执行的包concurrently
    通过面试题学JavaScript知识(1)
    移动设备适配
    css 文本溢出显示省略号
    变量对象的理解
    7.10 日志
    7.9 日志
    JMETER接口测试之自动化环境的配置
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3889364.html
Copyright © 2011-2022 走看看