学生成绩管理系统实验报告(附C语言源码).doc_第1页
学生成绩管理系统实验报告(附C语言源码).doc_第2页
学生成绩管理系统实验报告(附C语言源码).doc_第3页
学生成绩管理系统实验报告(附C语言源码).doc_第4页
学生成绩管理系统实验报告(附C语言源码).doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计训练 报 告 附源码 题 目 学生成绩管理系统 学生姓名 学生学号 专业班级 指导老师 2012 年 7 月 目 录 一 设计目的要求一 设计目的要求 1 二 设计功能简介二 设计功能简介 1 三 本人工作三 本人工作 2 四 详细设计方案四 详细设计方案 2 1 1 需求分析需求分析 2 2 2 模块详细设计模块详细设计 2 1 1 模块功能模块功能 2 2 2 定义函数功能说明 定义函数功能说明 4 3 3 模块算法流程图 模块算法流程图 6 3 3 核心模块源程序核心模块源程序 10 4 4 实验结果实验结果 16 五 使用说明五 使用说明 21 六 程序设计心得体会六 程序设计心得体会 21 七 附录七 附录 22 附录附录 1 1 参考文献参考文献 22 附录附录 2 2 主要变量及自定义函数 主要变量及自定义函数 说明说明 22 附录附录 3 3 源程序代码 源程序代码 22 一 设计目的要求一 设计目的要求 通过通过 C C 语言程序设计这门课程 我想 我们应该达到的目的语言程序设计这门课程 我想 我们应该达到的目的 与要求应该有以下内容 与要求应该有以下内容 1 在编辑应用程序过程中 逐步加深对 C 语言编程的理解 掌握结构化程序设计的基本思路和方法 2 加强实践的能力 动手能力 同时进一步对所学的知识进 行巩固 为以后的学习奠定基础 3 增强学生我们利用自己所学知识解决实际问题的能力 4 掌握书写程序设计说明文档的能力 二 设计功能简介二 设计功能简介 本程序针对登录系统的不同身份 有管理员 学生两个身份 本程序针对登录系统的不同身份 有管理员 学生两个身份 有不同的功能 管理员的功能有以下几个 有不同的功能 管理员的功能有以下几个 1 管理用户 其中包括浏览用户 增添用户 修改用户 删 除用户四个功能 2 管理成绩 其中包括浏览成绩 增添成绩 修改成绩 删 除成绩 成绩排序五个功能 3 个人密码修改 学生的功能有 学生的功能有 1 查看成绩 其中可直接查看各科成绩 也可查看单科 总 分成绩的排名 2 查看个人信息 3 修改个人密码 三 本人工作三 本人工作 虽然编程本身是一件辛苦的事 但作为一个爱好电脑学科的 我来说 并不在意 我在这个系统上 花了两天时间 为了这个 系统 我反复查资料 调试 纠错 最终完成了这整个系统 四 详细设计方案四 详细设计方案 1 1 需求分析需求分析 为了管理员能方便了解 管理班上学生的成绩与其他信息 也 同时为了学生能够自主查询自己的成绩的具体情况与其他信息且 不能查看别人的私密信息 设计了这个学生成绩管理系统 此系 统能对相关信息进行录入 查询 显示 修改并保存在 user dat 和 score dat 这两个文件里 2 2 模块详细设计模块详细设计 1 1 模块功能模块功能 管理员 管理员 浏览成绩 SurfScore 可以浏览已经录入系统的所有成绩 增添成绩 AddScore 可以添加学生的成绩 修改成绩 ReviseScore 对已录入系统的成绩进行修改 删除成绩 DelSocre 通过提供姓名和 ID 号 删除对应成 绩 排名 OutPut 管理员可以选择科目 对相应成绩进 行排序 用冒泡排序法实现 也输出对应科目的没及 格人数和及格率 浏览用户 SurfUser 浏览所有的用户信息 增添用户 AddUser 增添用户信息 并提供以后用户 登录依据 每个用户拥有唯一的 ID 号 修改用户 ReviseUser 管理员可以通过此功能修改 任何用户的资料 包括密码 登录登录 管理员学生 管理用户管理成绩修改密码查看成绩查看个人信息修改个人密码 浏览成绩 增添成绩 修改成绩 删除成绩 浏览用户 增添用户 修改用户 删除用户 直接查看 成绩排名 删除用户 DeleteUser 通过姓名和唯一 ID 号 删除 对应用户资料 密码修改 ReviseSecre 管理员仅可以修改自己的登 录密码 学生 学生 查看成绩 ChaScore 学生只能查看各科成绩 不能查看 名次 成绩排名 OutPut 学生只能在此查看自己的成绩 和对 应科目的排名 查看个人信息 ChaInfo 学生只能查看自己的个人信息 修改个人密码 ReviseSecre 这和管理员用的同一函数 只能修改自己的密码 2 2 定义函数功能说明 定义函数功能说明 结构体说明 结构体说明 struct userinfo char id 5 学生的学号 或教职工的工号 char name 10 姓名 char secre 7 密码 char sex 1 性别 int flag 权限标识 1 为管理员 2 为学生 char year 5 注册时间 user struct score char name 10 char id 5 int scor 5 保存 5 单科成绩 float ave 平均分 int all 5 单科成绩总分 全局变量说明 全局变量说明 int cho 用于用户在各个界面的选项 struct user info g user 在各个函数中 根据登陆者的 信息 实现某些功能输出一些信息 在结构体 struct user info 中也定义了全局变量 user 自定义函数 变量说明自定义函数 变量说明 身份自定义函数功能说明变量 Welcome 清屏 界面欢迎条 Delay 暂停 Login 登录 ChuShiHua 第一次运行判断文件存在性 调用增添用户模块 PaiXu 为 OutPut 提供排序参数 OutPut 成绩排名 但针对不同身份 输出不同 n 记录用户个数 k 标记 有无记录 p 记录不及格 人数 xz 记录排序科目 公用 ReviseSecre 修改自己的密码 code 7 secre 7 记录 两个密码 判断是否相同 SurfUser SurfUser 为浏览用户模块 需调用 SurfUser1 输出信息 AddUser 增添用户 需调用 Identy 提 供身份 tempflag 记录临时身份 c 判断用户选择 tempsecre 7 判断两次密 码是否相同 ReviseUser 修改用户资料 结构体 temp 记录修改后 的资料 管理员 DeleteUser 提供要删除的用户信息 调用 DeleteUser1 删除 name 10 id 5 两者 记录要删除的信息 SurfScore 调用 SurfScore1 输出信息 身份自定义函数功能说明变量 AddScore 增添成绩信息 cj maxuser 临时记录 要储存的成绩信息 ReviseScore 修改成绩信息 temp 记录选择科目 score 记录成绩管理员 DelScore 删除成绩 需调用 SurfScore1 浏览成绩 struct score stu maxuser 将文件 信息全读入内存 ChaScore1 直接查看成绩 需调用 ChaScore 输出信息 struct score one 读 入每个人的成绩 判 断 学生 ChaInfo 只输出自己的信息 3 3 模块算法流程图 模块算法流程图 开始开始 判断 user dat 存 在 F 登录 增添用户Y g user flag 1 g user flag 2 管理员界面 学生界面 F Y Y 总图 管理员界 面 管理用户界面 Y cho 1 F cho 2 F 管理成绩界面 Y cho 3 F 修改密码 Y cho 0 结束结束 Y F 管理员管理员 菜单菜单 菜单的流程图都与管理员管理员 菜单菜单类似 就不在画菜单的流程图了 Y Y Y Y Y cho 0 结结 束束 Y 管理员 增加用户 增加用 户 输入信息 判断 ID 存 在 询问保存 打开文件 保 存 继续添加用户 管理员菜 单 Y N Y Y Y N N 学生个人信 息查询 打开文件 查找与登录 人 ID 号相 同的个人资 料 输出个人信息 学生界面 学生个人信息查询 学生成绩查询查询 与此类似 不再画了 管理员 删除用户 修改用户 选择被修改人 输入修改 后的信息 浏览用户 判断 ID 存在 打开文件 保存 用户管 理界面 Y N 管理员 修改用户 管理员的成绩管理下的功能与用户管理下的功能十分类似 就不在画成绩管理下 功能的流程图了 删除用户 选择被删除人 浏览用户 判断存在要 删除的人 打开文件 删除 管理用 户界面 输出排名 备注 查看成绩界面是学生用 的 成绩管理界面管理员用 管理员 学生 修改密码 3 3 核心模块源程序核心模块源程序 登录模块 登录模块 void Login FILE fp 修改密码 读取用户信息 寻找 输入两次密码 两次密码相同 读取用户信息 修改与登录身份 相同的人的密码 g user flag 1 学生界面 管理员界面 OutPut 选择排名科目 读取成绩信息 冒泡排序法排序 g user flag 1 输出所 有排名 成绩管理界面 输出登录人 成绩排名 查看成绩界 面 int j 0 Welcome g user flag 0 printf 请登录 n n 姓名 scanf s g user name printf 密码 while g user secre j getch r 读取一个不在屏幕上显示的字符 如果该字符不为回车执行下面的内容 if g user secre j b 如果是退格 printf b b 退格 但没有消除 j else printf 打印 j g user secre j 0 最后加结尾符 fp fopen user dat ab fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s s s d s user name user id user sex user year if strcmp g user name user name strcpy g user id user id break if g user flag 0 Welcome printf 对不起 用户名与密码不匹配 printf n n1 重新登录 n2 退出 n n 请选择 scanf d if cho 1 Login else exit 0 fclose fp switch g user flag case 1 Manager 管理员界面 break case 2 Student 学生界面 break 增加用户模块 增加用户模块 void AddUser 添加用户 char a 7 c struct userinfo one int tempflag FILE fp user flag 0 Welcome printf 温馨提示 n1 ID 为四位数 n2 密码最多为 6 位 n3 填写性别时 1 代 表女 2 代表男 n4 权限 1 为管理员 2 为学生 n printf 请填写以下信息 n n 姓名 scanf s user name printf ID 号 scanf s user id fp fopen user dat ab fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s s s d s one name one id one sex one year if strcmp one id user id printf 该 ID 号已有人使用 请另换 n 按任意键继续 getchar AddUser fclose fp printf 注册时间 scanf s user year printf 请输入密码 scanf s user secre printf 请确认密码 scanf s a if strcmp a user secre 判断两次密码是否相同 printf 两次密码不一致 n 按任意键重新填写 n getchar AddUser printf 性别 scanf s user sex getchar 对付回车 if g user flag 1 tempflag 1 else Welcome tempflag Identy printf 请确认你的信息 n n printf 姓名 t tID 号 t t 性别 t t 注册时间 t 身份 n printf s t t s t t s t t s t t d user name user id user sex user year te mpflag printf n n 保存吗 Y N if g user flag 1 getchar scanf c getchar if c Y c y fp fopen user dat ab if fp NULL printf 文件打开失败 fprintf fp s s s s d s user name user id user sex user year tempflag user secre fclose fp if g user flag 1 Login printf n 继续添加用户吗 Y N scanf c if c Y c y AddUser else ManageUser 修改用户模块 修改用户模块 void ReviseUser struct userinfo user maxuser temp char tempid 5 tempname 10 a 7 int i n flag k 0 pd 0 FILE fp SurfUser1 printf 请输入要修改用户的姓名和 ID 号 n n printf 姓名 scanf s tempname printf ID 号 scanf s tempid fp fopen user dat ab fseek fp 0L SEEK SET for i 0 i maxuser i fscanf fp s s s s d s user i name user i id user i sex user i year if feof fp break fclose fp n i Welcome printf 温馨提示 n1 ID 号为四位数 n2 密码最多为 6 位 n3 填写性别时 1 代表女 2 代表男 n4 权限 1 为管理员 2 为学生 n printf 5 设置不符合要求可能会直接退出界面 n n printf 请重新输入该用户的全部信息 printf n n 姓名 scanf s temp name printf ID 号 scanf s temp id pd PanDuan temp id if pd 1 printf 对不起 该 ID 以有人使用 请另换 n 按任意键重来 Delay ReviseUser printf 注册时间 scanf s temp year printf 输入密码 scanf s temp secre printf 确认密码 scanf s a if strcmp a temp secre 判断两次密码是否相同 printf 两次密码不一致 n 按任意键重来 n getchar ReviseUser printf 性别 scanf s temp sex temp flag Identy getchar fp fopen user dat wb for i 0 i n i if strcmp tempname user i name strcpy user i id temp id strcpy user i sex temp sex strcpy user i year temp year strcpy user i secre temp secre user i flag temp flag k 1 fprintf fp s s s s d s user i name user i id user i sex user i year user i flag user i s ecre fclose fp if k 1 printf 修改成功 n 按任意键返回上一层菜单 else printf 对不起 姓名与 ID 号不一致 n 修改失败 n 按任意键返回 getchar ManageUser 4 4 实验结果实验结果 登录 管理员主菜单 确定添加用户 删除用户 浏览用户 确定添加成绩 浏览成绩 管理员查看排名 管理员修改成绩 学生主菜单 学生查看排名 五 使用说明五 使用说明 本程序在 Dev C 里编写运行而成 虽有登录界面 但第一次 使用时 会自动将第一使用者作为管理员 以后可以由管理员添加 管理员用户 身份为 1 学生用户 身份为 2 添加完成之后 这 些用户信息将保存在同目录的 user dat 这个文件下 同理 成绩只 有管理员能够进行添加 修改 删除 并把成绩信息保存在 score dat 这个文件里 学生只有查看自己的个人信息和成绩排名 等信息 六 程序设计心得体会六 程序设计心得体会 通过这次 C 语言的课程设计 我明白了很多也知道了很多 更收获了很多 自从确定了题目到完成整个题目 从理论到实践 不仅可以 巩固了以前所学过的知识 而且学到了很多在书本上所没有学到 过的知识 通过这次课程设计使我懂得了理论与实际相结合是很 重要的 只有理论和知识是远远不够的 只有把所学的理论知识 与实际相结合起来 才能提高自己的实际动手能力和独立思考能 力 同时 我也感受到了编程是一项非常烦琐周密的活动 他不 但需要一个人周密的思考问题的能力 处理问题的能力 还需要 有足够的耐心和严谨治学的作风 来不得半点马虎 通过本次课程设计 我也初步学会了论文设计的基本方法 学会了怎样去借鉴别人的方法和经验 知道如何去查找资料和整 合处理这些资料的能力 它使我更加地体会到多看专业书的重要 性 只有掌握了一定量的专业知识才能得心应手地解决诸多问题 另外 在做任何事倒要有耐心 不要一遇到困难就退缩 做完这个题目 信心有所提高 再难的的题目 再浩大的代 码堆 也可以设法把他完成 完成之后的喜悦感更是无比美妙 七 附录七 附录 附录附录 1 1 参考文献参考文献 C 语言程序设计基础与项目实训 C 语言程序设计教程 附录附录 2 2 主要变量及自定义函数主要变量及自定义函数 说明说明 附录附录 3 3 源程序代码源程序代码 include include include include include define maxuser 100 定义最大用户数量 struct userinfo char id 5 学生的学号 或教职工的工号 char name 10 姓名 char secre 7 密码 char sex 1 性别 int flag 权限标识 1 为管理员 2 为学生 char year 5 注册时间 user struct score char name 10 char id 5 int scor 5 保存 5 单科成绩 float ave int all int cho struct userinfo g user void AddUser 增添新用户 void ChuShiHua 初始化程序 初始管理员的信息 用户名 管理员 密码 123456 void Welcome 程序最上面的欢迎条 void Login 登陆 int Identy 身份确定 void Manager 管理员界面 void Student 学生界面 void SurfUser 浏览用户 void ManageUser 管理用户 void ReviseUser 修改用户信息 void DeleteUser 提供将要删除用户的信息 void SurfUser1 删除用户前浏览用户信息 void DeleteUser1 char name char id 删除用户 void ManageScore 管理成绩界面 void AddScore 增添成绩 void ReviseScore 修改成绩 void DelScore 删除成绩 void SurfScore 浏览成绩 void SurfScore1 修改删除成绩前浏览成绩 int PaiXu 提供排序的参数 void OutPut 针对不同的身份对排序进行不同输出 void ReviseSecre 修改密码 void ChaInfo 查看个人信息 void ChaScore 学生查看成绩 void ChaScore1 查看成绩选项 void Delay 延迟 int PanDuan char tempid 7 判断 ID 号是否已用 main ChuShiHua Login void ChuShiHua 第一次使用 初始化 if access user dat 0 g user flag 1 AddUser void Delay 延迟 getchar getchar void Welcome system cls printf 欢迎来到学生成绩管理系统 n n n void Login 登录 FILE fp int j 0 Welcome g user flag 0 printf 请登录 n n 姓名 scanf s g user name printf 密码 while g user secre j getch r 读取一个不在屏幕上显示的字符 如果该字符不 为回车执行下面的内容 if g user secre j b 如果是退格 printf b b 实现退格 j else printf 打印 j g user secre j 0 最后加结尾符 fp fopen user dat ab 打开文件 判断当前登陆者能否进入系统 fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s s s d s user name user id user sex user year if strcmp g user name user name strcpy g user id user id break if g user flag 0 Welcome printf 对不起 用户名与密码不匹配 printf n n1 重新登录 n2 退出 n n 请选择 scanf d if cho 1 Login else exit 0 fclose fp switch g user flag case 1 Manager 管理员界面 break case 2 Student 学生界面 break void AddUser 添加用户 char a 7 c struct userinfo one int tempflag FILE fp user flag 0 Welcome printf 温馨提示 n1 ID 为四位数 n2 密码最多为 6 位 n3 填写性别时 1 代表女 2 代表男 n4 权限 1 为管理员 2 为学生 n printf 请填写以下信息 n n 姓名 scanf s user name printf ID 号 scanf s user id fp fopen user dat ab fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s s s d s one name one id one sex one year if strcmp one id user id printf 该 ID 号已有人使用 请另换 n 按任意键继续 getchar AddUser fclose fp printf 注册时间 scanf s user year printf 请输入密码 scanf s user secre printf 请确认密码 scanf s a if strcmp a user secre 判断两次密码是否相同 printf 两次密码不一致 n 按任意键重新填写 n getchar AddUser printf 性别 scanf s user sex getchar 对付回车 if g user flag 1 tempflag 1 else Welcome tempflag Identy printf 请确认你的信息 n n printf 姓名 t tID 号 t t 性别 t t 注册时间 t 身份 n printf s t t s t t s t t s t t d user name user id user sex user year tempflag printf n n 保存吗 Y N if g user flag 1 getchar scanf c getchar if c Y c y fp fopen user dat ab if fp NULL printf 文件打开失败 fprintf fp s s s s d s user name user id user sex user year tempflag user secre fclose fp if g user flag 1 Login printf n 继续添加用户吗 Y N scanf c if c Y c y AddUser else ManageUser int Identy int i Welcome printf 请选择该人的身份 printf n1 管理员 n2 学生 n n 请选择 scanf d switch cho case 1 i 1 break case 2 i 2 break default Identy return i void Manager Welcome printf 1 管理用户 n2 管理成绩 n3 修改密码 n4 查看个人信息 n0 退出 printf n n 请选择 scanf d switch cho case 1 ManageUser break case 2 ManageScore break case 3 ReviseSecre break case 4 ChaInfo case 0 exit 0 default Manager void Student Welcome printf 1 查看成绩 n2 查看个人信息 n3 修改个人密码 n0 退出 printf n n 请选择 scanf d switch cho case 1 ChaScore1 break case 2 ChaInfo break case 3 ReviseSecre break case 0 exit 0 default Student void ManageUser Welcome printf 1 浏览用户 n2 增添用户 n3 修改用户 n4 删除用户 n0 返回 printf n n 请选择 scanf d switch cho case 1 SurfUser break case 2 AddUser break case 3 ReviseUser break case 4 DeleteUser break case 0 Manager default ManageUser void SurfUser SurfUser1 printf 按任意键返回上一级菜单 Delay ManageUser void ReviseUser struct userinfo user maxuser temp char tempid 5 tempname 10 a 7 int i n flag k 0 pd 0 FILE fp SurfUser1 printf 请输入要修改用户的姓名和 ID 号 n n printf 姓名 scanf s tempname printf ID 号 scanf s tempid fp fopen user dat ab fseek fp 0L SEEK SET for i 0 i maxuser i fscanf fp s s s s d s user i name user i id user i sex user i year if feof fp break fclose fp n i Welcome printf 温馨提示 n1 ID 号为四位数 n2 密码最多为 6 位 n3 填写性别时 1 代表女 2 代 表男 n4 权限 1 为管理员 2 为学生 n printf 5 设置不符合要求可能会直接退出界面 n n printf 请重新输入该用户的全部信息 printf n n 姓名 scanf s temp name printf ID 号 scanf s temp id pd PanDuan temp id if pd 1 printf 对不起 该 ID 以有人使用 请另换 n 按任意键重来 Delay ReviseUser printf 注册时间 scanf s temp year printf 输入密码 scanf s temp secre printf 确认密码 scanf s a if strcmp a temp secre 判断两次密码是否相同 printf 两次密码不一致 n 按任意键重来 n getchar ReviseUser printf 性别 scanf s temp sex temp flag Identy getchar fp fopen user dat wb for i 0 i n i if strcmp tempname user i name strcpy user i id temp id strcpy user i sex temp sex strcpy user i year temp year strcpy user i secre temp secre user i flag temp flag k 1 fprintf fp s s s s d s user i name user i id user i sex user i year user i flag user i secre fclose fp if k 1 printf 修改成功 n 按任意键返回上一层菜单 else printf 对不起 姓名与 ID 号不一致 n 修改失败 n 按任意键返回 getchar ManageUser void DeleteUser char id 5 name 10 SurfUser1 printf 请输入要删除用户的姓名和 ID 号 n n printf 姓名 scanf s name printf ID 号 scanf s id DeleteUser1 name id void DeleteUser1 char name char id struct userinfo user maxuser int i n k 0 FILE fp fp fopen user dat ab fseek fp 0L SEEK SET for i 0 i maxuser i fscanf fp s s s s d s user i name user i id user i sex user i year if feof fp break fclose fp n i fopen user dat wb for i 0 i n i if strcmp name user i name strcmp id user i id fprintf fp s s s s d s user i name user i id user i sex user i year user i flag user i secre else k 1 fclose fp if k 1 printf 删除成功 n 按任意键返回 else printf 对不起 姓名与 ID 号不一致 n 删除失败 n 按任意键返回 Delay ManageUser void SurfUser1 FILE fp Welcome printf 姓名 t tID 号 t t 性别 t t 入学年份 t 身份 n fp fopen user dat ab fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s s s d s user name user id user sex user year printf s t t s t t s t t s t t d n user name user id user sex user year user flag fclose fp printf n 身份项 n1 管理员 n2 学生 n n void ManageScore Welcome printf 1 浏览成绩 n2 增添成绩 n3 修改成绩 n4 删除成绩 n5 排序 n0 返回 printf n n 请选择 scanf d switch cho case 1 SurfScore break case 2 AddScore break case 3 ReviseScore break case 4 DelScore break case 5 OutPut case 0 Manager break default ManageScore void SurfScore SurfScore1 printf n 按任意键返回上一级菜单 Delay ManageScore void AddScore struct score cj maxuser int n i char c FILE fp Welcome printf 请输入学生成绩的个数 scanf d for i 0 i n i Welcome printf n 请输入第 d 学生成绩 n i 1 printf n 姓名 scanf s cj i name printf ID 号 scanf s cj i id printf 数学 scanf d printf 英语 scanf d printf 物理 scanf d printf 体育 scanf d printf 离散 scanf d Welcome printf 请确认输入的信息 n printf 姓名 tID 号 t 数学 t 英语 t 物理 t 体育 t 离散 n for i 0 i n i printf s t s t d t d t d t d t d n cj i name cj i id cj i scor 0 cj i scor 1 cj i scor 2 cj i scor 3 cj i scor 4 printf n n 提示 如果有错误 请先按 Y 保存 然后再修改 Y N getchar scanf c if c Y c y fp fopen score dat ab for i 0 i n i cj i all cj i scor 0 cj i scor 1 cj i scor 2 cj i scor 3 cj i scor 4 cj i ave cj i all 5 0 fprintf fp s s d d d d d d 0 2f cj i name cj i id cj i scor 0 cj i scor 1 cj i scor 2 cj i scor 3 cj i sco r 4 cj i all cj i ave fclose fp printf 保存成功 n 按任意键返回成绩管理菜单 getchar ManageScore void ReviseScore struct score stu maxuser FILE fp char name 10 id 5 int i n temp score k 0 SurfScore1 printf 请输入要修改的学生的姓名和 ID 号 n printf n 姓名 scanf s name printf ID 号 scanf s id printf 请选择修改的科目 n printf 1 数学 n2 英语 n3 物理 n4 体育 n5 离散 n0 返回 n n 请选择 scanf d printf 成绩 scanf d fp fopen score dat ab fseek fp 0L SEEK SET for i 0 i maxuser i if feof fp break fscanf fp s s d d d d d d f stu i name stu i id fclose fp n i fp fopen score dat wb for i 0 i n i if strcmp name stu i name break case 2 stu i scor 1 score break case 3 stu i scor 2 score break case 4 stu i scor 3 score break case 5 stu i scor 4 score break case 0 ManageScore break default printf n 选择有误 按任意键继续 getchar ReviseScore stu i all stu i scor 0 stu i scor 1 stu i scor 2 stu i scor 3 stu i scor 4 stu i ave stu i all 5 0 k 1 fprintf fp s s d d d d d d 0 2f stu i name stu i id stu i scor 0 stu i scor 1 stu i scor 2 stu i scor 3 stu i scor 4 stu i all stu i ave fclose fp if k 1 printf 修改成功 n 按任意键返回 else printf 对不起 姓名与 ID 号不一致 n 修改失败 n 按任意键返回 Delay ManageScore void DelScore char id 5 name 10 int i n k 0 FILE fp struct score stu maxuser SurfScore1 printf 请输入要删除的学生的姓名和 ID 号 n printf n 姓名 scanf s name printf ID 号 scanf s id fp fopen score dat ab fseek fp 0L SEEK SET for i 0 i maxuser i if feof fp break fscanf fp s s d d d d d d f stu i name stu i id fclose fp n i fopen score dat wb for i 0 i n i if strcmp name stu i name strcmp id stu i id fprintf fp s s d d d d d d 0 2f stu i name stu i id stu i scor 0 stu i scor 1 stu i scor 2 stu i scor 3 stu i scor 4 stu i all stu i ave else k 1 fclose fp if k 1 printf 删除成功 n 按任意键返回 else printf 对不起 姓名与 ID 号不一致 n 删除失败 n 按任意键返回 Delay ManageScore void SurfScore1 FILE fp struct score one Welcome if access score dat 0 printf 对不起 你还没录入成绩 n 按任意键开始录入 Delay AddScore printf 姓名 tID 号 t 数学 t 英语 t 物理 t 体育 t 离散 t 总分 t 平均分 n fp fopen score dat ab fseek fp 0L SEEK SET while feof fp fseek fp 0L SEEK CUR fscanf fp s s d d d d d d f one name one id printf s t s t d t d t d t d t d t d t 0 2f n one name one id one scor 0 one scor 1 one s cor 2 one scor 3 one scor 4 one all one ave fclose fp int PaiXu 提供成绩排序的科目 Welcome printf 1 按数学排序 n2 按英语排序 n3 按物理排序 n4 按体育排序 n printf 5 按离散排序 n6 按总分排序 n0 返回 n 请选择 scanf d switch cho case 1 return 1 break case 2 return 2 break case 3 return 3 break case 4 return 4 break case 5 return 5 break case 6 return 6 break case 0 return 8 break default return 9 void OutPut FILE fp struct score stu maxuser temp int i j n xz k 0 p 0 xz PaiXu if xz 8 if g user flag 1 ManageScore if g user flag 2 ChaScore1 if xz 9 xz PaiXu fp fopen score dat ab fseek fp 0L SEEK SET for i 0 i maxuser i if feof fp break fscanf fp s s d d d d d d f stu i name stu i id n i fclose fp Welcome for i 0 i n i if stu i scor xz 1 60 p for i 0 i n i 冒泡排序法 for j 0 j n i 1 j if xz 1 xz 2 xz 3 xz 4 xz 5 if stu j scor xz 1 stu j 1 scor xz 1 temp stu j stu j stu j 1 stu j 1 temp else if stu j all stu j 1 all temp stu j stu j stu j 1 stu j 1 temp if g user flag 1 printf 姓名 tID 号 t 数学 t 英语 t 物理 t 体育 t 离散 t 总分 t 平均分 t 名次 n for i 0 i n i printf s t s t d t d t d t d t d t d t 0 2f t d n stu i name stu i id stu i scor 0 st u i scor 1 stu i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论