




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C C 语言程序设计语言程序设计 课程设计报告课程设计报告 专专 业 业 统计学统计学 班班 级 级 088131088131 姓姓 名 名 罗钰莹罗钰莹 指导教师 指导教师 薛思清薛思清 20152015 年年 0101 月月 2626 日日 目目 录录 1 课程设计目的 2 问题需求分析 3 系统设计 数据结构 总体软件 框架 程序模块设计 4 编程实现 描述主要实 现过程 主要模块设计必须用流程图或伪代码等 4 1 流程图 4 2 伪代码 4 3 程序内容 5 系统测试 设计测试样例 验证 程序 用截图的形式表达出来 6 可选 附 部分关键源程序 7 实习总结 评价对你所开发 的软件 实习过程中的难题 解决过程 你的收获与经验等 一 课程设计的目的一 课程设计的目的 随着计算机的普及 计算机在生活中得到越来越多的应用其中在计算机上的运 行的各种软件在解决生活中的实际问题中起着重大作用 而目前在编写程序时 C 语言是各种语言最基础的 对于普通用户能够使用 C 语言设计出小型软件对 于解决生活中的繁琐问题非常必要 在学校和班级中经常会对某次考试所有学 生的成绩进行统计和管理 由于学生数目经常繁多 所以在处理学生总成绩和 平均成绩时工作会相对繁重 所以争对这种情况 同时对分析成绩管理所需要 的功能 在利用 C 语言及 VC 6 程序运行平台之下 设计了一种小型的成绩管 理系统所需要的功能 该系统具有学生成绩相关信息的录入 显示 查询 排 序 修改删除和统计功能 学生成绩管理系统 为提供高校信息的管理 要求 设计 学生成绩管理系统 实现学生信息的输入 显示 查找 保存 删除以 及成绩排序等功能模块 要求功能选择用菜单实现 数据输入和结果输出要求 用文件存放 原始数据文件格式 具体数据自行编写 学号 姓名 年龄 英语 高等数学 C 语言 平均成绩 1 张珊 19 85 80 75 80 2 李四 20 95 85 90 90 功能要求极其说明 1 数据录入功能 录入每个学生的学号 年龄 课程名称 英语成绩 数 学成绩 C 语言成绩 平均成绩 共 7 个数据 2 查询功能 分为学生基本情况查询和成绩查询两种 学生基本情况查询 输入一个学号或姓名及年龄 可实现选择 查出此学生的基本信息并显示输出 称号查询 输入一个学号时 查出此学生所有课程情况 格式如下 学号 XX 姓名 XX 年龄 XX 英语成绩 XX 数学成绩 XX C 语言成绩 XX 平均成绩 XX 3 添加功能 要求可以添加学生的成绩信息 4 删除功能 当在 A TXT 中删除一个学生时 自动地在 B TXT 中删除此学 生所有信息 5 排序功能 能够实现按英语成绩排序 按数学成绩排序 按 C 语言成绩 排序 按平均成绩排序以及按学号排序 数据结构采用结构体数组 提供学生基本信息和学生成绩基本信息结构体数组 二问题需求分析二问题需求分析 根据题目要求 该程序具备的功能有程序总体设计程序总体设计 1 根据题目要求 该程序应具备的功能有 1 数据录入功能 录入每个学生的学号 年龄 课程名称 英语成绩 数 学成绩 平均成绩共 7 个数据 因而实现文章的输入输出功能 2 查询功能 分为学号情况查询和姓名查询两种 要求用户可以查询各个 学生的成绩 通过不同方式实现查询功能 3 添加功能 可以添加学生的信息 因而要提供查找和添加功能 4 删除功能 当在 A TXT 中删除一个学生时 自动地在 B TXT 中删除此学 生所有信息 5 排序功能 能实现选择按学号 英语成绩 数学成绩 C 语言成绩或平 均成绩升序或降序排序并显示数据 6 菜单功能 应该提供键盘式的选择菜单以实现其功能选择 三总程序设计三总程序设计 四四 程序详细设计程序详细设计 主函数 主函数一般设计得比较简洁 只提供输入 处理和输出部分的函数调用 其中各功能模块用菜单方式选择 流程图 int main 主函数 void Add FILE fp STUDENT one 函数声明 void Show FILE fp 函数声明 int Find FILE fp char no int K 函数声明 int Del FILE fp char no 函数声明 void Mod FILE fp char p 函数声明 void Zap FILE fp 函数声明 struct student Input void long num 0 iItem int res K STUDENT temp char strNo 10 FILE fp fopen student dat r 判断该文件是否存在 if fp NULL fp fopen student dat w else fseek fp 0L SEEK END num ftell fp sizeof STUDENT 统计多少个字节 除以一个学生需 要的字节得到学生的数 rewind fp while iItem menu num 5 switch iItem case 1 temp Input Add fp temp num printf 学生信息已添加 按任意键返回 break case 2 Show fp printf 按任意键返回 break case 3 if num 0 printf 输入要删除的学号 scanf s strNo res Del fp strNo if res printf 学号 s 记录已删除 按任意键返回 strNo Zap fp num else printf 没有学号 s 记录 按任意键返回 strNo else printf 目前没有记录 无法删除 按任意键返回 break case 4 if num 0 printf 选择查询方式 n printf 1 基本情况查询 n printf 2 成绩查询 n scanf d switch K case 1 printf 输入要查找的学号或姓名 scanf s strNo printf t 姓名 t 学号 t 性别 t 年龄 n break case 2 printf 输入要查找的学号或姓名 scanf s strNo printf t 姓名 t 学号 t 性别 t 年龄 t 英语 t 高数 tc 语言 t 平均分 n break default printf 输入有误 res Find fp strNo K if res printf 没有此学生记录 按任意键返回 else printf 按任意键返回 else printf 目前没有记录 无法删除 按任意键返回 break default printf 命令错误 按任意键返回 break getch if fp fclose fp return 0 2 菜单 先定义空函数 include stdio h include conio h include stdlib h 函数声明 下面这些函数可以分别对应不同的功能模块 但一个功能模块可以有多个函 数来实现 这些函数暂时不做具体设计 包括函数参数 返回值等 在后续逐步添加功能模块具体设计与实现这些函数 int function1 函数 void function2 函数 void function3 函数 int function4 函数 void function5 函数 void function6 函数 int menu 菜单程序 也可以把后面的菜单的具体实现函数放在 main 函数 之前 则不需要做此声明 主函数 void main 调用菜单程序 int choice do choice menu if choice 0 break switch choice switch 结构 case 1 case 事件 printf 输入入一个新的学生的记录 function1 break case 2 printf 查询一个学生记录 function2 break case 3 printf 插入一个学生记录 function3 break case 4 printf 修改一个学生记录 function4 break case 5 printf 登记学生成绩 function5 break case 6 printf 删除学生成绩 function6 break getch while 0 菜单程序 int menu int num do do while 循环 也可以考虑用 while 循环加上 break system cls 清屏 printf n printf 菜单 n 输出 MENU 并换行 printf 1 输入一个新生的记录 1 n printf 2 查询一个学生的记录 2 n printf 3 插入一个学生记录 3 n printf 4 修改一个学生记录 4 n printf 5 登记学生成绩 5 n printf 6 删除学生成绩 6 n printf 0 退出 0 n printf n printf 请选择选项 scanf d while num5 while 循环执行条件 num 1 或 num 大于 4 return num 功能模块的具体实现部分 函数 描述函数功能以及设计思路 int function1 暂不写具体语句 return 0 函数 描述函数功能以及设计思路 void function2 空函数体 void function3 暂不写具体语句 return 函数 描述函数功能以及设计思路 int function4 空函数体 return 0 void function5 暂不写具体语句 函数 描述函数功能以及设计思路 void function6 暂不写具体语句 函数 描述函数功能以及设计思路 void function7 空函数体 2 功能模块设计功能模块设计 数据录入 流程图 数据结构 我们需要录入的信息数据有两类 一类是学生基本信息 包括学号 姓名 年龄存放在文件 S INFO TXT 中 另一类信息是学生成绩基本信息 包括 英语成绩 数学成绩 C 语言成绩 平均成绩 4 个数据 这些信息存放在文件 S SCORE TXT 中 学生基本信息的存放格式为 include include include define SIZE 50 struct studentRecord int studentNumbers char name 20 int age float math float English float c language float average score studentRecords SIZE int StudentNumbers 学生的人数 void save FILE fp int i if fp fopen studentRecord dat w NULL printf cannot open file n return while fwrite StudentNumbers fclose fp 查询功能模块 流程图 需求分析 该模块的功能是查询学生是否在名单中 int search char name 查找这名学生是否在名单中 int i flag 0 for i 0 i StudentNumbers i if strcmp name studentRecords i name 0 flag 1 break if flag 1 return i else return 0 三添加功能 该模块是添加学生的成绩插入学生成绩 流程图 void insert student Record SR 插入学生的成绩 int i j int flag 0 for i 0 i StuNumbers i if studentRecords i StuNumber SR StudentNumber for j StudentNumbers j SIZE StudentNumbers printf error n if n SIZE StudentNumbers for i 1 i n i printf 请输入学生信息 n printf 输入学生学号 n scanf d printf 输入学生姓名 n scanf s stu name printf 输入学生年龄 数学成绩 英语成绩 C 语言 平均成绩 n scanf d f f f f insert stu 四排序模块 该模块是将学生成绩进行排序能选择实现学号 英语 数学 C 语言 平均成绩的显示数据 流程图 void MathSort 按照数学成绩排序 int i j studentRecord temp for i 0 i StudentNumbers 1 i for j 0 j studentRecords j 1 math temp studentRecords j studentRecords j studentRecords j 1 studentRecords j 1 temp void EnglishSort 按照英语成绩排序 int i j studentRecord temp for i 0 i StudentNumbers 1 i for j 0 j StudentNumbers j if studentRecords j English studentRecords j 1 English temp studentRecords j studentRecords j studentRecords j 1 studentRecords j 1 temp void C languageSort 按照 C 语言成绩排序 int i j studentRecord temp for i 0 i StudentNumbers 1 i for j 0 j StudentNumbers j if studentRecords j C language studentRecords j 1 C languange t studentRecords j studentRecords j studentRecords j 1 studentRecords j 1 t void Average scoreSort 按照平均成绩排序 int i j studentRecord temp for i 0 i StudentNumbers 1 i for j 0 j StudentNumbers j if studentRecords j Average score studentRecords j 1 Average score t studentRecords j studentRecords j studentRecords j 1 studentRecords j 1 t void StudentNumberSort 按照学生学号成绩排序 int i j studentRecord temp for i 0 i StudentNumbers 1 i for j 0 j StudentNumbers j if studentRecords j stuNo studentRecords j 1 stuNo temp studentRecords j studentRecords j studentRecords j 1 studentRecords j 1 temp 五 修改模块 完成程序的修改和添加 流程图 void modify int i int n char name 20 printf 输入要修改学生记录的学生数量 scanf d for i 0 i n i printf 输入要修改记录的学生的姓名 scanf s name i search name if i 0 printf 查无此人 return printf 输入要修改学生记录的学生学号 scanf d printf 输入要修改学生记录的学生的年龄 scanf d printf 输入要修改学生记录的学生的成绩 n printf 数学 scanf f printf 英语 scanf f printf C 语言 scanf f printf 平均成绩 scanf f 六删除模块 流程图 void Delete char name 20 int stuNO int i j printf 输入要删除的学生的姓名 scanf s i search name if i 0 printf 查无此人 return for j i j StuNumbers j studentRecords j studentRecords j 1 StuNumbers 七浏览模块 void browse int i int j StuNumberSort printf 要浏览的学生数量 scanf d for j 0 j i j printf studentRecord 5d 5s 5f 5f 5f studentRecords j stuNo studentRecords j name studentRecords j age studentRecords j math studentRecords j English studentRecords j C language studentRecords j Average score 五五 上机操作上机操作 编译 连接和运行 下面是运行后各个模块的界面图 1 主菜单函数 2 数据录入功能 3 查询功能 1 学生基本信息查询 2 按照成绩查询 4 删除功能 删除你不想要的学生信息或输入错误的学生信息 五浏览功能 附录 程序源代码 include include include include typedef struct student 结构体 int nFlag 标志0 完好 1 被删除 char strName 12 姓名 char strNo 10 学号 char sex 3 char age 3 float fScore 3 三门课程成绩 float fAve 平均分 STUDENT long menu long num 菜单函数 long nSelect 0 do system cls 执行DOS下的清屏命令 printf n printf 学生成绩管理系统 已有记录数 4d n num printf n printf t t1 添加数据 n printf t t2 列表显示 n printf t t3 删除数据 n printf t t4 查找数据 n printf t t5 退出 n printf n printf 请选择命令号 scanf d if nSelect 1 scanf s strNo res Del fp strNo if res printf 学号 s 记录已删除 按任意键返回 strNo Zap fp num else printf 没有学号 s 记录 按任意键返回 strNo else printf 目前没有记录 无法删除 按任意键返回 break case 4 if num 0 printf 选择查询方式 n printf 1 基本情况查询 n printf 2 成绩查询 n scanf d switch K case 1 printf 输入要查找的学号或姓名 scanf s strNo printf t姓名 t学号 t性别 t年龄 n break case 2 printf 输入要查找的学号或姓名 scanf s strNo printf t姓名 t学号 t性别 t年龄 t英语 t高数 tc 语言 t平均分 n break default printf 输入有误 res Find fp strNo K if res printf 没有此学生记录 按任意键返回 else printf 按任意键返回 else printf 目前没有记录 无法删除 按任意键返回 break default printf 命令错误 按任意键返回 break getch if fp fclose fp return 0 void Add FILE fp STUDENT one 添加 rewind fp fseek fp 0L SEEK END fwrite fflush fp void Show FILE fp 浏览 void OutputB STUDENT one STUDENT temp int num 0 rewind fp printf t姓名 t学号 t性别 t年龄 t英语 t高数 tc语言 t平均分 n while feof fp if fread OutputB temp rewind fp int Find FILE fp char no int K 查找 void OutputA STUDENT one void OutputB STUDENT one int res 0 STUDENT temp int num 0 rewind fp while feof fp if fread if K 1 OutputA temp res 1 else OutputB temp res 1 rewind fp return res int Del FILE fp char no 删除 int res 0 STUDENT temp rewind fp while feof fp if fread fseek fp long sizeof STUDENT SEEK CUR fwrite res 1 break rewind fp return res void Zap FILE fp 整理 删除的辅助函数 long num i STUDENT buffer fflush fp fseek fp 0L SEEK END num ftell fp sizeof STUDENT rewind fp if num 1 return buffer STUDENT malloc num sizeof STUDENT fread buffer sizeof STUDENT num fp fclose fp fp fopen student dat w for i 0 i num i if buffer i nFlag 0 fwrite free buffer fflush fp rewind fp struct student Input void 输入 STUDENT one printf 输入学生信息 n printf 姓名 scanf s one strName printf 学号 scanf s one strNo printf 性别 scanf s one sex printf 年龄 scanf s one age printf 三门课程成绩 n printf 英语 scanf f printf 高数 scanf f printf C语言 scanf f one fAve one fScore 0 one fScore 1 one fScore 2 3 0f one nFlag 0 return one void OutputB STUDENT one 详细情况输出 printf 6s 7s 8s 8s one strName one strNo one sex one age printf 8 1f 8 1f 8 1f one fScore 0 one fScore 1 one fScore 2 printf 8 1f n one fAve void OutputA STUDENT one 基本信息输出 printf 6s 7s 8s 8s n one strName one strNo one sex one age 六六 实习总结 评价对你所开发的软件 实习过程中的难题 解决过实习总结 评价对你所开发的软件 实习过程中的难题 解决过 程 你的收获与经验等 程 你的收获与经验等 在上个学期学完了 C 语言这门计算机基础课程 这个学期进行课程设计 说实 话觉得非常吃力 几乎一切都要重新再来 这让我明白一个道理学习是不能中 断的 学习需要刻苦的专研而不是浅尝辄止 这次我抽到的是成绩管理系统的 设计 说实话我一开始觉得很难因为书上的提示也很少觉得无从下手有时甚至 连一些代码都不能完全认识一开始觉得自己肯定不行完成不了这么庞大的设计 尽管对于老师很小 但是对于我们这种相当于刚入门的学生确实很困难 首先 看书摸索自己画出流程图 尽管不完美和书上的也不一样 但是有了一个清晰 的构思知道自己的程序应该由主函数 菜单函数 输入函数 查询函数 插入 函数 删除函数 排序函数 浏览函数等模块 经过第一个夜晚变得不在一无 所知 而是有些头绪便开始从第一个第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年版中外合作经营企业合同示范文本
- 第13课 长短参差说课稿-2025-2026学年小学书法练习指导六年级上册湘美版
- 2025电竞馆收银员雇佣合同
- 塑料厂消防演练实施管理规定
- Module 7 Unit 1说课稿-2024-2025学年外研版英语-九年级上册
- 化肥厂复合肥运输管控细则
- 快递行业服务合同协议(2025修订版)
- 《红楼梦》整本书阅读起始课 教学设计 2023-2024学年统编版高中语文必修下册
- 环保技术研发合同协议
- 第20课《天上的街市》说课稿 2024-2025学年统编版语文七年级上册
- 跨学科实践活动07 垃圾的分类与回收利用(活动设计)-2024-2025学年九年级化学跨学科实践活动教学说课稿+设计(人教版2024)
- 2025年亚马逊AWS云服务合同范本参考
- 班干部聘任仪式
- 2025年老年病学住院医师规培出科考试理论笔试答案及解析
- 半导体semi F81 中文版
- 《电力建设工程施工安全管理导则》(NB∕T 10096-2018)
- 外包与合作管理制度
- 文化引领学校特色化课程体系的建构
- 安全现场文明施工措施费用清单
- 生物波能量与养生健康知识问答手册
- 《读中国》作者阿紫
评论
0/150
提交评论