版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件课程设计指导书华中科技大学光电子科学与工程学院徐海峰 张南洋生 蒋明崔晟目录....2....5....6....6....9....114HUST....14....16....1822个人资料整理 仅限学习使用蒋明:jm_china@263.net徐海峰:harryxhf@张南洋生:zny371@崔晟:bitartcs@第一部分 软件课程设计基础知识1、C语言知识点总结语言的基础,包括变量、程序控制、输入输出、调试环境等。语言的文件操作知识复习。<详细见参考材料:“ C语言程序设计――输入输出和文件系统”)语言应用程序的一般结构应用目录结构应用目录应用目录子结构子结构头(操作函数>(功能>文实现文件实现件主文件2、数据结构简介数据结构是计算机与信息管理等相关专业的核心课程,是学习软件编程、研读优秀实用代码的基础。涉及如何对数据进行组织、存储和运算,是提高计算 <算法)效率的重要手段。二叉树基础:简单的基本数据结构之一,在数据操作方面具有一定优势。二叉树节点的定义:Structtree{ 左节点 数据 右节点charinfo。structtree*left,*right。}3、软件工程简介软件生命周期--定义、开发、维护。详细划分为定义阶段的可行性论证与开发计划、需求分析,开发阶段的概要设计、详细设计和编码,维护阶段的测试、运行维护 (6或7阶段>。个人资料整理 仅限学习使用第二部分 总体要求【设计目的】基于C语言的基础,熟练运用结构体等扩展数据手段,定义应用数据、并进行运用。要求掌握数据的存储结构、数据操作与编程调试的实践要求,完成编程实践的实现、应用方法。【设计要求】根据题目要求及指导内容,独立完成所选的软件设计题目。【进度安排】课程设计分基础讲解、题目选择、编程与调试、报告编写等过程。选择好题目后,前 2周完成设计规划及技术准备;后 2周完成编程、调试、结果输出,报告编写。【开发环境】C语言集成开发软件:TurboC。BORLANDC++,VISUALC++6.0【评价标准】软件课程设计的 评分标准包括中期作业 <20%)和最终课程设计报告 <80%)两部分。第2周末中期提交内容:课程设计小组成员安排 <每个小组最多为 2人,需要说明各自在软件设计中的分工),从文件读写数据功能的实现,链表数据结构的实现 <选作)。第 4周末结题内容: 含运行文件,源程序代码、设计报告的电子文档 <注意保存到以自己“学号+名字”命名的文件夹,文档以“姓名 +软件课程设计报告”命名),设计报告的打印稿 。以上两项工作提前完成者可先交给老师。课程设计结束后每个班级学习委员集中收齐电子档以及未提前交的纸质报告,统一放在以自己班级名命名的文件夹内,再提交给老师。提交的课程设计报告,应包括①小组成员组成及分工说明 <程序、文档各部分分别由谁完成或共同完成);②概要设计、详细设计说明,程序功能图和流程图等;③程序测试截图及说明;④开发日志及编程体会;⑤程序清单。根据各项表现进行综合评价。1、程序各模块功能图及主要流程图、源程序注释是否标准与完整。2、程序测试结果。3、开发日志,开发体会是否真实、恰如其分。4、是否有算法改进策略及新意。第三部分 设计题目每位同学选择下述任一题目进行设计,每题的要求见下面的具体要求所述。个人资料整理 仅限学习使用通讯录管理系统飞机票销售系统二叉树的查找HUST学生成绩管理系统通讯录管理系统【设计题目】通讯录管理系统【设计目的】利用“结构体”、“数组”、“链表”或“类”、实现通讯录管理系统的数据结构,实现通讯录的按不同“关键字”的排序、查找、加入、删除以及文件加密及存储算法编程。【题目要求】掌握常用的字符串函数使用方法,以及快速排序、查找算法, 利用“结构体”、“数组”或“链表”实现联系人信息的表示和相关操作。如果有能力应了解 C++面向对象的编程方法,利用“类”的概念实现算法编程 <可获得加分)。能够编写 DOS下的命令菜单,或在VisualC++环境下应用CDialog类实现Windows下的图形用户界面<GUI)。掌握文件的建立、存储和读取方法,以及一些简单的文件加密和解密算法。【设计内容】1)、结构简介数据输入数据加密/数据输出解密屏幕显示打印报表编辑检索
联系人信息存储文件
系统维护条件查询编辑修改
用户管理数据备份数据恢复日志文件个人资料整理 仅限学习使用系统整体结构如下,包括数据输入、数据加密 /解密、数据输出、系统维护和编辑检索五大模块。数据输入负责联系人信息的输入。数据加密/解密模块负责联系人信息存储和读取时的加密/解密。数据输出模块负责联系人信息的显示<人数较多时要分页显示)或打印。编辑检索模块负责按不同关键字<如“姓名”,“电话”)的联系人查询,以及对已有联系人信息的修改和编辑。系统维护模块负责用户管理,即用户名、用户密码口令的管理,以及联系人信息文件的备份和恢复,并生成系统的日志文件<记录某某用户在某某时刻登陆进入系统)。2)、功能定义<1)、通讯录中每一联系人信息至少包括姓名,电话,地址/单位,并可进行联系人分类管理,具体分类可以由用户自由定义<如家人、同事、同学、黑名单等等)。<2)、输入功能:可以一次完成若干联系人信息的输入。<3)、排序、查找功能:完成按不同关键字对联系人进行排序和查找的功能,如按姓名、电话号码排序和查找。<4)、显示功能:能够按照一定顺序显示所有符合要求的联系人的信息 <如按照姓名的第一个字母顺序显示所有“家人”的信息)。<5)、删除功能:按关键字 <如联系人姓名或电话号码)查找并删除联系人。<6)、文件的存储和读取功能:能够将联系人记录以文件的形式存储在硬盘上 <如contact.dat),并自动读取或修改。<7)、用户管理功能:用户名,用户密码的管理。用户必须利用秘密登陆后方能看到相关联系人的信息。如果存在多个用户要求各自互不影响,并只能处理和显示看到自己相关联系人的信息。具体实现可以采用如下方式:首先将用户名和密码记录存储在硬盘一个独立文件中 <例如user.dat),并进行加密。用户需要登陆时通过对话框输入其用户名和密码,程序根据此信息自动打开并在文件中进行字符串的比较和查找,以判断是否存在相应记录,如果存在则进入程序并执行各种功能,如果不存在则自动退出程序。注意由于不同用户对应有不同的联系人记录文件<如user1对应联系人记录文件为 contact1.dat,user2对应联系人记录文件为 contact2.dat等等),程序应根据用户名判断其所对应的联系人记录文件。<8)、文件的加密和解密:用户可以使用系统主菜单中的密码设置功能设置自己的密码,以后启动程序输入正确的秘密后方可看到联系人的相关信息。<9)、数据的备份和恢复:能够对存储文件进行备份,并在不同计算机间转移,恢复联系人信息。具体实现可以采用如下方式:程序设计时应保证用户文件和联系人记录文件存储在应用程序所在目录下,以便不同计算机上的程序都能找到并读取相关文件。个人资料整理<10)、日志文件:日志文件是一个独立的文件,一般可以采用
仅限学习使用txt文件格式,每次用户登陆时,程序应自动读取计算机当前时间,并以字符串的形式写入日志文件。要求每行只有一个记录,例如:Xxx,2007/8/31,19:20登陆Yyy,2007/8/30,7:20登陆<11)、应提供命令行或图形界面来调用各个功能。3)、数据定义联系人信息<可以增加但不能减少)姓名Xxx
电话187543355
电话213871542345
E-mailwc@
地址南五楼
314
组别同学/同事/家人/黑名单
重要级别高/中/低4)、参考算法折半查找、选择排序、冒泡排序等基本算法以及简单的加密算法。飞机票销售系统【设计题目】飞机票销售系统【设计目的】运用C语言基本知识,结合相关算法思想和数据结构,编写一个单微机系统下运行的飞机票销售系统。以把所学C语言和数据结构知识应用到实际软件开发中去。通过完成本设计,复习C语言的基本知识,掌握C语言的文件操作<包括从磁盘读入和向磁盘写入内容),能够熟练运用结构等高级数据类型以及函数的调用等,掌握数据结构的一些基本算法思想;并通过程序设计和开发过程,掌握中小规模软件设计和开发的方法和步骤。【题目要求】1)、知识点根据题目要求需要设计者掌握以下 C语言知识点:<1)C语言基本知识掌握基本数据类型,基本输入输出,控制结构,数组,指针等内容。<2)高级数据类型掌握运用结构,联合等构造数据类型。<3)文件操作掌握二进制文件和文本文件的输入输出,保存,修改等操作。个人资料整理 仅限学习使用2)、训练内容本课题要求设计实现一个飞机票销售系统。通过模拟售票员使用该飞机票销售系统售票过程,训练采用结构化程序设计方法完成小型软件的开发能力。售票员在该系统辅助下完成售票的过程描述如下:售票员根据旅客要求对航班的信息进行查询,在航班有票的情况下售出机票,并记录机票销售信息到机票销售记录文件;当旅客要求退票时,查询机票销售记录文件,找到需退票的机票记录,完成退票操作。根据上述过程,要求同学们从中提取有意义的销售信息,例如航班信息、旅客个人信息等并采用一定的结构数据类型加以描述并进行处理操作,实现售票过程的模拟。本课题设计分为三个步骤:①结合实际情况收集并设计航班和旅客描述信息;分析模拟售票过程,完成系统功能模块划分,采用C/C++语言编写程序实现飞机票销售系统;对设计过程进行总结,提交最终设计报告和源文件。通过完成系统设计过程应掌握以下知识和技能:①软件设计的基本流程:需求分析、模块功能划分以及数据结构的描述和算法的设计实现;②基于一定数据结构<链表、顺序表等)的查询、插入、删除等操作的实现算法;③通过数据文件<二进制文件或文本文件)实现具有一定数据结构的数据信息的存储方法。程序源文件应书写规范,源程序需加必要的注释,每位同学需提交可独立运行的软件并能完成功能演示;所提交设计报告书,应在格式和内容上符合课程设计的要求。【设计内容】1)、结构简介根据单微机系统下飞机票销售系统的模拟售票过程,所设计系统应基本具有以下功能模块。如下图1.1所示。图1.1系统基本结构简图飞机票销售系统应包含航班信息查询、机票购买、机票信息查询和机票退购四个基本模块。2)、功能定义根据利用系统进行飞机票销售的模拟过程,系统模块应分别实现以下功能。<1)航班信息查询:提供航班查询信息输入,如航班号,目的地,起飞时间;利用输入的查询信息在现有的航班信息文件中,查询符合条件的查询信息;显示查询结果在屏幕上,包括该航班机票剩余数目。航班信息数据存储在航班信息数据文件中,数据结构、具体数据结合实际自定,自行设计查询算法。<2)机票购买:根据查询信息,确认是否有票;若有票,输入机票信息需要的旅客资料,如姓名,性别等,生成机票编号;显示待售机票信息;售出机票后,记录机票信息到售出机票数据文件;修改航班信息数据文件中相应航班的机票剩余数目。机票信息数据存储在机票信息数据文件中,数据结构、具体数据结合实际自定。<3)机票信息查询:提供机票查询信息输入,如旅客姓名,机票编号,航班号等;利用查个人资料整理 仅限学习使用询条件,在机票信息数据文件中查找售出机票信息;显示查询结果在屏幕上。<4)机票退购:根据查询结果,在确认机票退购后,删除机票信息数据文件中的退购机票信息;修改航班信息数据文件中相应航班的机票剩余数目。3)、数据定义根据以上功能说明,飞机票销售系统的包含两个主要数据结构航班信息和机票信息。具体如下。航班信息主要包含数据项如下表 1.1所示,同学可以在此基础上根据个人理解另行增加信息数据项。具体实现可以用一个结构数据类型来描述。航班信息数据文件应至少包含10个航班信息。表1.1航班信息表航班编号目的地起飞时间剩余机票数最大载客数机票信ZH9658广州09:005200息主要包含GS7546郑州11:4012100数据项如下表1.2所CZ3445重庆17:3523100示,同学可以在此基础上根据个人理解另行增加信息数据项。具体实现也可以用一个结构数据类型来描述。机票信息数据文件应至少包含50条已售出的机票信息。表1.2已售出机票信息表机票编号航班编号目的地起飞时间姓名性别B2102ZH9658广州09:00张三男4)、参考B2107ZH9658广州09:00李四女算法折半查B3122CZ3445重庆17:35王二男找、选择排序、冒泡排序等基本算法。二叉树的查找【设计题目】二叉树的查找--用链表结构实现二叉树建立、查询、打印的源程序【设计目的】基于C语言的基础,熟练运用结构体等扩展数据手段,定义应用数据、并进行运用。本题要求掌握数据的链式存储结构,并编程实践它们的实现、应用方法。【题目要求】以下内容中,(1>、(2>为必做内容,(3>、(4>两项内容选做一项。<1)下面是用链式结构实现二叉树的建立、查询和打印的源程序(见第三部分的设计示例>。读懂上述程序,为程序写出注释,并画出程序的框图<流程图)。<2)请将他们输入计算机,编译、连接并运行。<3)上述程序的数据结构使用C中的结构体类型实现的,请改成用C++中的类实现,并将建立、打印、查询函数改成该类的方法。再编写删除一个结点的方法。<4)编写二叉排序树的前序遍历程序、中序遍历程序和后序遍历程序。基本要求个人资料整理 仅限学习使用要求利用C语言面向过程的编程思想来完成题目要求的设计;突出C语言的函数特征,以多个函数实现每一个子功能;画出功能模块图、程序流程框图;进行简单界面设计,能够实现友好的交互(可选>;具有清晰的程序流程图和数据结构的详细定义;熟练掌握C语言对文件的各种操作。创新要求在基本要求达到后,可进行创新设计,如系统用户进入界面控制,对不同的功能操作提示不同。1>、知识点数据结构中的二叉树定义、操作,结果的输入输出方法。基本C语言功能,结构体、函数定义等。2>、训练内容掌握数据的链式存储;函数运用方法;标准流程书写方法;【设计内容】1>、结构简介首先针对题目要求,进行所需完成功能的划分;主要是针对程序功能的划分,决定所编代码的组成结构。如“二叉树查找”,整个程序包括如下部分。主程序二叉树建立子程序二叉树查询子程序二叉树打印子程序2>、功能定义程序功能包括数据输入、数据处理、数据输出。数据输入、二叉树创建、查询、打印等功能,一体设计并完成人性化的调试界面。主程序输入创建二叉树“先序二叉树”输出询问环节退出3>、数据定义二叉树的定义方法Structtree{charinfo。structtree*left,*right。}4>、参考算法运用递归(原理>方法。
标准定义方法:理解需求—二叉树;按照数据结构—结构体;按照‘程序书写风格’—对齐方式适当的标注个人资料整理 仅限学习使用创建二叉树(初始,单树>do{printf("Enteraletter:">。gets(s>。if(!root>root=create_btree(root,root,*s>。//elsecreate_btree(root,root,*s>。}while(*s>。创建二叉树子树(存在一个初始二叉树,再创建左子树、右子树 >if(info<r->info>create_btree(r,r->left,info>。if(info>=r->info>create_btree(r,r->right,info>。【相关程序设计知识】程序运行环境存储区分配;变量置零;程序调试(1>函数返回值的运用returnR函数/程序运行结果:“Bool”结果,或某个变量结果。函数定义voidprint_btree(structtree*r,intl> //打印二叉树函数{inti。}(2>程序调试的‘提示’插入printf<)的运用;调试的过程,要求简捷、高效,提示信息直观。4HUST学生成绩管理系统【设计题目】HUST学生成绩管理系统【设计目的】对实际问题编写软件进行处理,学会分析待处理问题对象的特性并设计相应的数据结构进行描述,运用C语言程序设计知识,采用链表动态数据结构来组织记录学生成绩信息、采用文件来存储信息,实现一个HUST学生成绩管理系统。通过本课题设计的训练,使同学们在软件设计流程和上机实践技能方面受到较系统和严格的训练,培养良好的程序设计素质。个人资料整理 仅限学习使用【题目要求】本课题要求设计实现一个HUST学生成绩管理仿真系统,要求实现从信息源文件中读取一个班级的学生成绩信息,采用链表存放学生信息;提供课程设置,人员修改、添加、删除、查询,成绩统计等功能;查询或修改后的同学信息可保存回文件。程序设计语言使用编译工具可采用bc++3.1或vc++6.0。
C或/C++,1)、知识点掌握VC++6.0编写多文件C程序;文件的使用,包括从文本文件读取信息,保存结果到文件等操作;掌握链表动态数据结构的使用,包括链表的建立、结点插入、结点删除、以及访问查询等功能。2)、训练内容本课题设计分为三个步骤:①收集整理本院某班的学生成绩信息资料形成信息源文件<文本文件);②编程实现学生成绩管理系统;③完成设计报告。通过这次设计,掌握以下基本软件设计技能:需求分析、功能划分以及数据结构的描述和算法的设计实现;掌握对动态数据结构的操作<链表的建立,结点的增删、插入等操作);实现学生信息输入、信息修改、信息查询、文件存储等信息管理功能。软件课程设计结束时需要上交以下资料:提交电子版本源程序和可独立运行的软件并能完成功能演示,源程序需加必要的注释。执行程序要有功能说明及运行操作说明。提交独立完成的软件设计报告书,要求格式规范、内容充实,包括详细叙述软件功能说明、模块的划分、关键数据结构和算法流程图、程序运行结果截图并附录程序开发日志等内容。评分标准:必须实现文件存取数据功能,90分以上者必须实现链表数据结构组织学生信息功能。程序运行界面简洁清晰。报告内容充实,包含详细开发日志和开发体会。程序代码中加入适当注释,并在程序关键代码处的注释中标注自己姓名。【设计内容】1)、结构简介HUST学生成绩管理系统功能结构示意图如下:个人资料整理 仅限学习使用HUST学生成绩管理系统信信成查统文息息绩询计件文编动输件辑态出读生入成2)、功能定义和要求<1)学生信息从信息源文本文件中读入到系统,也可采用交互方式在程序执行过程中添加或编辑修改学生信息课程设置等内容。<2)本管理系统针对一个班级,同学20名以上,学生成绩信息包含2门课程或更多,可以设定选修课和必修课等特性。<3)成绩查询功能包括按学号或姓名查询某学生成绩 <必备),某课程学生成绩排名 <必备)及优秀和不及格学生统计,同样的功能还可以设计应用于全年级<选做),还可增加其他自行设计的功能<例如查询各班级的排名、几门功课不及格的同学等)。<4)文件保存功能<学生信息编辑修改后保存到信息源文本文件,下次启动本软件系统时可以使用上次修改后的信息)。<5)采用链表来建立内部数据结构,处理一个个班级学生成绩,若采用数组数据结构处理学生信息或成绩信息则评定成绩按乘以难度系数 0.9算。3)、数据定义HUST学生成绩管理系统内部数据信息层次结构如下:学生
1
班级1学生
2课课课课程程程程1212采用二级链表数据结构来保存各班各名学生成绩信息。每个班级的所有学生组成第1级链表,链表上每个结点保存一个同学的信息。学生的功课成绩由第二级链表来保存。展成处理全年级多个班级的信息系统,则要求处理数据集包含上,每名同学课程2门以上。每位学生信息数据结构可参考
302个班以上,每班 10名同学以HUST学生成绩管理实际情况设计 .个人资料整理 仅限学习使用HUST学生信息表学号姓名性别年龄籍贯宿舍课程1课程201101李平7501202王露70数据结构类型定义参考:structcourse // 课程信息数据结构定义{charcoursename[20] 。//课程名floatscore 。// 分数//charflag 。// 课程类别 0 为必修课程//structcourse*next 。//课程链接指针}。
1为选修课程structhuststudent//{
学生结点数据结构定义charid[20] 。// 学号charname[10] 。// 姓名//chardorm 。//宿舍//intage 。// 年龄intcoursenumberstructcoursescore[10]structcourse*score//structhuststudent*next}。structhustclass //{
。//课程数。// 数组方式保存成绩。// 学生成绩链表。// 学生链接指针班级结点数据结构定义intclassindex 。// 班号intstudentnumber 。// 人数structhuststudent*firststudentstructhustclass*next 。//
。// 指向该班学生链表头班级链表指针}。4)、参考算法链表的建立、结点插入、结点删除、查询、排序文件的存取操作【相关程序设计知识】结构,指针,数组,链表等数据结构查询,统计,排序等数据操作处理文件的存取VC++6.0多文件编程个人资料整理
仅限学习使用【参考书籍】VC++6.0编程书籍《标准C语言程序设计及应用》第《数据结构》 第2章,第8章
9章第11章第杨薇薇等编著
3节周纯杰等 华中科技大学出版社高等教育出版社,中山大学出版社《数据结构》第
2章,第
9章
严蔚敏 等编著
清华大学出版社第四部分设计示例1、基本功能分块程序的基本功能分块是,基于题目要求,对所提出的实现要求,按功能划块。其好处是对整个程序的实现内容有完整的限制,并可按此进行程序的函数定义。下图表明程序基本流程组成部分。2、基本功能分块举例开始初始化结束“二叉树操作”题目基本功能分块,如下图所示。3、规范流程图通常根据程序的实现功能的细分,概要设计程序实现的流程图。在详细设计时,同样对功能进行分解并二叉树操作程序数据输入
继续数据输入
二叉树查询
二叉树打印建立二叉树根节点
建立二叉树左子树
建立二叉树右子树
数据输入执行查询用流程图表示。在具体编码时,流程图则是最常用的基本工具。规范的程序流程定义工具,参考
UML
与建模工具(功能划分>、SDL方法与表达工具 (流程方法>。个人资料整理 仅限学习使用开始定义参量,输入变量辅助线运算I条件判断,x=a?N运算I条件判断,x=a?Y显示结果结束4、设计代码举例二叉树的建立、查询和打印的源程序例程如下所示。#include<iostream.h>#include<stdio.h>structtree{charinfo 。structtree*left,*right
。}。structtree*create_btree(structtree*root,structtree*r,charinfo>structtree*search_btree(structtree*root,charkey>voidprint_btree(structtree*r,intl> 。
。
。voidmain(>{chars[100],c,key=''structtree*root=0do{
。。printf("Enteraletter:">
。gets(s>。if(!root>root=create_btree(root,root,*s>
。elsecreate_btree(root,root,*s>
。}while(*s> 。print_btree(root,0>key='1' 。{
。printf("Enterakeyto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 完善内控主体责任制度
- 校园欺凌追究责任制度
- 旅游景区安全责任制度
- 厨房区域卫生责任制度
- 学校炊事员岗位责任制度
- 采购工作小组责任制制度
- 小学平安建设责任制度
- 逐级落实防控责任制度
- 小区门岗工作责任制度
- 幼儿园意外事故责任制度
- 2026年成都市郫都区产业园区面向社会公开招聘员额制人员考试参考试题及答案解析
- 2025年福建新华研学国际旅行社有限责任公司招聘备考题库及答案详解1套
- 2026年内蒙古交通职业技术学院单招职业倾向性测试题库及答案详解(基础+提升)
- 【历史】2025-2026学年统编版八年级历史下册知识点填空
- 2025年医疗影像诊断操作流程指南
- 部编版高中语文背诵补充篇目汇-总(选修)
- 肾性贫血课件
- 肝癌热消融课件
- 中石化加油站培训课件
- 2023降水工程技术标准
- 2026年咸阳职业技术学院单招职业技能测试题库附答案解析
评论
0/150
提交评论