学生管理系统--第一次合作编写

前言

这是第一次合作完成的较大的项目, 运用所学的所有C语言知识,在Linux环境下进行学生管理系统的合作编程。

前期准备

分析系统结构、属性、功能

整体功能

学生能够登陆系统查询语文、数学、英语三科成绩,及三科的平均分、总分、排名。
教师能够管理学生、录入学生考试成绩。
管理员能够管理教师,超级管理员有且只有一个,只为管理普通管理员。
除超级管理员外,所有用户连续登陆三次帐号被锁定,需要上级用户才能解锁。
除超级管理员外,所有用户id要求有序且唯一。
除超级管理员外,所有用户登陆必须修改密码。

学生

属性功能
学号登陆显示学生信息
密码查看单科成绩排名
姓名查看总分成绩排名
性别修改登陆密码
年龄
语文
数学
平均
总分
排名

教师

属性功能
工号添加学生
密码删除学生
姓名修改学生基本信息
性别重置学生密码
年龄解锁学生账号
工龄查询学生基本信息
显示在读学生
显示退学学生
录入学生成绩
修改学生成绩
根据姓名学号查询成绩
按各科总分排序
修改密码

管理员

属性功能
账号添加教师
密码删除教师
修改教师基本信息
重置教师密码
解锁教师账号
查询教师基本信息
显示在职教师
显示离职教师
修改密码

超级管理员

属性功能
账号添加管理员
密码删除管理员
重置管理员密码
解锁管理员账号
显示管理员

定义结构体、函数

学生

typedef struct Student
{
	//学生信息包括:学号、密码、姓名、性别、年龄、语文、数学、英语、平均、总分、排名 
	char student_id[20];
	char student_password[20];
	char student_name[20];
	char student_sex;
	int student_age;
	float student_chinese;
	int student_chinese_seqencing;//chinese排名
	float student_math;
	int student_math_seqencing;//math排名
	float student_english;
	int student_english_seqencing;//english排名
	float student_sum;
	int student_sum_seqencing;//排名
	int student_enter_time;
	int enter_time;

}Student;
bool is_right_student ( char* ,char* );
bool is_time_student_right(char* );  
bool is_inschool_student(char* str1);
void student_system(char* );
void init_show(void );
void student_show_time(char* );
void change_password(char* str);
void first_change_password(char* str ,int* num );
void student_enter_password(char* user_id,char* user_password);

教师

typedef struct Teacher
{
	char id[20];
	char password[20];
	char name[20];
	char sex;
	int birthyear;
	int inyear;
	int lock;
	int del;
	int firstload;
}Teacher;
void test_teacher1(char *user_id);
void test_teacher2(char *user_id);
void teacher_choice_function_two(void);
void teacher_choice_function_three(void);
void exit_teacher(void);
void change_self_password(char *str);
void chinese_seqencing(void);
void math_seqencing(void);
void english_seqencing(void);
void sum_seqencing(void);
void student_chinese_seqencing_show(void);
void student_math_seqencing_show(void);
void student_english_seqencing_show(void);
void student_sum_seqencing_show(void);
int  teacher_choice_function_one(char *user_id);

管理员

typedef struct Manager
{
	char id[11];
	char password[11];
	int lock;
	int del;
	int firstload;
}Manager;
void chose_manager(char*);				//选择管理员功能
void add_teacher(void);					//添加教师
void del_teacher(void);					//删除教师
void change_teacher(void);				//修改教师基本信息
void reset_teacher(void);				//重置教师密码
void ulock_teacher(void);				//解锁教师帐号
void find_teacher(void);					//查询教师基本信息
void on_job(void);						//显示在职教师
void leave_job(void);					//显示离职教师
void change_manapass(char* );			//修改密码
void first_change_manapass(char* id);	//第一次修改密码

超级管理员

#define SUID "xxxx" 				//超级管理员ID
#define SUPASS "test" 			//超级管理员密码
void chose_sumanager(void);		//选择超级管理员功能
void add_manager(void);			//添加管理员
void del_manager(void);			//删除管理员
void reset_manager(void);		//重置管理员密码
void ulock_manager(void);		//解锁管理员帐号
void show_manager(void);			//显示所有管理员

中期编写

较难解决问题

  1. 输入的判定,字符串处理不当会影响储存的信息。
  2. 以文件形式储存数据。
  3. 未能在清理输入输出缓冲区的位置清理,造成输入与显示的问题。

后期整合

较难解决问题

  1. 共用功能的函数名未统一,造成合并处理麻烦。
  2. 没用版本控制工具代码整理麻烦。

结语

通过这次的合作编程,学习到了一些合作的方法,也发现了一些问题。对于程序编写前的准备,需要在开始前就把程序中需要的所有基础功能决定好,决定好文件名,结构体名,函数名,全局变量名,以免合并时产生不必要的麻烦。中期编写时,每经过一段时间或一个功能完成后,进行讨论,了解全员的进程。后期合并时,要留接口给上级的函数调用。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值