




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础(C/C+)课程设计说明书课程名称: 程序设计基础 题目: 成绩处理 姓名: 学号: 教学班号: 指导教师: 兰州交通大学交通运输学院二一三 年 七 月 十八 日程序设计课程设计任务书一题目:成绩处理输入某班级30名同学、姓名、学号以及5门课成绩(随机输入,无论是成绩还是学号不按序输入。考虑用几个数组处理,或用结构体、或用类和对象)程序完成前一步后,通过循环可以不断选择下面的某项功能执行(用提示语句列出菜单,通过读入某变量值,可用switch判断该变量,如接受到1表示执行第一项,依次类推,某项功能执行完可以返回菜单,也可退出系统):1、 按学生查询11 查询某学生某门课成绩(输入学号,输出成绩)12 查询某学生平均成绩(输入学号,输出成绩)13 查询某学生某门课等级(输入学号,输出“优、良、) 2按课程查询21 查询某门课平均成绩(输入课程,输出平均成绩)22 查询某门课及格率(输入课程,输出及格率)33 查询该门课程最小成绩(输入课程,输出姓名、最小成绩)34 查询该门课程最大成绩(输入课程,输出姓名、最大成绩)3 .按班级查询31 查询班级所有课程平均分32 将班级各课程按成绩从小到大输出成绩(一行一门课,行首写明课程名)32 将班级各课程按学号从小到大输出成绩(一行一门课,行首写明课程名)4 .填加课程及学生相应成绩5 .填加学生及相应课程成绩二文档内容要求:1、在做上述每道题目时,正文要求包含4部分内容:1)解题基本思路;2)算法流程框图;3)主要程序源代码;4)总结和体会2、文档装订顺序:1)封面;2)课程设计任务书;3)正文。一 课程设计的目的与要求1 课程设计目的本课程设计是 “C/C+程序设计基础”课程学习的一个关键环节。其加深了对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。本次设计是基于结构化程序设计思想和所用C/C+语言开发环境与工具,并运用“软件工程”和“数据结构”中的有关概念和方法,针对具体设计题和要求,分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用相应功能模块来实现信息和数据处理。本课程设计的目的和任务: 巩固和加深学生对C/C+语言课程的基本知识的理解和掌握; 掌握C/C+语言编程和程序调试的基本技能; 利用C/C+语言进行基本的软件设计,提高实践能力; 掌握书写程序设计说明文档的能力; 提高运用C/C+语言解决实际问题的能力; 采用C/C+设计一个“成绩处理系统”,上机编程、调试并演示该系统中的各功能模块。2 .课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统,内存要求 128MB以上,C/C+语言程序设计及相应的开发环境(如Microsoft Visual C+ 6.0)。3 .课程设计的预备知识熟悉C/C+语言以及C/C+语言开发工具。4 .课程设计要求 分析课程设计题目的要求 写出详细设计说明 编写程序代码,调试程序使其能正确运行 设计完成的软件要便于操作和使用 设计完成后提交课程设计报告二 解题基本思路1数据结构设计及用法说明本次课程设计采用结构程序设计,在总体设计阶段采用自顶向下逐步求精的方法,可以把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。在详细设计或编码阶段采用自顶向下逐步求精的方法,可以把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。使用结构程序设计技术主要有下述一些好处:. 自始至终逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。. 用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。. 程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。2.程序结构(流程图)各模块的功能及程序说明:该成绩处理系统主要由学生成绩的输入、查询、成绩处理等模块组成。成绩查询模块主要完成的是学生成绩的查询功能。在查询模块中,学生输入相应的学号、姓名以及密码后,可以按照学生,课程以及班级根据选择提示,查询相应要求的成绩,确定后便可以看到相应学生的成绩明细。成绩的管理模块。主要是包括添加、排序及计算总分和平均分等四个部分。对成绩添加模块中,包括增加课程和学生两部分。成绩的计算总分及平均分模块。根据学生输入的各科成绩,计算出相应的总分及平均分。成绩的排序模块。按学生的总分及平均分,以升序或降序的顺序对学生的名次进行排序功能。该系统中,只有具有管理员权限的人员能够进行学生成绩的录入、计算总分及平均分、排序查找等的全部功能。非管理员只具有查询的功能。三、 主要程序源代码:#include#includeusing namespace std;#define MAX_NAME_LEN 30#define COURSE1_NAME 课程1#define COURSE2_NAME 课程2#define COURSE3_NAME 课程3#define COURSE4_NAME 课程4#define COURSE5_NAME 课程5typedef struct tagSTUDENT unsigned int uNo; char szNameMAX_NAME_LEN; float fCourse1; float fCourse2; float fCourse3; float fCourse4; float fCourse5; float fAvg; float fTotal; tagSTUDENT() memset(this,0,sizeof(tagSTUDENT); STUDENT,*LPSTUDENT;class CStudentprivate: STUDENT m_stu; static int m_iTotal;/学生总人数 static int m_iCourse1TotalPass; static int m_iCourse2TotalPass; static int m_iCourse3TotalPass; static int m_iCourse4TotalPass; static int m_iCourse5TotalPass;static float m_fCourse1MinScore;static float m_fCourse2MinScore; static float m_fCourse3MinScore; static float m_fCourse4MinScore; static float m_fCourse5MinScore; static char m_szNameOfMinScore5MAX_NAME_LEN; static float m_fCourse1MaxScore; static float m_fCourse2MaxScore; static float m_fCourse3MaxScore; static float m_fCourse4MaxScore; static float m_fCourse5MaxScore; static char m_szNameOfMaxScore5MAX_NAME_LEN; static float m_fCourse1TotalScore;static float m_fCourse2TotalScore; static float m_fCourse3TotalScore; static float m_fCourse4TotalScore; static float m_fCourse5TotalScore;public: CStudent(unsigned int no,char * name,float c1,float c2,float c3,float c4,float c5) if( c1 100.0f |c2 100.0f |c3 100.0f |c4 100.0f |c5 100.0f ) throw 分数有误; m_iTotal+; m_stu.uNo = no; strcpy(m_stu.szName,name); m_stu.fCourse1 = c1; m_stu.fCourse2 = c2; m_stu.fCourse3 = c3; m_stu.fCourse4 = c4; m_stu.fCourse5 = c5; m_stu.fTotal = c1 + c2 + c3 + c4 + c5; m_stu.fAvg = m_stu.fTotal / 5; if(m_fCourse1MinScorec1) m_fCourse1MinScore=c1; strcpy(m_szNameOfMinScore0,name); if(m_fCourse2MinScorec2) m_fCourse2MinScore=c2; strcpy(m_szNameOfMinScore1,name); if(m_fCourse3MinScorec3) m_fCourse3MinScore=c3; strcpy(m_szNameOfMinScore2,name); if(m_fCourse4MinScorec4) m_fCourse4MinScore=c4; strcpy(m_szNameOfMinScore3,name); if(m_fCourse5MinScorec5) m_fCourse5MinScore=c5; strcpy(m_szNameOfMinScore4,name); if(m_fCourse1MaxScorec1) m_fCourse1MaxScore = c1; strcpy(m_szNameOfMaxScore0,name); if(m_fCourse2MaxScorec2) m_fCourse2MaxScore = c2; strcpy(m_szNameOfMaxScore1,name); if(m_fCourse3MaxScorec3) m_fCourse3MaxScore = c3; strcpy(m_szNameOfMaxScore2,name); if(m_fCourse4MaxScorec4) m_fCourse4MaxScore = c4; strcpy(m_szNameOfMaxScore3,name); if(m_fCourse5MaxScore=60.0f) m_iCourse1TotalPass+; if(c2=60.0f) m_iCourse2TotalPass+; if(c3=60.0f) m_iCourse3TotalPass+; if(c4=60.0f) m_iCourse4TotalPass+; if(c5=60.0f) m_iCourse5TotalPass+; m_fCourse1TotalScore += c1; m_fCourse2TotalScore += c2; m_fCourse3TotalScore += c3; m_fCourse4TotalScore += c4; m_fCourse5TotalScore += c5; bool QueryCourseScore(int course) static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static float *coursesScore=&m_stu.fCourse1,&m_stu.fCourse2,&m_stu.fCourse3,&m_stu.fCourse4,&m_stu.fCourse5; if(course=sizeof(szCourses)/sizeof(char*) return false; couttszCoursescourse:*coursesScorecourseendl; return true; unsigned int GetNo()return m_stu.uNo; void QueryAvg() coutt平均分:m_stu.fAvgendl; static void PrintCourses() cout=n t 1 COURSE1_NAMEn t 2 COURSE2_NAMEn t 3 COURSE3_NAMEn t 4 COURSE4_NAMEn t 5 COURSE5_NAMEn =n; bool QuerygGrade(int course) static char * szGrade=优,良,中,差,不及格; static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static float *coursesScore=&m_stu.fCourse1,&m_stu.fCourse2,&m_stu.fCourse3,&m_stu.fCourse4,&m_stu.fCourse5; if(course=sizeof(szCourses)/sizeof(char*) return false; int i=4; if(*szCoursescourse=90) i=0; else if(*szCoursescourse=80) i=1; else if(*szCoursescourse=70) i=2; else if(*szCoursescourse=60) i=3; couttszCoursescourse:szGradecourseendl; return true; float GetScore(int course) static float *coursesScore=&m_stu.fCourse1,&m_stu.fCourse2,&m_stu.fCourse3,&m_stu.fCourse4,&m_stu.fCourse5; return *coursesScorecourse; static void PrintCourseAvg(int course) static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static float *totalScore=&m_fCourse1TotalScore,&m_fCourse2TotalScore,&m_fCourse3TotalScore,&m_fCourse4TotalScore,&m_fCourse5TotalScore; if(m_iTotal =0) throw 无学生成绩信息; couttszCoursescourse平均成绩:*totalScorecourse/m_iTotalendl; static void PrintCoursePassedPercent(int course)/及格率 static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static int *totalPass=&m_iCourse1TotalPass,&m_iCourse2TotalPass,&m_iCourse3TotalPass,&m_iCourse4TotalPass,&m_iCourse5TotalPass; if(m_iTotal =0) throw 无学生成绩信息; couttszCoursescourse及格率:*totalPasscourse*100/m_iTotal%endl; static void PrintCourseMinScore(int course) static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static float *minScore=&m_fCourse1MinScore,&m_fCourse2MinScore,&m_fCourse3MinScore,&m_fCourse4MinScore,&m_fCourse5MinScore; if(m_iTotal =0) throw 无学生成绩信息; couttszCoursescourse最低分:*minScorecourset学生名字:m_szNameOfMinScorecourseendl; static void PrintCourseMaxScore(int course) static char *szCourses=COURSE1_NAME,COURSE2_NAME,COURSE3_NAME,COURSE4_NAME,COURSE5_NAME; static float *maxScore=&m_fCourse1MaxScore,&m_fCourse2MaxScore,&m_fCourse3MaxScore,&m_fCourse4MaxScore,&m_fCourse5MaxScore; if(m_iTotal =0) throw 无学生成绩信息; couttszCoursescourse最高分:*maxScorecourset学生名字:m_szNameOfMaxScorecourseendl; ;int CStudent:m_iTotal=0;/学生总人数int CStudent:m_iCourse1TotalPass=0;/课程1及格人数int CStudent:m_iCourse2TotalPass=0;int CStudent:m_iCourse3TotalPass=0;int CStudent:m_iCourse4TotalPass=0;int CStudent:m_iCourse5TotalPass=0;float CStudent:m_fCourse1MinScore=100.0f;float CStudent:m_fCourse2MinScore=100.0f;float CStudent:m_fCourse3MinScore=100.0f;float CStudent:m_fCourse4MinScore=100.0f;float CStudent:m_fCourse5MinScore=100.0f;float CStudent:m_fCourse1MaxScore=0.0f;float CStudent:m_fCourse2MaxScore=0.0f;float CStudent:m_fCourse3MaxScore=0.0f;float CStudent:m_fCourse4MaxScore=0.0f;float CStudent:m_fCourse5MaxScore=0.0f;float CStudent:m_fCourse1TotalScore=0.0f;float CStudent:m_fCourse2TotalScore=0.0f;float CStudent:m_fCourse3TotalScore=0.0f;float CStudent:m_fCourse4TotalScore=0.0f;float CStudent:m_fCourse5TotalScore=0.0f;char CStudent:m_szNameOfMinScore5MAX_NAME_LEN=0;char CStudent:m_szNameOfMaxScore5MAX_NAME_LEN=0;vector vstu;void show_usage() cout=n 1 按学生查询n 2 按课程查询n 3 按班级查询n 4 添加学生成绩n 0 退出n =n;typedef void (*USAGE_FUN)();int get_user_sel(USAGE_FUN f,int min_sel,int max_sel) f(); int sel; coutsel; while(sel max_sel) cout输入有误,请重新输入:n; f(); coutsel; return sel;void add_stu_score() unsigned int no; char nameMAX_NAME_LEN=0; float c1,c2, c3, c4, c5; coutno; coutname; cout输入COURSE1_NAMEc1; cout输入COURSE2_NAMEc2; cout输入COURSE3_NAMEc3; cout输入COURSE4_NAMEc4; cout输入COURSE5_NAMEc5; vstu.push_back(CStudent(no,name,c1,c2,c3,c4,c5);void show_usage_cource() cout=n 1 查询平均成绩n 2 查询及格率n 3 查询课程最小成绩n 4 查询课程最大成绩n =n;void show_usage_student() cout=n 1 查询学生某门课成绩n 2 查询学生平均成绩n 3 查询学生某门课等级n =n;CStudent* get_stu(unsigned int no) for(unsigned int i=0;ivstu.size();i+) if(vstui.GetNo() = no) return &vstui; return NULL;int main(int argc,char * argv) int sel=0; try while(se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新版停薪留职合同2篇
- 新解读《GB-T 32621-2016社会保险经办业务流程 总则》
- 宅基买卖合同范本
- 购买app服务合同范本
- 装修合同范本弄丢了
- 煤球厂租赁合同范本
- 修剪绿化合同范本
- 体育教练兼职合同范本
- 大额物业维修合同范本
- 内账会计合同范本
- 个人防水补漏协议
- 作文格子稿纸800字-A4打印版
- DFMA设计制造可行性分析检查表范例
- 大象版五年级上册《科学》全一册全部课件(共25课时)
- 变电站二次电缆及回路编号
- 大学美术鉴赏(第2版)PPT完整全套教学课件
- 2023年放射科护理质量与安全管理计划汇编6篇
- 结算合同合同
- 领导干部经济责任审计
- 电子科技大学微积分上册
- 压力弹簧力度计算器及计算公式
评论
0/150
提交评论