程序设计报告
题目
学生成绩管理程序 (使用c,go,python语言开发)
代码及版本管理地址
gitee码云版本地址(点击跳转)
要求
本程序用于教学单位(院/系)的学生成绩管理。要求程序能够实现学生信息录入(可以实现增加、删除、修改学生的基本信息)、单科学习成绩的录入;班级内单科成绩排名;成绩查询:查询某个学生的各科成绩、统计所有不及格科目超过2科的学生名单。
设计思路
按照要求设计多种功能函数,并利用主函数实现功能,添加可视化操作提示。
数据结构
利用链式线性结构体Stu数据域存储学生信息,学生姓名、班级、年级、学生各科成绩为字符串型,学生编号为整型,指针域存储下一个指针地址。
流程图
功能及函数介绍
链表操作函数
(1)尾插法
void AddItem(Stu
*plist
) ;
(2)遍历结点
Stu
*NextItem(Stu
*plist
) ;
(3)链表初始化
Stu
*InitList(int num
);
(4)寻找结点
Stu
*SearchItem(int num
,Stu
*phead
);
功能函数
(1)输出所有学生信息
void ShowItem(Stu
*p_list
,Stu
*p_head
);
(2) 初始化程序
void InitSys(Stu
*p_head
);
(3) 保存文件(二进制)
void SaveFile(Stu
*p_head
);
(4) 学生总排名
int Sort(Stu
*p_head
,int n_ID
,int n_subject
) ;
(5)学生所在班级排名
int ClassSort(Stu
*p_head
,int n_ID
,int n_subject
) ;
(6)查找学生
void Search(Stu
*p_head
,char *name
);
(7)删除学生信息
void Del(Stu
*p_head
,int n_ID
);
(8)将字符串转为double型
double Strtodouble(char *str
) ;
(9)添加学生
void AddList(Stu
*p_head
) ;
(10)修改学生信息
void Change(Stu
*p_head
);
(11)统计所有不及格科目超过2科的学生名单
void NoPass(Stu
*p_head
);
(12)单科学习成绩的录入
void InputScore(Stu
*start
, Stu
*end
, Stu
*p_head
,char *subject
);
(13)保存文件(txt)
void Fprint(Stu
*p_head
);
(14)输出单个学生信息
void ShowItem(Stu
*p_list
,Stu
*p_head
) ;
(15)班级内单科成绩排名
void ClassSortOutput(Stu
*p_head
,char *str_class
,int subject
);
(16)插入学生
void Insert(Stu
*p_head
) ;
功能测试(c语言)
(1)存在数据文件时对数据读取并进入主菜单
(2)不存在数据时初始化系统
(3)学生菜单
(4)管理员菜单(需输入密匙)
(5)输出所有学生信息
(6)查找学生
(7)输出两门以上不及格学生名单
(8)输出班级单科排名
(9)添加学生
(10)删除学生
(11)修改学生信息
(12)单科成绩录入
(13)插入学生
(14)保存为txt
遇到的问题和异常处理方法
(1)对输入int型变量的控制:
if(scanf("%d",&num
)!=1)
{
printf("提示:你没有输入正确值,请重新输入:");
fflush(stdin);
}
能解决输入非int型变量时,程序崩溃问题
(2)对输入字符串的问题:
利用gets()函数输入,可以读入空格,防止缓冲区同时读入多个数据。
(3)
fflush(stdin);
读入int型等变量时会将换行符读入,利用这个函数可以将缓冲区换行符清除。Stdin指缓冲区
(4)对成绩判断问题:
while(Strtodouble(p_new
->m_nMath
) == -1)
{
printf("提示:您的输入有问题(成绩为0-100的整数),请重新输入:");
gets(p_new
->m_nMath
);
}
利用Strtodouble函数对成绩输入判断,如果错误则重新输入
(5)对指针的判断:
遇到指针为NULL时,设置返回值,防止异常
联系方式
QQ773323518