C Programming : Course Project
## Update History
2015/12/9 22:30 Update deadline, a day ahead.
2015/12/9 22:54 Update Presentation, add a presentation for framework discuss
2015/12/11 12:00 Simplify the project requirement
Abstract
Many basically and widely used system are using C language because it's fast and more closed to the underlying of the computer structure. We are going to build a system as a real world project to understand the system design as well as a system implement.
Modeling is very important in process oriented programming. You are going to design the system yourself and design a good file structure with .h files and .c files. And also you should design good function prototypes and make clear the usage of each part.
What's more is that you should implement the functions for the complete logic.
We are going to build a student management system.
Targets
- Improve the C language grammar learning.
- Learn to design a system using process-oriented programming.
- Learn to use modeling method to implement each part of the process.
- Learn how to work for a project in Software Engineering.
- Learn code style deeply.
Develop Environment
windows: commandline or DEV cpp
ubuntu linux: command line (optional bonus)
ubuntu linux using command line and makefile (optional bonus)
使用linux开发可以加分,期末考试很可能使用linux系统。
另外,ftp上有相关虚拟机和镜像文件下载,以及安装教程,入门教程等。
Requirements
Introduction
Now, you are the system designer for our student grading system. And the our course need the following functions, you job is to implement the system demands.
1. Append Records:
You can insert a grade record into the system.
The record include the several properties studentID, studentName, studentClass, studentGrade.
You can also insert a number of this kind of records at the same time.
2. Delete Records:
You can delete a Record from the system by a studentID, a studentName or a wholeClass, a range of grade.
You can also delete a number of this kind of records at the same time.
3. Modify Records:
You can modify the records.
For example, I can change a student's name, a student's class or a student's grade.
You can also modify a number of this kind of records at the same time.
4. Querying Records:
You can query some students that meets a setting condition. For example, query the students whose grade is less than 60 in a given class.
You can also get the max grade, the average grade, the number of students who's grade is greater than 90.
5. Extended Functions:
You can extend the system with other functions (鼓励添加其他功能).
For example, you can use function functional programming. It means that you are supposed to use function pointers to role as filters to meet the requirements more easily. We have note functional programming in optional project 1.
For example:
Student * Query(Student[] stus, bool(*filter)(const void *));
## Other Requirements:
### Designing Style:
You can not defined useless or meaningless functions. And you can not put all project logic in one file(very bad) or put all logic in a main fuction(very very bad).
How to design good function prototypes and how to divide into several files is very important and this will be the most important part for grading.
Coding Style:
Coding style is very important for you. The style rules including google style are required.
What's more, you should have good comments with your code.
File Method:
Maybe you will us File IO operation, you can use your own data format. Json or CVS is recommended.
Report Template:
Abstract
Make a brief introduction for your project.
User Documentation
Statements about how to run the program. How to use this system.
Project Structure
Statements about your project structure, i.e. your function interfaces and file structure.
Design Thinking && Design Process
Statements about how you think about the project, i.e. how to divided the project(big question) into smaller questions.
Statements about your details of your project design, i.e. how to implement the structure of your system.
Important Algorithm and Data Structure
Some important algorithm and data structure you use should be mentioned. And draw flowchart or write Pseudo code for them.
Testing
Statements about how you test the system.
Conclusion
Personal summary about this project.
Persentation Week 13
We will ask some students to discuss about how to build a framework for the system on Dec 14th 2015.
Presentation Final
We will have a presentation time on January 4th 2016 in the lab class. There will be randomly selected students need to do the presentation.
Deadline:
Dec 31st 2015 18:00
pay attention, one day ahead deadline
Dec 30th 2015 18:00
Dec 30th 2015 21:00
And have a good time on new year's eve.
Submit
Submit to the course ftp
ftp://172.18.182.75
username:c_and_cpp
password:c_and_cpp
filename : 13331314_叶嘉祺_CourseProject.zip
C Programming : Course Project
## Update History
2015/12/9 22:30 Update deadline, a day ahead.
2015/12/9 22:54 Update Presentation, add a presentation for framework discuss
2015/12/11 12:00 Simplify the project requirement
Abstract
Many basically and widely used system are using C language because it's fast and more closed to the underlying of the computer structure. We are going to build a system as a real world project to understand the system design as well as a system implement.
Modeling is very important in process oriented programming. You are going to design the system yourself and design a good file structure with .h files and .c files. And also you should design good function prototypes and make clear the usage of each part.
What's more is that you should implement the functions for the complete logic.
We are going to build a student management system.
Targets
Develop Environment
windows: commandline or DEV cpp
ubuntu linux: command line (optional bonus)
ubuntu linux using command line and makefile (optional bonus)
使用linux开发可以加分,期末考试很可能使用linux系统。
另外,ftp上有相关虚拟机和镜像文件下载,以及安装教程,入门教程等。
Requirements
Introduction
Now, you are the system designer for our student grading system. And the our course need the following functions, you job is to implement the system demands.
1. Append Records:
You can insert a grade record into the system.
The record include the several properties studentID, studentName, studentClass, studentGrade.
You can also insert a number of this kind of records at the same time.
2. Delete Records:
You can delete a Record from the system by a studentID, a studentName or a wholeClass, a range of grade.
You can also delete a number of this kind of records at the same time.
3. Modify Records:
You can modify the records.
For example, I can change a student's name, a student's class or a student's grade.
You can also modify a number of this kind of records at the same time.
4. Querying Records:
You can query some students that meets a setting condition. For example, query the students whose grade is less than 60 in a given class.
You can also get the max grade, the average grade, the number of students who's grade is greater than 90.
5. Extended Functions:
You can extend the system with other functions (鼓励添加其他功能).
For example, you can use function functional programming. It means that you are supposed to use function pointers to role as filters to meet the requirements more easily. We have note functional programming in optional project 1.
For example:
## Other Requirements: ### Designing Style:
You can not defined useless or meaningless functions. And you can not put all project logic in one file(very bad) or put all logic in a main fuction(very very bad).
How to design good function prototypes and how to divide into several files is very important and this will be the most important part for grading.
Coding Style:
Coding style is very important for you. The style rules including google style are required.
What's more, you should have good comments with your code.
File Method:
Maybe you will us File IO operation, you can use your own data format. Json or CVS is recommended.
Report Template:
Abstract
Make a brief introduction for your project.
User Documentation
Statements about how to run the program. How to use this system.
Project Structure
Statements about your project structure, i.e. your function interfaces and file structure.
Design Thinking && Design Process
Statements about how you think about the project, i.e. how to divided the project(big question) into smaller questions.
Statements about your details of your project design, i.e. how to implement the structure of your system.
Important Algorithm and Data Structure
Some important algorithm and data structure you use should be mentioned. And draw flowchart or write Pseudo code for them.
Testing
Statements about how you test the system.
Conclusion
Personal summary about this project.
Persentation Week 13
We will ask some students to discuss about how to build a framework for the system on Dec 14th 2015.
Presentation Final
We will have a presentation time on January 4th 2016 in the lab class. There will be randomly selected students need to do the presentation.
Deadline:
Dec 31st 2015 18:00pay attention, one day ahead deadline
Dec 30th 2015 18:00Dec 30th 2015 21:00
And have a good time on new year's eve.
Submit
Submit to the course ftp
ftp://172.18.182.75
username:c_and_cpp
password:c_and_cpp
filename : 13331314_叶嘉祺_CourseProject.zip