基于C语言的成绩管理系统

学生成绩管理系统是一个软件应用,主要用于学校、学院或其他教育机构存储、管理和报告学生的学习成绩。这种系统通常包括多种功能,以便教师、行政人员和学生家长能够高效地跟踪学生的学术表现。下面是一些核心功能和组成部分,以及如何构建这样一个系统的基本框架:

核心功能

  1. 学生信息管理

    • 注册和录入学生基本信息(如姓名、年级、班级等)。
    • 存储和更新学生的个人信息。
  2. 课程管理

    • 创建和维护课程列表,包括课程名称、教师、课时等。
    • 分配课程给不同的班级或学生。
  3. 成绩录入

    • 教师录入学生的考试成绩、作业分数、出勤情况等。
    • 支持不同类型的评分标准(百分制、等级制等)。
  4. 成绩统计与分析

    • 自动计算平均分、排名等统计信息。
    • 提供图表和报告,帮助理解学生的表现趋势。
  5. 查询与报告

    • 允许用户(教师、学生、家长)查询成绩记录。
    • 生成成绩单、进度报告和总结报告。
  6. 权限管理

    • 设置不同用户的访问权限,确保数据安全。
    • 控制谁可以修改或查看特定信息。
  7. 通信与通知

    • 发送成绩更新通知给学生和家长。
    • 提供在线消息系统,便于沟通。
  8. 历史记录与审计

    • 记录所有成绩变动的历史,方便追踪和审核。

C语言课程设计题目源程序: 成绩管理系统

系统要求: 包含三类用户,管理员,教师,学生
管理员功能:
(1)自身密码修改
(2)教师信息管理:添加,修改,查询,删除
(3)学生信息管理:添加,修改,查询,删除
(4)成绩信息管理:添加,修改,查询,删除
(5)课程信息管理:添加,修改,查询,删除
(6)授课信息管理:添加,修改,查询,删除
(7)退出登陆系统
教师功能:
(1)个人信息修改
(2)学生信息管理: 只能查看学生的信息
(3)成绩信息管理: 添加,修改,删除(只限该老师所授课程),查询(所有学生成绩)
(4)退出登陆系统
学生功能:
(1)个人信息修改
(2)成绩信息管理: 只能查询自己的成绩
(3)退出登陆系统

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ADMIN_USER_TYPE 1
#define TEACHER_USER_TYPE 2
#define STUDENT_USER_TYPE 3


#define FUNCTION_FAILED -1
#define FUNCTION_SUCCESS 0

/** 管理员身份信息表 **/
typedef struct AdminInfo {
	char adminName[20];					//管理员帐号,主键
	char password[20];					//管理员密码
	struct AdminInfo *next;				//指向下一个管理员信息
} AdminInfo;


/** 教师信息表  **/
typedef struct TeacherInfo {
	char teacherId[20];					//教工号,主键
	char teacherPassword[20];			//教师登陆密码
	char teacherName[20];				//教师姓名
	char teacherSex[4];					//教师性别
	char teacherBirthTime[15];			//教师生日
	char teacherAddress[50];			//教师居住地址
	struct TeacherInfo *next;			//指向下一个教师的信息
} TeacherInfo;


/** 学生信息 **/
typedef struct StudentInfo {
	char studentNumber[20];				//学号,主键
	char studentName[10];				//姓名
	char studentPassword[20];			//学生登陆密码
	char studentSex[4];					//学生性别
	char studentBirthTime[15];			//学生生日
	char studentAddress[50];			//学生居住地址
	struct StudentInfo *next;			//指向下一个学生的信息
} StudentInfo;


/** 课程信息 **/
typedef struct CourseInfo {
	int	courseId;						//课程编号,主键
	char courseName[20];				//课程名称
	char courseClassroom[20];			//上课所在教室
	char courseTime[20];				//上课时间
	struct CourseInfo *next;			//指向下一门课程的信息
} CourseInfo;

/** 授课信息 **/
typedef struct CourseTeachInfo {
	int	 courseId;						//课程编号
	char teacherId[20];					//教师编号
	struct CourseTeachInfo *next;		//指向下一条教师授课信息
} CourseTeachInfo;


/** 学生成绩信息 **/
typedef struct ScoreInfo {
	char studentNumber[20];				//学生学号
	int courseId;						//课程编号
	float score;						//课程成绩
	struct ScoreInfo *next;				//指向下一条成绩信息
} ScoreInfo;


static AdminInfo *pAdminInfoHead = NULL;				//指向系统管理员信息记录的头指针
static CourseInfo *pCourseInfoHead = NULL;				//指向课程信息记录的头指针
static CourseTeachInfo *pCourseTeachInfoHead = NULL;	//指向教师授课信息记录的头指针
static ScoreInfo *pScoreInfoHead = NULL;				//指向成绩记录信息的头指针
static StudentInfo *pStudentInfoHead = NULL;			//指向学生信息记录的头指针
static TeacherInfo *pTeacherInfoHead = NULL;			//指向教师信息记录的头指针

static char currentUserName[20];					/*保存登陆系统的当前帐号*/
static char currentUserType[20];					/*保存登陆系统的身份*/

void InitSystem();							/*初始化系统函数,向各种信息链表中加入测试数据*/
int AddAdminInfo(AdminInfo *);				/*向管理员信息链表中加入一条管理员信息*/
int AddOneCourseInfo(CourseInfo *);			/*向课程信息链表中加入一条课程信息*/
int AddOneTeacherInfo(TeacherInfo *);		/*向教师信息链表中加入一条教师信息*/
int AddOneStudentInfo(StudentInfo *);		/*向学生信息链表中加入一条学生信息*/
int AddOneCourseTeachInfo(CourseTeachInfo *);/*向授课信息链表中加入一条授课信息*/
int AddOneScoreInfo(ScoreInfo *);			/*向成绩链表中加入一条成绩信息*/
void GetStudentName(char *,char *);			/*得到某个学号的学生姓名*/
void GetCourseName(int,char *);				/*得到某门课程编号的名称*/
void GetTeacherName(char *,char *);			/*根据教师编号得到教师姓名*/
bool IsHavingStudentNumber(char *);			/*判断是否存在某个学号的学生信息*/
bool IsHavingCourseId(int );				/*判断是否存在某门课程的信息*/
bool IsHavingTeacherId(char *);				/*判断是否存在某个教师信息*/
bool CanTeacherOpeScore(int ,char *);		/*判断某个老师是否有添加某门课程成绩的权限*/
bool IsCourseInTeachInfo(int );				/*判断某门课程是否在授课信息中存在*/
bool IsCourseInScoreInfo(int );				/*判断某门课程是否在成绩信息中存在*/
void ShowWelcomeMenu();						/*显示系统欢迎菜单*/
int AdminLogin();							/*管理员身份登陆系统*/
int TeacherLogin();							/*教师身份登陆系统*/
int StudentLogin();							/*学生身份登陆系统*/
void SelectLoginType();						/*选择登陆系统的身份*/
void ShowAdminMenu();						/*显示管理员操作菜单*/
  void AdminPasswordModify();				/*管理员修改自己的密码*/
  void TeacherInfoManage();					/*教师信息管理*/
	void TeacherInfoView();					/*教师信息查看*/
	void TeacherInfoAdd();					/*教师信息添加*/
	void TeacherInfoModify();				/*教师信息修改*/
	void TeacherInfoDelete();				/*教师信息删除*/
  void StudentInfoManage();					/*学生信息管理*/
    /*学生信息查看功能同教师身份登陆时的学生信息查看一样*/
	void StudentInfoAdd();					/*学生信息添加*/
	void StudentInfoModify();				/*学生信息修改*/
	void StudentInfoDelete();				/*学生信息删除*/
  void Admin_ScoreInfoManage();				/*管理员对成绩信息管理*/
  	void ScoreInfoView();					/*成绩信息查看*/
	void ScoreInfoAdd();					/*成绩信息添加*/
	void ScoreInfoModify();					/*成绩信息修改*/
	void ScoreInfoDelete();					/*成绩信息删除*/
  void CourseInfoManage();					/*课程信息管理*/
  	void CourseInfoView();					/*课程信息查看*/
	void CourseInfoAdd();					/*课程信息添加*/
	void CourseInfoModify();				/*课程信息修改*/
	void CourseInfoDelete();				/*课程信息删除*/
  void CourseTeachInfoManage();				/*授课信息管理*/
	void CourseTeachInfoView();				/*授课信息查看*/
	void CourseTeachInfoAdd();				/*授课信息添加*/
	void CourseTeachInfoModify();			/*授课信息修改*/
	void CourseTeachInfoDelete();			/*授课信息删除*/
void ShowTeacherMenu();						/*显示教师身份操作菜单*/
  void TeacherSelfInfoModify();				/*教师信息修改*/
  void StudentInfoView();					/*学生信息查看*/
  void Teacher_ScoreInfoManage();			/*教师对成绩信息管理*/
	void ScoreInfoView();					/*成绩信息查看*/
	void ScoreInfoAdd();					/*成绩信息添加*/
	void ScoreInfoModify();					/*成绩信息修改*/
	void ScoreInfoDelete();					/*成绩信息删除*/
void ShowStudentMenu();						/*显示学生身份操作菜单*/
	void StudentSelfInfoModify();			/*学生个人信息修改*/
	void Student_ScoreInfoView();			/*学生本人成绩查询*/
void InitSystem() {				/*初始化系统函数,向各种信息链表中加入测试数据*/
	AdminInfo adminInfo;		/*初始化一个管理员信息*/
	strcpy(adminInfo.adminName,"admin");
	strcpy(adminInfo.password,"admin");
	adminInfo.next = NULL;
	AddAdminInfo(&adminInfo);	/*将这个管理员信息加入到管理员信息链表中*/

	CourseInfo courseInfo[3];	/*初始化三门课程信息*/
	strcpy(courseInfo[0].courseClassroom,"6A-101");
	strcpy(courseInfo[1].courseClassroom,"6A-102");
	strcpy(courseInfo[2].courseClassroom,"6A-103");
	strcpy(courseInfo[0].courseName,"计算机网络");
	strcpy(courseInfo[1].courseName,"毛泽东思想");
	strcpy(courseInfo[2].courseName,"C语言程序设计");
	strcpy(courseInfo[0].courseTime,"星期一上午一二节课");
	strcpy(courseInfo[1].courseTime,"星期五下午三四节课");
	strcpy(courseInfo[2].courseTime,"星期三晚上三节课");
	courseInfo[0].next = courseInfo[1].next = courseInfo[2].next = NULL;
	for(int i=0;i<3;i++) AddOneCourseInfo(&courseInfo[i]);

	TeacherInfo teacherInfo[3]; /*初始化三个教师信息*/
	strcpy(teacherInfo[0].teacherId,"TH001");
	strcpy(teacherInfo[1].teacherId,"TH002");
	strcpy(teacherInfo[2].teacherId,"TH003");
	strcpy(teacherInfo[0].teacherName,"汪老师");
	strcpy(teacherInfo[1].teacherName,"梁老师");
	strcpy(teacherInfo[2].teacherName,"李老师");
	strcpy(teacherInfo[0].teacherPassword,"TH001");
	strcpy(teacherInfo[1].teacherPassword,"TH002");
	strcpy(teacherInfo[2].teacherPassword,"TH003");
	strcpy(teacherInfo[0].teacherSex,"男");
	strcpy(teacherInfo[1].teacherSex,"女");
	strcpy(teacherInfo[2].teacherSex,"男");
	strcpy(teacherInfo[0].teacherBirthTime,"1975年3月12日");
	strcpy(teacherInfo[1].teacherBirthTime,"1980年7月5日");
	strcpy(teacherInfo[2].teacherBirthTime,"1978年1月17日");
	strcpy(teacherInfo[0].teacherAddress,"四川成都");
	strcpy(teacherInfo[1].teacherAddress,"湖南长沙");
	strcpy(teacherInfo[2].teacherAddress,"云南昆明");
	teacherInfo[0].next = teacherInfo[1].next = teacherInfo[2].next = NULL;
	for(i=0;i<3;i++) AddOneTeacherInfo(&teacherInfo[i]);

	StudentInfo studentInfo[3];	/*初始化三个学生信息*/
	strcpy(studentInfo[0].studentAddress,"湖北武汉");
	strcpy(studentInfo[1].studentAddress,"上海");
	strcpy(studentInfo[2].studentAddress,"四川达州");
	strcpy(studentInfo[0].studentBirthTime,"1987年3月18日");
	strcpy(studentInfo[1].studentBirthTime,"1989年9月19日");
	strcpy(studentInfo[2].studentBirthTime,"1988年6月15日");
	strcpy(studentInfo[0].studentName,"汪建林");
	strcpy(studentInfo[1].studentName,"张高铅");
	strcpy(studentInfo[2].studentName,"蒋介石");
	strcpy(studentInfo[0].studentNumber,"200305030317");
	strcpy(studentInfo[1].studentNumber,"200305030318");
	strcpy(studentInfo[2].studentNumber,"200305030320");
	strcpy(studentInfo[0].studentPassword,"1234");
	strcpy(studentInfo[1].studentPassword,"1234");
	strcpy(studentInfo[2].studentPassword,"1234");
	strcpy(studentInfo[0].studentSex,"男");
	strcpy(studentInfo[1].studentSex,"女");
	strcpy(studentInfo[2].studentSex,"男");
	studentInfo[0].next = studentInfo[1].next = studentInfo[2].next = NULL;
	for(i=0;i<3;i++) AddOneStudentInfo(&studentInfo[i]);

	CourseTeachInfo courseTeachInfo[3]; /*初始化三个教师授课信息*/
	courseTeachInfo[0].courseId = 1;
	courseTeachInfo[1].courseId = 2;
	courseTeachInfo[2].courseId = 3;
	strcpy(courseTeachInfo[0].teacherId,"TH001");
	strcpy(courseTeachInfo[1].teacherId,"TH002");
	strcpy(courseTeachInfo[2].teacherId,"TH003");
	courseTeachInfo[0].next = NULL;
	courseTeachInfo[1].next = NULL;
	courseTeachInfo[2].next = NULL;
	for(i=0;i<3;i++) AddOneCourseTeachInfo(&courseTeachInfo[i]);
}

客户端显示
在这里插入图片描述
源码在文章首部资源包内,下载即可使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹿屿二向箔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值