版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计基本方法讲解软件开发成功的重要前提2规划(对系统进行分析)(一)准确理解题目要求3要做什么?实现什么功能?理解题目要求,系统应该有什么样的运行过程用文字(辅以图形)描述清楚基本功能处理什么数据?各种数据分类描述清楚文字(辅以图形)写清楚有什么信息要处理标出哪些数据是需要输入的标出哪些数据是需要输出的有哪些关键处理?如果需要计算,计算方法(或公式)是什么如果需要排序、检索,依据是什么(二)表示和定义数据4采用C语言基本数据结构
结构:用以表示具有关联的一组数据,比如一个企业员工,他的姓名、年龄、电子邮件等信息;
数组:存储多个对象、实体,比如结构数组,每个数组元素表示一个企业员工;
链表:和数组作用类似,存储多个对象,添加、删除对象等操作比较灵活;
文件:把对象数据保存到磁盘上,比如企业所有员工的个人信息存成一个数据文件。辅助用的数据结构比如排序,可能要用到辅助链表或数组(三)结构化设计5确定功能模块和调用关系
可按照调用的层次组织,主程序调用大的模块,大的模块又调用小的模块,形成一种清晰的功能拆分关系;
画出功能模块层次图,并对每个模块实现的功能和方法给出文字描述。自顶向下逐个模块编码主程序/主界面功能模块子功能模块更小的子功能模块直到实现到最末端的细节功能为止自顶向下设计的形式主程序功能1功能2功能3功能4功能5子功能3.1子功能3.2子功能3.1.1子功能3.1.2子功能3.1.36自顶向下设计的代码示例int
main(int
argc,
char**argv){/*主函数*/while(true){DisplayMenu();/*菜单*/ReadChoice();switch(choice);{case
0:FunctionA();break;case
1:FunctionB();break;……}}}/*再来设计子功能函数*/FunctionA(){……FunctionA-1();/*调用子功能*/……FunctionA-2();/*调用子功能*/……}/*细化子功能*/FunctionA-1(){……FunctionA-1-1();/*下一级*/……}(四)编码的要求8锯齿型程序书写格式子代码块相对于上一级代码块,要有正确的缩进,美观,易读性好要有注释代码语句实现的功能或者采取的方法要有注释函数要说明函数实现的功能;每个函数参数表示的意义;返回数据的类型和意义实例讲解9题目二十二:校际运动会管理系统(一)理解题目10题目二十二:校际运动会管理系统问题描述:初始化输入:N-参赛学校总数,M-男子竞赛项目数,
W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;取前3名:第1名得分5,第2名得分3,第3名得分2;用户自定义:各名次权值由用户指定。由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。从题目描述可得系统运行过程参赛学校女子项目男子项目初始化输入成绩输入项目名次名次策略成绩统计系统数据(项目-学校-名次)名次数据(名次-对应分数)(按学校统计)团体总分(男子总分+女子总分)查询学校信息比赛项目信息总分数据11从运行过程可得系统主要功能12系统运行时输入初始化参数,包括参赛学校、男子项目、女子项目的数目和信息;设定名次分值方案;初始化完成后,提供菜单选项:录入各比赛项目的名次;查询各校的团体总分;查询学校信息;查询比赛项目信息;其中,录入比赛名次,要求每一个比赛项目,都能录入其前N名每一名次由哪家学校获得;查询学校信息,要求输出该学校基本信息外,还输出它的团体总分;查询比赛项目,要求输出该项目基本信息外,还输出该项目前N名分属什么学校;自动统计功能:要求录入各个比赛项目的各名次获得者后,根据名次和分值的对应关系,自动统计每个学校的团体总分。从运行过程可得系统主要数据13参赛学校信息:学校数量,各校名称等;男子项目信息:项目数量,各项目名称等;女子项目信息;项目数量,各项目名称等;名次和分值的对应信息:前多少名可得分,各次得多少分;名次信息:某个项目的前N名分别是哪个学校;团体总分信息:假设按学校统计,并且男队和女队一起组成团体总分,则计算方法为该学校的男队和女队分别在各项目中获得的名次折算(对应)成分数,然后求和。确定数据的来源14直接输入的数据:参赛学校信息;男子项目信息;女子项目信息;名次和分值的对应信息;名次信息。系统自动计算所得数据:团体总分。后续设计可据此规划,凡是需要用户输入的数据,都需要提供功能菜单和相应输入界面;自动计算的数据,则需要提供独立的功能模块或者函数进行计算。关键的计算方法(公式)15主要是统计学校的团体总分
每个比赛项目,不管是男子项目还是女子项目,都有个名次表,比如第一名是哪个学校,第二名是哪个学校;
每个名次都对应一个分值,比如第一名得5分,第二名得3分等,分值和名次对应关系初始化时由用户确定;
某校在所有比赛项目中取得的有效名次对应的分数总和,即为团体总分。
例,某校男子标枪得第一名(5分),女子铁饼得第二名(3分),女子跳远得第一名(5分),其它各比赛项目均未获得有效名次,则该校团体总分5+3+5=13(二)表示和定义主要数据编号学校校名多个学校如何表示?通过数组int
school_num;/*全局变量,学校数,由初始化决定*/stird,uncamtehead24个学ne校x校t
*/school
isd,cnhahmeools[24]id;,n/am*e
最多通过链表学校1next
next学校2
学校3①16编号女子项目名称多个项目如何表示?通过数组int
women_item_num;/*全局变量,女子项目数,由初始化决定*/struct
women_itemwomen_items[24];/*最多24个女子比项目*/②17编号男子项目名称多个项目如何表示?通过数组与前类似,略。通过链表与前类似,略。③18名次名次分值分值④多个名次分值如何表示?通过数组int
rank_score_num;/*全局变量,前
N名可以获得分数,由初始化决定*/struct
rank_scorerank_scores[24];/*比 项目最多允许前24名获得分数*/初始化时,选择方案1或方案2,程序内定19项目编号比名次项目类型名次表⑤结构中,rank_table为整型指针,指向一个动态分配的整型数组,数组的长度为
rank_score_num,即如果前N名可以得分,此数组长度就是N,数组元素存储学校的编号,表示第几名被哪个学校获得。上述为单个比 项目的名次结构,各个比20名次链表示意图项目编号;项目类型(男/女);名次表(数组):headnext比赛项目1第一名学校编号第二名学校编号第三名学校编号……项目编号;项目类型(男/女);名次表(数组):next第一名学校编号第二名学校编号第三名学校编号……注意:名次输入以选择为主,如列出所有比赛项目供选择,选择一个项目后,程序内部自然知道他的编号和类型,然后允许用户依次选择第一名是哪个学校,第二名是哪个学校,以此类推。比赛项目221学校编号团体总分团体总分⑥团体总分由系统自动统计获得,不是直接输入的数据。多个学校如何表示表示?通过数组int
school_num;/*在学校初始化时已定义*/struct
team_score
team_scores[24];22(三)结构化设计主程序初始化成绩录入成绩统计查询计算每个学校在每个项目上得分,得分依据是名次方案,求和得团体总分添加男子项目添加女子项目设定名次方案选择名次方案自定义方案选择比赛项目分别输入该项目第1,2,…N名是哪个学校,这前N名学校可以获得分数查询某校团体总分查询学校信息;比赛项目信息功能拆分和调用关系添加参赛学校23结果-各比项目的名次*/int
main(int
argc,
char**argv){/*主函数*/Initial();/*初始化*/while(true){DisplayMenu();/*菜单*/choice=ReadChoice();switch(choice);{case
0:ReadRank();/*输入比break;case
1:SearchTeamScore();/*查询团体总分*/……}}}24Initial(){/*初始化*/……ReadSchools();/*录入参学校信息*/项目信息*/ReadManItems();/*录入男子比ReadWomenItems();ReadRankScores();……}DisplayMenu(){/*显示菜单*/……}……25ReadSchools(){while(1){/*输出提示信息*//*自动生成学校编号*//*读入学校名字*//*将新学校添加到学校数组或链表中*//*按ESC返回*/}/*自动统计输入的参赛学校数目*//*返回*/}……26(四)界面问题27
如果用字符界面,要提供按键菜单,如果设计成图形界面菜单更好;
输入的数据,尽量用提供选项的方式,减少击键量,提高界面友好度,比如,输入比赛结果时,先列出所有比赛项目,让用户选一个;然后打印信息,指示当前输入哪一名次的学校,然后列出所有参赛学校,让用户选出获得该名次的学校,而不是直接输入学校名或者学校编号;
查询输出界面,输出查询结果到屏幕后,程序应暂停,并等候键盘按键,用户按任意键后,才返回上层菜单,这样用户才有机会看清楚查询的结果。(五)数据存储的问题(提高)
文件类型:数据对象一般都对应为一个结构,因此用二进制方式创建文件,逐个结构写到文件内即可,例,每个参赛学校都是一个结构体,可把该结构整体写入文件中,各个学校顺序写到磁盘文件;
项目的比赛结果,因为项目的有效名次数目在初始化的时候决定,比赛结果的结构体中,有效名次表只是一个指针,要把项目连同该项目的名次表正确写入磁盘,需要做些额外处理。比如在文件中同时记录结构体大小,否则下次读数据无法正确区分不同的结构体。28系统分析总结29
1.理解题目,整理出系统大概运行过程(文字描述或配图);2.整理出需要的基本功能(文字描述);
3.整理出要处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南某年产20万吨功能性生态肥项目可行性研究报告
- 传媒行业发展前景预测及投资战略研究报告
- 2024年公园垃圾清扫行业市场发展现状及投资战略咨询报告
- 2025年中国非小细胞肺癌靶向药行业市场调研及投资规划建议报告
- 药用辅料项目可行性研究报告
- 2025年中国针织类服装行业市场调研分析及投资战略咨询报告
- 2022-2027年中国生物类似药行业发展监测及投资战略研究报告
- 盐清脆梅项目可行性研究报告
- 中国木制玩具行业市场发展现状及前景趋势与投资分析研究报告(2024-2029版)
- 2025年中国电力线载波通信行业发展监测及投资前景展望报告
- 福建省福州市各县区乡镇行政村村庄村名明细及行政区划代码
- 《高中语文文言断句》一等奖优秀课件
- 上海市中小学生学籍信息管理系统
- (完整版)自动感应门施工方案
- [QC成果]提高剪力墙施工质量一次合格率
- 8站小车呼叫的plc控制
- _ 基本粒子与宏观物体内在联系
- 象棋比赛积分编排表
- 小学赣美版六年级美术上册第二十课向往和平课件(16张)ppt课件
- DPP4抑制剂比较篇PPT课件
- 中药饮片购进验收记录表格模板
评论
0/150
提交评论