This is a example designed after learning the static library. It realized some function of an educational administration system.
course_t csapp;class_t jk2002;void class_init(class_t* class, id_t classID, int num);class_t* class指向一个班级的指针id_t classID班级ID号,必须是四位正整型数int num班级人数,在区间[1, 50]
void course_init(course_t* course, id_t id, char* course_name, score_t credit, type_t type);course_t* course指向课程变量的指针id_t id课程ID号,正整型char* course_name课程名字,长度不超过14的字符串score_t credit学分,正整型,在区间[1,5],超出范围会被置为1type_t type类型,有两种:core——核心课,general——通识课
int class_import(class_t* class, char* file);class_t* class指向一个班级的指针char* file文件,有两种来源:文件名:从文件中读取NULL:从命令行输入
注意格式为
<学号> <姓名>学号为六位:
- 高四位班级ID
- 低两位流水号,从1开始,在班级人数范围内
例:
200201 as
200202 dc
200203 sd
200204 ss
200205 sh
将某一课程导入到某一班级,该班级所有成员均有该课程
int course_import(course_t* course, class_t* class);course_t* course指向课程的指针,需要被导入的课程class_t* class指向班级的指针,需要被导入的班级
将某一个班的某一的成绩
int grade_import(course_t* course, class_t* class, char* file);course_t* course指向课程的指针,需要被导入成绩的课程class_t* class指向班级的指针,需要被导入成绩的班级char* file文件名
文件格式
<学号> <成绩>- 学号格式同上
- 成绩为正整型数,在区间[0, 100]
例:
200201 75
200202 75
200203 100
200204 55
200205 60
包括学号和姓名
void class_info(class_t* class);包括总成绩和课程成绩
void stu_info(class_t *class, id_t id);class_t *class指向班级变量的指针,该学生所在班级id_t id学生学号
需要注意,学生成绩和排名都是动态变化的,受排序影响。需要刷新排名再查看才能看到最新排名,即调用_update族函数。否则会出现排名为0或者排名不对的情况。
刷新某一个班级某一门课程的排名
void course_rank_update(course_t* course, class_t* class)- course_t* course指向课程的指针,需要被分析的课程
- class_t* class指向班级的指针,需要被分析的班级
刷新某一个班级的学生总排名
void stu_rank_update(class_t* class, int mod)- class_t* class指向班级的指针,需要被分析的班级
- int mod排名方法,有如下几种方法可用(可以用 | 符),其它值无效
0总成绩算术平均CORE_AVE仅考虑核心课WEIGH_AVE采用加权平均
分析某一个班级某一个课程的成绩
void course_score_analyze(course_t* course, class_t* class, int mod)- course_t* course指向课程的指针,需要被分析的课程
- class_t* class指向班级的指针,需要被分析的班级
- int mod分析方法,有如下几种方法可用(可以用 | 符),其它值无效
AVE平均分PAS及格率SEG分段LIST排名表
在程序最后需要删除班级变量
void class_delete(class_t* class)- class_t* class指向需要被析构的班级变量的指针