c语言程序——学生成绩成绩表
- 格式:doc
- 大小:43.50 KB
- 文档页数:7
C语言课程设计:学生成绩管理系统学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C 语言成绩,总分、平均分。
1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均语言成绩、总分、平均分。
系统的主要功能包括:然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。
2.增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排学序,并继续保存至原文件。
3.删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
(1) 按学号查询,输入一个学号,输出对应的学生信息。
(2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。
(3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。
(4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。
6. 按不同条件对学生成绩进行统计工作。
(1)按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。
(2) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。
(3) 分别找出3门课程成绩最高的学生,并输出他们的信息。
(4) 分别统计出3门课程的不及格率,并输出。
3.详细设计说明主要模块描述:1)调用菜单函数形成操作界面:根据提示序号选择操作程序2)学生成绩写入及排序:输入学生成绩,系统将根据录入信息对信息计算出平均分和总分并对学生信息进行排序,输出排序后的信息存入student.dat文件中3)增加学生信息:输入需增加学生的信息,系统将新增加的学生信息与原信息进行排序后存入原文件中4)删除学生信息:输入需删除学生的学号,将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
学生成绩管理系统代码(c语言编写)------------------------------------------作者------------------------------------------日期程序 学生管理系统✉ ☠☐♦♏✡☐◆❒ ♍♒☐♓♍♏ ♓♦ ✋☜ ✉✁♓⏹♍●◆♎♏ ✂♦♦♎♓☐♒✂✁♓⏹♍●◆♎♏ ✂♦♦♎●♓♌♒✂✁♓⏹♍●◆♎♏ ✂♦♦❒♓⏹♑♒✂♦⍓☐♏♎♏♐ ♦♦❒◆♍♦ ♦♦◆♎♏⏹♦ 定义学生♍♒♋❒ ⏹♋❍♏☯♓⏹♦ ⏹◆❍♌♏❒♍♒♋❒ ♦♏⌧☯♓⏹♦ ❍♋♦♒♓⏹♦ ♏♑●♓♦♒♓⏹♦ ♍●♋⏹♑◆♑♏♓⏹♦ ♋❖♏❒♋♑♏❝♦♦◆♎♏⏹♦♦⍓☐♏♎♏♐ ♦♦❒◆♍♦ ◆⏹♓♦ 定义接点♦♦◆♎♏⏹♦ ♎♋♦♏♦♦❒◆♍♦ ◆⏹♓♦ ✉⏹♏⌧♦❝◆⏹♓♦◆⏹♓♦✉ ♌◆♓●♎☎✆ 建立链表并返回指针◆⏹♓♦ ✉☐♓♐☎☎☐ ☎◆⏹♓♦✉✆❍♋●●☐♍☎♦♓♏☐♐☎◆⏹♓♦✆✆✆ ☠✞☹☹✆ ☐❒♓⏹♦♐☎✂初始化失败!✂✆❒♏♦◆❒⏹ ❝♏●♦♏☐ ⏹♏⌧♦ ☠✞☹☹☐ ♎♋♦♏ ⏹◆❍♌♏❒ 头结点存放学生人数☐❒♓⏹♦♐☎✂初始化成功! ⏹✂✆❒♏♦◆❒⏹ ☐❝❝❖☐♓♎ ♋♎♎☎◆⏹♓♦ ✉♒♏♋♎✆ 增加学生♓⏹♦ ❍⏹ ❑ ♒♏♋♎ ⏹♏⌧♦☐ ☎◆⏹♓♦✉✆❍♋●●☐♍☎♦♓♏☐♐☎◆⏹♓♦✆✆☐❒♓⏹♦♐☎✂请输入新生姓名! ⏹✂✆♑♏♦♦☎☐ ♎♋♦♏ ⏹♋❍♏✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐❒♓⏹♦♐☎✂请输入学号! ⏹✂✆♦♒♓●♏☎⏹ ✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆♓♐☎❑ ☠✞☹☹✆ ⏹ ♦♒♓●♏☎❑✆♓♐☎❑ ♎♋♦♏ ⏹◆❍♌♏❒ ❍✆☐❒♓⏹♦♐☎✂你输入的学号与已有同学的学号相同,请重新输入! ⏹✂✆❑ ♒♏♋♎ ⏹♏⌧♦♌❒♏♋❝♏●♦♏❑ ❑ ⏹♏⌧♦♓♐☎❑ ☠✞☹☹✆ ⏹ ❝❝❝☐ ♎♋♦♏ ⏹◆❍♌♏❒ ❍☐❒♓⏹♦♐☎✂请输入性别! ⏹✂✆♑♏♦♦☎☐ ♎♋♦♏ ♦♏⌧✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐❒♓⏹♦♐☎✂请输入数学成绩 ⏹✂✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐ ♎♋♦♏ ❍♋♦♒ ❍☐❒♓⏹♦♐☎✂请输入英语成绩 ⏹✂✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐ ♎♋♦♏ ♏♑●♓♦♒ ❍☐❒♓⏹♦♐☎✂请输入♍语言成绩 ⏹✂✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐ ♎♋♦♏ ♍●♋⏹♑◆♑♏ ❍☐ ♎♋♦♏ ♋❖♏❒♋♑♏ ☎☐ ♎♋♦♏ ❍♋♦♒ ☐ ♎♋♦♏ ♏♑●♓♦♒ ☐ ♎♋♦♏ ♍●♋⏹♑◆♑♏✆❑ ♒♏♋♎ ⏹♏⌧♦♒♏♋♎ ⏹♏⌧♦ ☐♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒ ❝❖☐♓♎ ♎♏●♏♦♓☐⏹☎◆⏹♓♦ ✉♒♏♋♎✆ 删除一名学生◆⏹♓♦ ✉☐ ♒♏♋♎ ⏹♏⌧♦✉❑ ♒♏♋♎♍♒♋❒ ☠☯☐❒♓⏹♦♐☎✂请输入你想删除的学生姓名! ⏹✂✆♑♏♦♦☎☠✆♐♐●◆♦♒☎♦♦♎♓⏹✆♓♐☎☐ ☠✞☹☹✆☐❒♓⏹♦♐☎✂系统无学生可删除! ⏹✂✆♦♒♓●♏☎☐✆♓♐☎♦♦❒♍❍☐☎☐ ♎♋♦♏ ⏹♋❍♏☠✆ ✆❑ ⏹♏⌧♦ ☐ ⏹♏⌧♦♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒ ☐❒♓⏹♦♐☎✂删除 ♦成功! ⏹✂ ☐ ♎♋♦♏ ⏹♋❍♏✆ ♐❒♏♏☎☐✆♌❒♏♋❝♏●♦♏☐ ☐ ⏹♏⌧♦❑ ❑ ⏹♏⌧♦♓♐☎☐ ☠✞☹☹✆☐❒♓⏹♦♐☎✂你要删除的学生不存在 删除失败! ⏹✂✆❝❝❝♓⏹♦ ♎♓♦☐●♋⍓☎◆⏹♓♦ ✉♒♏♋♎✆ 显示学生信息◆⏹♓♦ ✉☐ ♒♏♋♎ ⏹♏⌧♦♓⏹♦ ❍⏹ ♍♒♋❒ ☠☯♓♐☎☐ ☠✞☹☹✆☐❒♓⏹♦♐☎✂系统无学生! ⏹✂✆❒♏♦◆❒⏹ ❝♦♒♓●♏☎⏹ ✆☐❒♓⏹♦♐☎✂✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉⏹✂✆☐❒♓⏹♦♐☎✂请选择你的操作! ⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦显示所有 ♦按姓名查找⏹♦♦♦按学号查找 ♦返回主菜单 ⏹✂✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆♦♦♓♦♍♒☎❍✆♍♋♦♏ ☐❒♓⏹♦♐☎✂⏹该系统拥有 ♎名学生!⏹⏹✂ ♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒✆☐ ♒♏♋♎ ⏹♏⌧♦☐❒♓⏹♦♐☎✂♦姓名 ♦学号 ♦性别 ♦数学 ♦英语 ♦♍语言 ♦综合 ⏹⏹✂✆♦♒♓●♏☎☐✆☐❒♓⏹♦♐☎✂♦♦♦♎♦♦♦♎♦♎♦♎♦♎⏹✂ ☐ ♎♋♦♏ ⏹♋❍♏☐ ♎♋♦♏ ⏹◆❍♌♏❒☐ ♎♋♦♏ ♦♏⌧☐ ♎♋♦♏ ❍♋♦♒☐ ♎♋♦♏ ♏♑●♓♦♒☐ ♎♋♦♏ ♍●♋⏹♑◆♑♏☐ ♎♋♦♏ ♋❖♏❒♋♑♏✆☐ ☐ ⏹♏⌧♦❝♌❒♏♋♍♋♦♏ ☐❒♓⏹♦♐☎✂请输入查找姓名! ⏹✂✆♑♏♦♦☎☠✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐ ♒♏♋♎ ⏹♏⌧♦♦♒♓●♏☎☐✆♓♐☎♦♦❒♍❍☐☎☐ ♎♋♦♏ ⏹♋❍♏☠✆ ✆☐❒♓⏹♦♐☎✂♦姓名 ♦学号 ♦性别 ♦数学 ♦英语 ♦♍语言 ♦综合 ⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦♎♦♦♦♎♦♎♦♎♦♎⏹✂ ☐ ♎♋♦♏ ⏹♋❍♏☐ ♎♋♦♏ ⏹◆❍♌♏❒☐ ♎♋♦♏ ♦♏⌧☐ ♎♋♦♏ ❍♋♦♒☐ ♎♋♦♏ ♏♑●♓♦♒☐ ♎♋♦♏ ♍●♋⏹♑◆♑♏☐ ♎♋♦♏ ♋❖♏❒♋♑♏✆♌❒♏♋❝♏●♦♏☐ ☐ ⏹♏⌧♦♓♐☎☐ ☠✞☹☹✆☐❒♓⏹♦♐☎✂你要查的学生不存在!✂✆❝❝♌❒♏♋♍♋♦♏ ☐❒♓⏹♦♐☎✂请输入查找学号! ⏹✂✆♦♍♋⏹♐☎✂♎✂ ❍✆♐♐●◆♦♒☎♦♦♎♓⏹✆☐ ♒♏♋♎ ⏹♏⌧♦♦♒♓●♏☎☐✆♓♐☎☐ ♎♋♦♏ ⏹◆❍♌♏❒ ❍✆☐❒♓⏹♦♐☎✂♦姓名 ♦学号 ♦性别 ♦数学 ♦英语 ♦♍语言 ♦综合 ⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦♎♦♦♦♎♦♎♦♎♦♎⏹✂ ☐ ♎♋♦♏ ⏹♋❍♏☐ ♎♋♦♏ ⏹◆❍♌♏❒☐ ♎♋♦♏ ♦♏⌧☐ ♎♋♦♏ ❍♋♦♒☐ ♎♋♦♏ ♏♑●♓♦♒☐ ♎♋♦♏ ♍●♋⏹♑◆♑♏☐ ♎♋♦♏ ♋❖♏❒♋♑♏✆♌❒♏♋❝♏●♦♏☐ ☐ ⏹♏⌧♦♓♐☎☐ ☠✞☹☹✆☐❒♓⏹♦♐☎✂你要查的学生不存在! ⏹✂✆ ❝❝♌❒♏♋♍♋♦♏ ⏹ ♌❒♏♋❝❝❒♏♦◆❒⏹ ❝♓⏹♦ ❒♋⏹♑♏☎◆⏹♓♦ ✉♒♏♋♎✆ 排序◆⏹♓♦ ✉☐ ♒♏♋♎✉❑ ♒♏♋♎ ⏹♏⌧♦♓⏹♦ ⏹♓❍ ♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒☐❒♓⏹♦♐☎✂✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦按学号 ♦按成绩 ⏹⏹✂✆☐❒♓⏹♦♐☎✂请选择操作! ⏹》✂✆♦♍♋⏹♐☎✂♎✂ ⏹✆♐♐●◆♦♒☎♦♦♎♓⏹✆♓♐☎❑ ☠✞☹☹✆☐❒♓⏹♦♐☎✂无学生可排序! ⏹✂✆❒♏♦◆❒⏹ ❝♦♦♓♦♍♒☎⏹✆♍♋♦♏ ♐☐❒☎♓ ♓ ❍♓ ✆ 按总分排序☐ ♒♏♋♎❑ ♒♏♋♎ ⏹♏⌧♦♦♒♓●♏☎❑ ⏹♏⌧♦✆♓♐☎☎❑ ♎♋♦♏ ♋❖♏❒♋♑♏✆ ☎❑ ⏹♏⌧♦ ♎♋♦♏ ♋❖♏❒♋♑♏✆✆☐ ⏹♏⌧♦ ❑ ⏹♏⌧♦☐ ☐ ⏹♏⌧♦❑ ⏹♏⌧♦ ☐ ⏹♏⌧♦☐ ⏹♏⌧♦ ❑❝♏●♦♏☐ ☐ ⏹♏⌧♦❑ ❑ ⏹♏⌧♦❝❝❝♌❒♏♋♍♋♦♏ ♐☐❒☎♓ ♓ ❍♓ ✆ 按学号排序☐ ♒♏♋♎❑ ♒♏♋♎ ⏹♏⌧♦♦♒♓●♏☎❑ ⏹♏⌧♦✆♓♐☎☎❑ ♎♋♦♏ ⏹◆❍♌♏❒✆ ☎❑ ⏹♏⌧♦ ♎♋♦♏ ⏹◆❍♌♏❒✆✆☐ ⏹♏⌧♦ ❑ ⏹♏⌧♦☐ ☐ ⏹♏⌧♦❑ ⏹♏⌧♦ ☐ ⏹♏⌧♦☐ ⏹♏⌧♦ ❑❝♏●♦♏☐ ☐ ⏹♏⌧♦❑ ❑ ⏹♏⌧♦❝❝❝♌❒♏♋❝☐❒♓⏹♦♐☎✂排序成功! ⏹✂✆❒♏♦◆❒⏹ ❝❖☐♓♎ ❍♏⏹◆☎✆☐❒♓⏹♦♐☎✂⏹✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉ 主菜单✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦新建系统 ♦添加学生 ⏹♦♦♦删除学生 ♦查看信息 ⏹♦♦♦排列顺序 ♦读取信息 ⏹♦♦♦保存信息 ♦退出系统 ⏹✂✆☐❒♓⏹♦♐☎✂请选择你的操作! ⏹✂✆❝♓⏹♦ ♦♋❖♏☎◆⏹♓♦ ✉♒♏♋♎✆ 保存☞✋☹☜ ✉♐☐◆⏹♓♦ ✉☐☐ ♒♏♋♎♓♐☎☎♐☐ ♐☐☐♏⏹☎✂♎学生✂ ✂♦♌✂✆✆ ☠✞☹☹✆❒♏♦◆❒⏹ ❝♦♒♓●♏☎☐✆♐♦❒♓♦♏☎ ☎☐ ♎♋♦♏✆♦♓♏☐♐☎♦♦◆♎♏⏹♦✆♐☐✆ ☐ ☐ ⏹♏⌧♦❝☐❒♓⏹♦♐☎✂保存成功!✂✆♐♍●☐♦♏☎♐☐✆❒♏♦◆❒⏹ ❝◆⏹♓♦✉ ❒♏♋♎☎✆ 读入系统学生信息♓⏹♦ ♓◆⏹♓♦ ✉☐✉❑✉♒♏♋♎☞✋☹☜ ✉♐☐♓♐☎☎♒♏♋♎ ☎◆⏹♓♦✉✆❍♋●●☐♍☎♦♓♏☐♐☎◆⏹♓♦✆✆✆ ☠✞☹☹✆ ☐❒♓⏹♦♐☎✂开辟空间失败!✂✆♏⌧♓♦☎✆❝♏●♦♏♒♏♋♎ ⏹♏⌧♦ ☠✞☹☹♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒ 头结点存放学生人数❝❑ ♒♏♋♎♓♐☎☎♐☐ ♐☐☐♏⏹☎✂♎学生✂ ✂❒♌✂✆✆ ☠✞☹☹✆☐❒♓⏹♦♐☎✂系统无学生! ⏹✂✆❒♏♦◆❒⏹ ❝♐❒♏♋♎☎ ☎❑ ♎♋♦♏✆♦♓♏☐♐☎♦♦◆♎♏⏹♦✆♐☐✆♐☐❒☎♓ ♓ ♒♏♋♎ ♎♋♦♏ ⏹◆❍♌♏❒♓ ✆♓♐☎☎☐ ☎◆⏹♓♦✉✆❍♋●●☐♍☎♦♓♏☐♐☎◆⏹♓♦✆✆✆ ☠✞☹☹✆☐❒♓⏹♦♐☎✂读值失败!✂✆♏⌧♓♦☎✆❝♐❒♏♋♎☎ ☎☐ ♎♋♦♏✆♦♓♏☐♐☎♦♦◆♎♏⏹♦✆♐☐✆☐ ⏹♏⌧♦ ❑ ⏹♏⌧♦❑ ⏹♏⌧♦ ☐❝♐♍●☐♦♏☎♐☐✆❒♏♦◆❒⏹ ♒♏♋♎❖☐♓♎ ❍♋♓⏹☎✆♓⏹♦ ❍ ⏹ ♓◆⏹♓♦ ✉♒♏♋♎☐❒♓⏹♦♐☎✂✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉✉⏹⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦✉ 欢迎使用学生成绩管理系统 ✉ ⏹✂✆☐❒♓⏹♦♐☎✂⏹♦♦♦♦♦♦♦♦编译员:岳英明 ⏹⏹✂✆☐❒♓⏹♦♐☎✂正在读取系统信息 ⏹✂✆♓♐☎☎♒♏♋♎ ❒♏♋♎☎✆✆ ✆☐❒♓⏹♦♐☎✂是否新建? ⏹✂✆☐❒♓⏹♦♐☎✂♦♦♦是( ) ♦♦否( ) ⏹✂✆♦♍♋⏹♐☎✂♎✂ ♓✆♐♐●◆♦♒☎♦♦♎♓⏹✆♓♐☎♓ ✆♒♏♋♎ ♌◆♓●♎☎✆♏●♦♏ ♓♐☎♓ ✆♏⌧♓♦☎✆❝♏●♦♏☐❒♓⏹♦♐☎✂信息导入成功!✂✆♦♒♓●♏☎❍ ✆❍♏⏹◆☎✆♦♍♋⏹♐☎✂♎✂ ⏹✆♐♐●◆♦♒☎♦♦♎♓⏹✆♦♦♓♦♍♒☎⏹✆♍♋♦♏ ♒♏♋♎ ♌◆♓●♎☎✆♌❒♏♋♍♋♦♏ ♋♎♎☎♒♏♋♎✆♌❒♏♋♍♋♦♏ ♎♏●♏♦♓☐⏹☎♒♏♋♎✆♌❒♏♋♍♋♦♏ ♎♓♦☐●♋⍓☎♒♏♋♎✆♌❒♏♋♍♋♦♏ ❒♋⏹♑♏☎♒♏♋♎✆♌❒♏♋♍♋♦♏ ♒♏♋♎ ❒♏♋♎☎✆♓♐☎♒♏♋♎✐ ✆ ☐❒♓⏹♦♐☎✂读取存盘成功! ⏹✂✆♌❒♏♋♍♋♦♏ ♦♋❖♏☎♒♏♋♎✆♌❒♏♋♍♋♦♏ ❍ ♌❒♏♋❝❝❝。
C语言学生成绩管理系统#include <stdlib.h>#include 〈stdio.h〉#include <string。
h〉#define MAXN 35#define MAX_NAME 256typedef struct student //学生信息{int no;char name[MAX_NAME];double english;double math;double Programming;double mark_ave;double mark_tot;} STUDENT;/*-----—-—---输入信息子程序—----—-——*/void input(STUDENT *data, int *len){int no;putchar(’\n’);printf(”%s\n”,"请输入新的记录,如果需要退出当前菜单请输入0.”);printf(”%s\n”, "格式:\n学号\n");printf(”%s\n",”姓名英语数学C语言");putchar('\n');scanf(”%d”,&no);while(no != 0) {data[*len]。
no = no;scanf(”%s %lf %lf %lf",data[*len].name,&data[*len].english,&data[*len].math,&data[*len]。
Programming);data[*len]。
mark_ave=(data[*len].english+data[*len]。
math+data[*len].Programming)/3.0;data[*len].mark_tot=data[*len].english+data[*len]。
math+data[*len]。
Programming;(*len)++;scanf(”%d”, &no);}}/*--—----——-—————输出信息子程序--—-——----——--—*/void output(STUDENT *data, int len){int i;system(”cls”);printf("%8s”, "学号”);printf("%8s”, "姓名");printf("%8s", "英语");printf("%8s", "数学");printf(”%10s”, ”C语言");printf("%12s”, "平均分”);printf("%10s",”总分");putchar(’\n');for (i =0;i 〈80;i++)putchar(’=');putchar(’\n');for (i = 0; i〈len;i++){printf(”%8d”, data[i].no);printf("%8s",data[i].name);printf(”%8。
C程序学生管理系统/* Note:Your choice is C IDE */#include"stdio。
h"#include ”stdlib。
h”#include "string。
h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf(”=>初始化失败!”);return 0;}else{p—〉next=NULL;p->date。
number=0;//头结点存放学生人数 printf(”初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head—〉next;p=(unit*)malloc(sizeof(unit));printf(”=〉请输入新生姓名!\n");gets(p->);fflush(stdin);printf(”=〉请输入学号!\n");while(n==0){scanf(”%d”,&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q—〉date。
number==m){printf(”=〉你输入的学号与已有同学的学号相同,请重新输入!\n");q=head—>next;break;}else{q=q—>next;if(q==NULL) n=1;}}}p—>date.number=m;printf(”=>请输入性别!\n”);gets(p-〉date。
功能:查询修改统计成绩。
#include <stdio.h>struct student /*成绩表的结构声明*/{int num;char name[15];char sex;float WuLi;float ShuXue;float YingYu;float KuaiJi;float totle;};/*定义6个学生的信息:*/#define STU_NUMBER 6 /*宏定义学生数为6*/struct student Stu[STU_NUMBER]={{101,"yuchen", 'F', 98,85,96,89,0},{102,"xiaotong", 'F', 99,91,90,93,0},{103,"likanglong",'M', 76,83,74,82,0},{104,"yinger", 'F', 88,76,89,77,0},{105,"fengjiao", 'F', 97,100,94,96,0},{106,"sunyao", 'M', 87,89,66,84,0} };int SelectMainMenu(); /*显示并选择主菜单。
返回:被选择的菜单项*//*所有的函数声明:*/void Show(); /*成绩查询模块*/void Modify(); /*成绩修改模块*/void Stat(); /*成绩统计模块*/void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float *AveKuaiJi);/*统计平均分*/int FindStudent(int num); /*根据学号查找某一学生*/void SetAllTotle(); /*计算所有学生总分*/void SetTotle(int No); /*计算第No个学生总分*/void ShowAllStudent(); /*显示所有成绩*/void ShowTitle(); /*显示表头信息*/void ShowStudent(int No); /*显示第No个的学生信息*/void main(){int isend=0,password=0; /*程序结束标志量,0表示不结束,1表示结束*/SetAllTotle(); /*计算所有学生总分*/while(password!=666){printf("qing shu ru mi ma:\n");scanf("%d",&password);}{switch(SelectMainMenu()) /*显示并选择主菜单*/{case 1: /*成绩查询*/Show(); /*调用成绩查询函数*/break;case 2: /*成绩修改*/Modify(); /*调用成绩修改函数*/break;case 3: /*成绩统计*/Stat(); /*调用成绩统计函数*/break;case 4: /*退出系统*/printf("\nxie xie nin de shi yong,zai jian!\n\n");isend = 1; /*设置程序结束标志*/break;}if(isend) break; /*程序结束*/}}int SelectMainMenu() /*显示并选择主菜单。
C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p>next=NULL;p>date.number=0;//头结点存放学生人数 printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head>next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p>);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q>date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head>next;break;}else{q=q>next;if(q==NULL) n=1;}}}p>date.number=m;printf("=>请输入性别!\n");gets(p>date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p>date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p>date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p>date.clanguge=m;p>date.average=(p>date.math+p>date.eglish+p>d ate.clanguge);q=head>next;head>next=p;p>next=q;head>date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head>next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p>,N)==0){q>next=p>next;head>date.number;printf("=>删除%s成功!\n",p>);free(p);break;}else{p=p>next;q=q>next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head>next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("************************************************ ******************************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head>date.number);p=head>next;printf("\t姓名\t学号\t性别\t数学\t 英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p >,p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average);p=p>next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head>next;while(p){if(strcmp(p>,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p >,p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average); break;}else{p=p>next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head>next;while(p){if(p>date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p >,p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average); break;}else{p=p>next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head>next;int n,i,m=head>date.number;printf("************************************************ *******************************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head>next;while(q>next){if((q>date.average)<(q>next>date.average)){p>next=q>next;p=p>next;q>next=p>next;p>next=q;}else{p=p>next;q=q>next; }}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head>next;while(q>next){if((q>date.number)>(q>next>date.number)){p>next=q>next;p=p>next;q>next=p>next;p>next=q;}else{p=p>next;q=q>next; }}}break;printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;while(p){fwrite(&(p>date),sizeof(student),1,fp);p=p>next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>开辟空间失败!");exit(1);}else{head>next=NULL;head>date.number=0;//头结点存放学生人数q=head;if((fp=fopen("d:\\学生","rb"))==NULL) {printf("=>系统无学生!\n");return 0;}fread(&(q>date),sizeof(student),1,fp); for(i=0;i<head>date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>读值失败!");exit(1);}fread(&(p>date),sizeof(student),1,fp); p>next=q>next;q>next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("***************************************************** ***************************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();elseif(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
C语言程序设计课程设计大作业-学生成绩管理系统计算机科学学院计算机科学与应用系C程序设计报告成绩管理系统设计学生姓名:* *学号:1004681082班级:计科102指导老师:* *报告日期:2011--02--161.题目与要求1)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。
2)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3)功能要求(1)建立学生信息,每个学生的信息包括:学号、姓名、成绩。
(2)求出每个学生的总分和平均分。
(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。
(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。
(5)根据需要修改学生的基本信息。
(6)根据实际情况删除某生的信息。
(7)根据实际情况插入某生的信息。
(8)输出。
2.功能设计1)算法设计(1)利用switch语句设计如图所示的主菜单。
请输入选项编号1——查找2——排序3——学生信息的修改4——链表的删除5——链表的插入6——链表的输出7——退出图1 学生信息管理系统主菜单(2)选择1后,调用查找函数search,进入查找函数后利用switch语句实现如图所示的查找子菜单。
该菜单中每个选项调用一个函数(除选项10外)。
查找菜单请输入选项编号1——按学号查找2——按姓名查找3——按C语言分数查找4——按高数分数查找5——按英语分数查找6——按总分查找7——按平均分查找8——总分前三名9——不及格者10——班级成绩情况11——退出图2 查找子菜单(3)选项2后,调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。
该菜单中每个每个选项调用一个函数(除3外)。
排序菜单输入选项编号1——按学号排序2——按总分排序3——退出图3 排序子菜单(4)选择3后,调用修改函数correct,修改某个学生的信息。
(5)选择4后,调用删除函数del,根据需要删除某个学生的信息。
C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数 printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p->);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head->next;break;}else{q=q->next;if(q==NULL) n=1;}}p->date.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("************************************************** ****************************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){p rintf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)p rintf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){p rintf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)p rintf("=>你要查的学生不存在!\n"); }}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("************************************************** *****************************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)) {p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next; }}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)) {p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next; }}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp); for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp); p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("******************************************************* *************************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();elseif(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{int term; //学期char num[10]; //保存学号char name[20]; //保存姓名int cgrade; //保存C语言成绩int mgrade; //保存数学成绩int egrade; //保存英语成绩int sum; //总分float average;//平均分}Student;Student score[1000]; /*结构体数组变量*/int menu_select() /*菜单函数*/{int c;do{system("cls"); //运行前清屏printf("\t\t★★★★★★学生成绩管理系统★★★★★★\n"); //菜单选择printf("\t\t§1. 输入学生信息及数据§\n");printf("\t\t§2. 输出学生信息及数据§\n");printf("\t\t§3. 按姓名、学号及学期查找学生信息§\n");printf("\t\t§4. 按姓名、学号及学期修改学生信息§\n");printf("\t\t§5. 插入学生信息§\n");printf("\t\t§6. 按学号及学期删除信息§\n");printf("\t\t§7. 按单科降序(选择)排序§\n");printf("\t\t§8. 按总分降序(选择)排序§\n");printf("\t\t§9. 统计各科总分和平均分信息§\n");printf("\t\t§10.内存数据写入磁盘中§\n");printf("\t\t§11.磁盘中数据读入内存§\n");printf("\t\t§0. 结束程序§\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t 请选择您要运行的选项按(0-11):");scanf("%d",&c); //读入选择}while(c<0||c>11);return(c); //返回选择}int Input(Student grade[],int n) /*输入学生信息及数据*/{int i=0;char sign;do{printf("\t\t 学期:"); /*交互输入*/scanf("\t\t%d",&grade[n+i].term);printf("\t\t 学号:");scanf("\t\t%s",grade[n+i].num);printf("\t\t 姓名:");scanf("\t\t%s",grade[n+i].name);printf("\t\t C语言成绩:");scanf("\t\t%d",&grade[n+i].cgrade);printf("\t\t 数学成绩:");scanf("\t\t%d",&grade[n+i].mgrade);printf("\t\t 英语成绩:");scanf("\t\t%d",&grade[n+i].egrade);printf("\t\t 是否继续输入?(Y/N)");scanf("\t\t%s",&sign); /*输入判断*/i++;if(sign=='N' || sign=='n') break;}while(sign=='Y' || sign=='y'); /*判断*/return (n+i);}void Disp(Student grade[],int n) /*输出学生信息及数据*/{int i=0;printf("\t\t--------------------------------------------------\n");printf("\t\t 学期学号姓名c语言成绩数学成绩英语成绩\n");printf("\t\t--------------------------------------------------\n");for(i=0;i<n;++i) /*循环输入*/{printf("%20d %s %s %d %d %d\n",grade[i].term,grade[i].num,grade[i].name,grade[i].cgrade,grade[i].mgrade,grade[i].egrade);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t--------------------------------------------------\n");printf("\t\t");system("pause");printf("\t\t--------------------------------------------------\n");}}printf("\t\t");system("pause");}void Qur_info(Student grade[],int n) //按姓名、学号及学期查找学生信息{char name[20];char num[20];int term;int i=0;printf("\t\t 输入他(她)的姓名:");scanf("\t\t%s",&name);printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].name,name)==0&&strcmp(grade[i].num,num)==0&&grade[i].term==term){printf("\t\t 他(她)的C语言成绩:%d\n",grade[i].cgrade);printf("\t\t 他(她)的数学语言成绩:%d\n",grade[i].mgrade);printf("\t\t 他(她)的英语语言成绩:%d\n",grade[i].egrade);return;}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return;}}}void Modify_info(Student grade[],int n) //按姓名、学号及学期修改学生信息{char name[20];char num[20];int term;int i=0;printf("\t\t 输入他(她)的姓名:");scanf("\t\t%s",&name);printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].name,name)==0&&strcmp(grade[i].num,num)==0&&grade[i].term==term){printf("\t\t 请输入修改的C语言成绩:");scanf("\t\t%d",&grade[i].cgrade);printf("\t\t 请输入修改的数学成绩:");scanf("\t\t%d",&grade[i].mgrade);printf("\t\t 请输入修改的英语成绩:");scanf("\t\t%d",&grade[i].egrade);return;}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return;}}}int Insert(Student grade[],int n) //插入学生信息{printf("\t\t 学期:");scanf("\t\t%d",&grade[n].term);printf("\t\t 学号:");scanf("\t\t%s",grade[n].num);printf("\t\t 姓名:");scanf("\t\t%s",grade[n].name);printf("\t\t C语成绩:");scanf("\t\t%d",&grade[n].cgrade);printf("\t\t 数学语成绩:");scanf("\t\t%d",&grade[n].mgrade);printf("\t\t 英语成绩:");scanf("\t\t%d",&grade[n].egrade);n++;printf("\t\t 插入记录成功!\n");return n;}int Del_info(Student grade[],int n) //按学号及学期删除信息{char num[20];int term;int i=0;printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].num,num)==0&&grade[i].term==term){grade[i].term = grade[i+1].term;strcpy(grade[i].num,grade[i+1].num);strcpy(grade[i].name,grade[i+1].name);grade[i].cgrade = grade[i+1].cgrade;grade[i].mgrade = grade[i+1].mgrade;grade[i].egrade = grade[i+1].egrade;printf("\t\t 删除记录成功!\n");return(n-1);}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return(n);}}}int compareCgrade(const void* a, const void* b) //C语降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->cgrade > s2->cgrade){return 1;}else{return 0;}}int compareMgrade(const void* a, const void* b) //数学降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->mgrade > s2->mgrade)return 1;}else{return 0;}}int compareEgrade(const void* a, const void* b) //英语降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->egrade > s2->egrade){return 1;}else{return 0;}}int compareTotal(const void* a, const void* b) //总分降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;int total1 = s1->cgrade+s1->egrade+s1->mgrade;int total2 = s2->cgrade+s2->egrade+s2->mgrade;if (total1 > total2){return 1;}else{return 0;}}void Sort(Student grade[],int n, int choice) //选择排序的科目{if (choice == 1)qsort(grade, n, sizeof(grade[0]), compareCgrade);}else if(choice == 2){qsort(grade, n, sizeof(grade[0]), compareMgrade);}else if(choice == 3){qsort(grade, n ,sizeof(grade[0]), compareEgrade);}else{printf("选择无效\n");}}void Sort_sub(Student grade[],int n) //按单科降序(选择)排序{int choice = 0;printf("选择排序科目\n");printf("1-C语言,2-数学,3-英语\n");scanf("%d", &choice);Sort(grade, n, choice);}void Sort_sum(Student grade[],int n) //按总分降序排序{qsort(grade, n ,sizeof(grade[0]), compareTotal);}void Average(Student grade[],int n) //统计各科总分和平均分信息{int csum = 0;int msum = 0;int esum = 0;int sum = 0;int i;float aver = 0;for(i=0;i<n;i++){csum=csum+grade[i].cgrade;msum=msum+grade[i].mgrade;esum=esum+grade[i].egrade;}sum=csum + msum + esum;aver=(float)sum/3;printf("\n");printf("\t\t C语言总分是:%d\n",csum);printf("\t\t 数学总分是:%d\n",msum);printf("\t\t 英语总分是:%d\n",esum);printf("\t\t 平均分是:%3.1f\n",aver);}void Save(Student grade[],int n) //内存数据写入磁盘中{int i=0;FILE *fp; /*定义文件指针*/if((fp=fopen("mydata.txt","w"))==NULL) /*打开文件*/{printf("\t\t 无法打开该文件\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-10d%-20s%-10s%-10d%-10d%-10d\n",grade[i].term,grade[i].num,grade[i].na me,grade[i].cgrade,grade[i].mgrade,grade[i].egrade);i++;}fclose(fp); /*关闭文件*/printf("写入成功!\n"); /*返回成功信息*/}int Read(Student grade[],int n) //磁盘中数据读入内存{int i=0,num;FILE *fp; /*定义文件指针*/if((fp=fopen("mydata.txt","rb"))==NULL) /*打开文件*/{printf("\t\t 无法打开该文件\n"); /*打开失败信息*/printf("\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%d%s%s%d%d%d",&grade[n+i].term,grade[n+i].num,grade[n+i].name,&grade[n+i].cgrade,&grade[n+i].mgrade,&grade[n+i].egrade);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t 读入成功!\n");return(n);}int main() /*主函数*/{int n=0;while(1){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t 输入记录\n"); /*输入若干条记录*/n=Input(score,n);break;case 2:printf("\t\t 显示记录\n"); /*显示所有记录*/Disp(score,n);break;case 3:printf("\t\t 查找并显示一个记录\n"); /*查找学生信息*/Qur_info(score,n);printf("\t\t");system("pause");break;case 4:printf("\t\t 查找并修改一个记录\n"); /*修改学生信息*/Modify_info(score,n);printf("\t\t");system("pause");break;case 5:printf("\t\t 插入一条记录\n"); /*插入一条记录*/n=Insert(score,n);printf("\t\t");break;case 6:printf("\t\t 按学号及姓名找,删除一条记录\n"); /*按学号及学期删除信息*/ n=Del_info(score,n);printf("\t\t");system("pause");break;case 7:printf("\t\t 按单科排序并显示\n"); /*按单科降序(选择)排序*/Sort_sub(score,n);printf("\t\t\t 排序成功!\n");Disp(score,n);printf("\t\t");break;case 8:printf("\t\t 按总分排序并显示\n"); /*按总分降序排序*/Sort_sum(score,n);printf("\t\t\t 排序成功!\n");Disp(score,n);printf("\t\t");break;case 9:printf("\t\t各科总分和平均分信息"); /*统计各科总分和平均分信息*/ Average(score,n);system("pause");break;case 10:printf("\t\t 循环写入数据\n"); /*循环写入数据*/Save(score,n);printf("\t\t");system("pause");break;case 11:printf("\t\t 从文件中读入数据\n"); /*从文件中读入数据*/n=Read(score,n);printf("\t\t");学习-----好资料system("pause");break;case 0:printf("\t\t 谢谢使用,祝您好运,再见!\n"); /*结束程序*/printf("\t\t");system("pause");exit(0);return 0;}}}更多精品文档。