2022年课程方案说明书

上传人:鲁** 文档编号:567303336 上传时间:2024-07-19 格式:PDF 页数:17 大小:880.29KB
返回 下载 相关 举报
2022年课程方案说明书_第1页
第1页 / 共17页
2022年课程方案说明书_第2页
第2页 / 共17页
2022年课程方案说明书_第3页
第3页 / 共17页
2022年课程方案说明书_第4页
第4页 / 共17页
2022年课程方案说明书_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《2022年课程方案说明书》由会员分享,可在线阅读,更多相关《2022年课程方案说明书(17页珍藏版)》请在金锄头文库上搜索。

1、个人资料整理仅限学习使用课程设计说 明 书课程名称:高级语言程序设计与编译设计题目:学生成绩管理系统院系: 计算机科学与信息工程系学号姓名: 201803030017 张贺贺201803030025 智鹏201803030031 焦海涛专业班级: 10 级软件工程1 班指导教师:周晏2018 年 6 月 24 日课 程 设 计 任 务 书设计题目学生成绩管理系统精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 17 页个人资料整理仅限学习使用学生姓名刘创所在院系计算机科学与信息工程系专业、年级、班08软件工程设计要求:完成一个学生成绩管理

2、系统系统,具体要求如下: 1.输入学生信息 2.插入学生信息 3.按学号查找学生信息 4.按学号删除学生信息 5.分数统计 6.按平均分排序 7.保存到文件 8.从记录文件读取学生信息学生应完成的工作:1 学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。在此基础上进一步改进程序,最后正确地运行程序。2 对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。测试时应注意对各种边缘情况进行测试。3 完成课程设计报告参考文献:1 刘振安等 C 程序设计课程设计机械工业出版社2018 2 谭浩强 C 程序设计教程 第四版)清华大学出版社2018工作计

3、划:1. 小组审题,查阅资料,进行设计前的必要资料准备2 天)。 2. 把程序完整运行出来3 天)。 3. 增加改进程序2 天)。 4. 写课程设计报告2 天)。 5. 提交课程设计报告及答辩1 天)任务下达日期:2018 年 6 月 13 日任务完成日期:2018 年 6 月 24 日指导教师 签名):学生 签名):张贺贺、智鹏、焦海涛目录一 成员分工 3 4 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 17 页个人资料整理仅限学习使用2 一 成员分工本程序由智鹏、焦海涛、张贺贺三人共同努力完成。本实验小组经过共同商议,首先通过查

4、找资料及商讨共同确定了程序的大致结构,然后参照C 程序设计 来保存一批学生的信息资料。#define MAXN 35、#define MAX_NAME 256 表示数组初始大小。当数组内容被保存至文件后,设为“已保存”状态,当数组内容被修改之后,设为“为保存”状态。总控函数、菜单文件student.c 保存到文件按学号删除学生信息输入学生信息按平均分排序从记录文件读取学生信息按学号查找学生信息插入学生信息分数统计1.学生平均成绩统计2.科目平均成绩精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 17 页个人资料整理仅限学习使用五 函数功

5、能及参数说明、相互调用关系源文件函数名或其他成分功能typedef struct student 定义学生信息属性结构体结构体声明void input(STUDENT *data, int *len STUDENT *data, 输入信息void insert(STUDENT *data, int *len char nameMAX_NAME。mark_ave mark_tot 插入信息void delete_item(STUDENT *data, int *len while( (datapos.no != no & (pos pos = pos +1 删除信息void sort(STUDE

6、NT *data, int len -统计子程序 - 成绩统计void paint( 显示信息子程序- 成绩显示六 各变量的定义和作用#define MAXN 35 #define MAX_NAME 256 typedef struct student/ 学生信息 int no。/学号 char nameMAX_NAME 。/姓名 double english 。 double math 。 double computer 。 double zheng 。 double li。/科目 double mark_ave 。/平均成绩 double mark_tot。/总成绩 STUDENT 。七

7、各功能模块的算法处理流程图及相关说明1. 总控函数、菜单文件student.c 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 17 页个人资料整理仅限学习使用初始化数组 给 records 申请空间用 malloc 函数给 cn 赋值,用 switch case1 case2 case3 case4 case5 case6 case7 输入学生信息调 用 子 程 序input(STUDENT *data, int *len 插入学生信息调用子程序insert(STUDENT *data, int *len查询学生信息调 用 自 定 义

8、函数find(STUDENT *data, int len 删除学生信息调 用 自 定 义函数delete_item(STUDENT *data, int *len 对学生信息统计调用自定义函数stat(STUDENT *data, int len排 序 学 生 信息 至 记 录 文件 调 用 自 定义函数sort(STUDENT *data, int len 保 存 学 生 信 息到 记 录 文 件 保存调用 paint( while 循环不成立结束运行对循环规定,若不是0 到 7之间则输入错误2输入功能 -1 退出格式正确信息保存格式不对,不存保存指定文件-1退出3Input 学生信息精选

9、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 17 页个人资料整理仅限学习使用4 删除功能在主菜单中,选用 3删除功能。输入学号后,按enter 键,进行删除。倘若学号存在,对其进行删除函数调用。否则输出“学生信息不存在”。5 1 学生成绩统计2 科目平均成绩统计调用mark_ave。 mark_tot 。调用mark_ave。 mark_tot6.输入 6 后,将对前面输入的学生信息进行排序函数调用,并且将排序结果保存到制定文件夹。7.输入学生信息后,将对以上信息进行保存函数调用。八 程序测试1.测试系统能否正确显示菜单选项是否添加信息

10、是 y 否判断数组空间真假重新申请空间输入学生信息精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 17 页个人资料整理仅限学习使用2.实现功能输入学生信息学号 姓名英语数学计算机政治历史01 zhang 90 90 90 90 90 02 jiao 80 90 90 100 100 03 zhi 100 90 80 70 100 3.“-1”退回菜单,“ 7”保存学生信息精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 17 页个人资料整理仅限学习使用4.插入一个新学生信息5.按学

11、号查找学生信息精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 17 页个人资料整理仅限学习使用6.查询某学科的平均成绩7.实现学生平均成绩排序功能九 程序设计过程中遇到的问题及解决过程1 我们在组建工程的时候,将各个程序分给小组成员,两个人设计一个模块,但是出现了连接错误,各个模块之间也出现了输入上的错误,致使程序不能运行。对于各个模块逐一检查,添加修改,最终使各个模块错误消除,同时连接错误也自行解决。2 对程序整体理解,但在设计过程中,细节问题处理不当,造成程序不能运行或者运行错误,并且,对某一部分的程序不能独立设计出来。对此问题的解

12、决是参考了c 程序设计课程设计上的参考程序,完成了设计,但是不是一味的照搬,对参考程序进行了修改和添加。增加了按成绩区间查询的查询方式,增加了按总成绩精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 17 页个人资料整理仅限学习使用排序的排序方式。3 在刚开始程序设计的时候,不了解什么是组建工程,什么是模块,对于程序设计本身也有不理解的地方,不知道该从何下手。解决方法:先看 c 程序设计课程设计,了解怎样组建工程,理解每个模块的作用,弄清楚参考程序上的逻辑顺序以及如何设计等问题,然后再进行课程设计。十 课程设计心得及体会对于第一次做课程

13、设计的我来说,这次的课程设计是一次既让人痛苦又让人开心的事情。开始的时候根本不清楚课程设计要设计什么,不知道到底怎样设计,因为平时所写的c 程序都是一些简单而且基本的C 程序,根本不是解决实际情况,符合客户要求的工程程序,所以觉得无从下手,觉得很困难,甚至没有一个思路,而且对于组建工程,构建模块等工作无法理解。这些情况都使自己陷入了苦恼的深渊。后来,听从辅导老师的意见,从c 程序设计课程设计开始,一点点了解怎样组建工程,怎么样构建模块,对于每个模块应该怎么样进行设计,逻辑思维是什么,然后开始构建。在设计过程中一直都有错误存在,困难重重。遇到困难就开始用大量的时间进行修改以及整理,理出思路。最终

14、将工程调试成功,添加模块成功,而这些成功的瞬间是最快乐最开心的时刻。而且通过这次课程设计我学会了好多东西,觉得自己设计的东西更加接近实际的程序要求。知道团队合作的重要性,知道怎样使团队一起合作构建程序。总的来说,获益匪浅。十一 参考文献1 刘振安等 C 程序设计课程设计第二版)机械工业出版社2018 2 谭浩强 C 程序设计教程 第四版)清华大学出版社2018 十二 源程序#include #include #include #define MAXN 35 #define MAX_NAME 256 typedef struct student/学生信息 int no。 char nameMAX

15、_NAME。 double english。 double math。 double computer。 double zheng。 double li。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 17 页个人资料整理仅限学习使用 double mark_ave。 double mark_tot 。 STUDENT 。/*- 输入信息子程序-*/ void input(STUDENT *data, int *len int no。 putchar(n。 printf(%sn, 请输入新的记录,如果需要退出当前菜单请输入-1.。 p

16、rintf(%sn, 格式: n 学号 n。 printf(%sn, 姓名 英语 数学 计算机 政治 历史 。 putchar(n。 printf( 如:n 。 printf(5n 。 printf( 焦海涛 100 100 100 100 100n 。 scanf(%d, &no 。 while(no != -1 data*len.no = no 。 scanf(%s %lf %lf %lf %lf %lf, data*len.name, &data*len.english, &data*len.math,&data*puter,&data*len.zheng,&data*len.li。da

17、ta*len.mark_ave=(data*len.english+data*len.math+data*puter+data*len.zheng+data*len.li/5.0。 data*len.mark_tot=data*len.english+data*len.math+data*puter+data*len.zheng+data*len.li。 (*len+ 。 scanf(%d, &no 。 /*-插入子程序 -*/ void insert(STUDENT *data, int *len int no, pos。 double english, math, computer,zhe

18、ng,li, mark_ave, mark_tot 。 int i。 char nameMAX_NAME。lab: printf(%sn, 输入新的记录,退出当前菜单请输入-1. 。 printf(%sn, 格式:学号 。 printf(%sn, 姓名 英语 数学 计算机 政治 历史 。 scanf(%d, &no 。 if (no = -1 return 。 data*len.no = no 。 scanf(%s %lf %lf %lf %lf %lf, name, &english, &math, &computer,&zheng,&li。 mark_ave=(english+math+c

19、omputer+zheng+li/5.0。 mark_tot=english+math+computer+zheng+li。 pos = 0。 while (datapos.mark_ave & (pos pos +。 for (i = *len-1 。 i = pos。 i- datai+1 = datai 。 datapos.no = no。 strcpy(datapos.name, name。 datapos.english = english 。 datapos.math = math。 puter = computer 。 datapos.mark_ave = mark_ave 。

20、datapos.mark_tot = mark_tot 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 17 页个人资料整理仅限学习使用 (*len+ 。 goto lab。 /*-搜索子程序 -*/void find(STUDENT *data, int len int find_no, result 。 int i。lab: result=0。 printf(%sn, 请输入需要查找的学生的学号,退出当前菜单请输入 -1. 。 scanf(%d, &find_no。 if (find_no = -1 return 。 /*exi

21、t the fine sub program*/ while( dataresult.no != find_no & result result +。 if (result = len printf(%sn, 未查询到相关信息 。 goto lab。 else system(cls 。 printf(%sn, 查询信息如下:。 for (i =0 。 i putchar(=。 putchar(n。 printf(%8s, 学号 。 printf(%8s, 姓名 。 printf(%8s, 英语 。 printf(%8s, 数学 。 printf(%10s, 计算机 。 printf(%8s,

22、政治 。 printf(%8s, 历史 。 printf(%12s, 平均分 。 printf(%10s, 总分 。 putchar(n。 printf(%8d, dataresult.no。 printf(%8s, dataresult.name 。 printf(%8.1lf, dataresult.english。 printf(%8.1lf, dataresult.math。 printf(%8.1lf, puter。 printf(%8.1lf, dataresult.zheng。 printf(%8.1lf, dataresult.li。 printf(%12.1lf, datar

23、esult.mark_ave。 printf(%10.1lf, dataresult.mark_tot。 putchar(n。 for (i =0 。 i putchar(=。 putchar(n。 goto lab。 /*- 删除子程序 -*/ void delete_item(STUDENT *data, int *len 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 17 页个人资料整理仅限学习使用 int no, i, pos。lab: pos=0。 printf(%sn, 输入需要删除的学生的学号,退出当前菜单请输入-1.

24、 。 scanf(%d, &no 。 if (no = -1 return 。 while( (datapos.no != no & (pos pos = pos +1。 if (pos = *len printf(%sn, 未找到需要删除的学生。 goto lab。 else for (i = pos+1 。 i datai-1 = datai 。 *len = *len -1 。 if (*len = 0 printf(%sn, 没有任何记录,请按回车键返回.。 getchar(。 getchar(。 return。 goto lab。 /*-统计子程序 -*/ void stat(STU

25、DENT *data, int len int i,j 。 double sum=0。 while(1 printf( 输入 1 统计某生的总分及平均分.输入 2 求该门课程的总平均分.输入 3 返回 n 。 scanf(%d,&i 。getchar(。 switch(i case 1: find(data, len 。 break。 case 2: sum=0。 printf( 请输入课程号(1.英语 ,2.数学 ,3计算机 ,4 政治 ,5 历史 n。 scanf(%d,&j 。 for(i=0 。i if(j=1 sum=sum+datai.english 。 if(j=2 sum+=d

26、atai.math 。 if(j=3 sum+=puter 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 17 页个人资料整理仅限学习使用 if(j=4 sum+=datai.zheng 。 if(j=5 sum+=datai.li 。 printf( 该门学科的总平均分为%fn,sum/(doublelen 。 break。 case 3: return 。 /*- 排序子程序 -*/ void sort(STUDENT *data, int len int i,j,k 。 STUDENT temp 。 for (i=0 。

27、i for (k=i, j=i+1 。 j if (datak.mark_ave dataj.mark_ave k=j。 if (k != i temp = datai 。 datai = datak 。 datak = temp 。 /*-显示信息子程序-*/ void paint( int i。 system(cls 。 printf(%43sn, 菜单 。 for (i = 0 。 i putchar(=。 putchar(n。 printf(n 。 printf( t*n。 printf( t* 这是一个 *n 。 printf( t* 学生成绩管理程序 *n 。 printf( t*

28、 可以对学生成绩管理 *n 。 printf( t* 欢迎使用程序管理 *n 。 printf( t*n。 printf(n 。 printf( 1 输入 n 。 printf( 2 插入 n 。 printf( 3 按学号查找 n 。 printf( 4 按学号删除 n 。 printf( 5 统计 n 。 printf( 6 按平均分排序 n 。 printf( 7 保存到文件 n 。 printf( 0 退出 n 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 17 页个人资料整理仅限学习使用 for (i = 0 。 i p

29、utchar(=。 putchar(n。 printf(%sn, 请输入各操作对应的序号:。 void save(STUDENT *data, int len/将数据保存到文件 int i。 FILE *fp 。 fp=fopen( 成绩统计表 .txt,w 。 fprintf(fp,%8s, 学号 。 fprintf(fp,%8s, 姓名 。 fprintf(fp,%8s, 英语 。 fprintf(fp,%8s, 数学 。 fprintf(fp,%10s, 计算机 。 fprintf(fp,%12s, 平均分 。 fprintf(fp,%10sn, 总分 。fprintf(fp,=n。 p

30、utchar(n。 for (i = 0 。 i fprintf(fp,%8d, datai.no。 fprintf(fp,%8s, datai.name。 fprintf(fp,%8.1lf, datai.english。 fprintf(fp,%8.1lf, datai.math。 fprintf(fp,%10.1lf, puter。 fprintf(fp,%12.1lf, datai.mark_ave。 fprintf(fp,%10.1lfn, datai.mark_tot。 fprintf(fp,=n。 fclose(fp 。 printf( 文件已保存到成绩统计表 .txt 。 ge

31、tchar(。getchar(。 /*- 主程序 -*/ void main( STUDENT dataMAXN。 int len = 0 。 char ctrl_ch。 paint(。 scanf(%c, &ctrl_ch 。 while (ctrl_ch != 0 switch(ctrl_ch case 1: input(data, &len 。 break。 case 2: insert(data, &len 。 break。 case 3: find(data, len 。 break。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 17 页个人资料整理仅限学习使用 case 4: delete_item(data, &len 。 break。 case 5: stat(data, len。 break。 case 6: sort(data, len。 break。 case 7: save(data, len。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 17 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号