舞伴配对系统实训报告


    
    舞伴配系统
    题目设计目训练基编程力解数结构C++实现系统开发流程掌握数结构熟悉C++语言面象种基操作程序中涉结构体单链表类等方面知识通程序训练C++语言类操作更深刻解进步开发出高质量关数结构方面系统坚实基础
    1问题定义


    容求
    假设周末舞会男士女士进入舞厅时排成队跳舞开始时次男队女队队头出配成舞伴两队初始数相较长队中未配者等轮舞曲求写程序模拟述舞伴配问题问题队列种数结构实现

    问题定义阶段考虑题目行性需求分析接进入开发阶段完成系统设计系统实现务

    2系统设计
    2.1 总体设计
    采模块化程序设计方法较务定原分较务然分设计务需注意划分出模块应该相独立相关容易理解模块化层次结构图(模块图)分析务划分般进行面层模块面层层模块逐步细化描述
    系统功模块组成
    功图:

    舞伴搭配问题
    (main函数)
    类模板创建两队列
    queue man woman




    queue woman
    输入拷贝函数
    (pshuru(namesex))函数
    显示函数
    (show())函数
    出队函数
    (pop(p))函数
    写进文件函数
    (inout<入队函数
    (push(p))函数
    输出函数
    (show())函数


    配流程图
    开始
    结束

    输入name
    Sexmsexw


    while(1)
    count_t++
    cout(输出配跳舞情况)





























    2.2 详细设计
    221数
    舞伴配类体class peoples存基信息

    定义类peoples
    class peoples
    {
    public
    peoples()
    void shuru(char *nachar *s)输入函数
    void sf() 相析构函数
    void show() 显示函数
    char *fhn() 获取姓名
    char *fhs()

    private
    char *name
    char *sex
    }
    样定义类结构
    222 控函数执行流程
    函数实现
    void main()
    {

    运行系统程序执行生成标题
    system(title ☆舞伴配系统☆全建思)
    运行系统程序执行改变界面颜色
    system(color B1)

    queue man
    queue womanpeoples类放入模板然创建两队列
    peoples p 创建象
    int k 输入次舞会数
    char t 输入否继续场舞会
    static int count_m0男数量
    static int count_w0女数量
    static int count_t0舞会次数
    cout<<\t\t******************************************< cout<<\t\t★★★★★欢迎舞伴配系统★★★★★★< cout<<\t\t******************************************<
    ofstream inout(舞伴配txtiosin)创建文件

    if(inout) 果创建成功返回
    {
    cout< return
    }


    for() 死循环相while(1)
    {
    cout<<\t\t第<<++count_t<<场舞会< inout<<\t\t第< cout<<\t\t请输入数:

    cin>>k
    for(int i0i {
    peoples p
    char name[12]
    char sex[2]
    cout<<\t\t请输入姓名
    cin>>name
    cout<<\t\t请输入性(男(m)女(w))
    while(1)
    {
    cin>>sex
    if(strcmp(sexm)0||strcmp(sexw)0)较否样
    break
    else
    cout<<\t\t性错误请重新输入
    }
    pshuru(namesex)
    if(strcmp(sexm)0)
    {
    manpush(p) 进队列
    count_m++ 男数量+1
    }
    else if(strcmp(sexw)0) 女
    {
    womanpush(p)
    count_w++
    }
    }

    if(count_m>count_w) 男女时候
    {
    for(int i0i {
    cout<<第< manpop(p) 出队列
    pshow() 显示
    inout< inout< psf() 析构
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< inout< psf()
    cout<<'\n'
    inout<<\n
    }
    cout<<\t\t男队剩余<< <<剩余数:< count_mcount_mcount_w 男数目变成剩
    count_w0 女数目变0出队
    cout<<\t\t剩余
    for(i0i {
    manpop(p)
    pshow()
    cout< manpush(p)
    }
    }

    男女时候男女时候方法样男女区
    else if(count_m {
    for(int i0i {
    cout<<\t\t第< manpop(p)
    pshow()
    inout< inout< psf()
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< inout< psf()
    cout<<'\n'
    inout<<\n
    }

    cout<<\t\t女队剩余<< <<剩余数:< count_wcount_wcount_m
    count_m0
    cout<<\t\t剩余

    for(i0i {
    womanpop(p)
    pshow()
    cout< womanpush(p)
    }
    }

    男女数量相等
    else if(count_wcount_m)
    {

    for(int i0i {
    cout<<\t\t第< manpop(p)
    pshow()
    inout< psf()
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< psf()
    cout<<'\n'
    inout<<\n
    }
    count_m0
    count_w0
    }
    cout<<'\n'
    cout<<\t\t第< cin>>t
    system(cls) 清屏函数

    if(t'y')
    {
    if(count_w>0)
    {
    cout<<\t\t次剩余女士数< cout<<\t\t分
    for(i0i {
    显示剩余时候先出队显示入队第二轮
    womanpop(p)
    pshow()
    cout< womanpush(p)
    }
    }
    else if(count_m>0)
    {
    cout<<\t\t次剩余男士数< cout<<\t\t分
    for(i0i {
    manpop(p)
    pshow()
    cout< manpush(p)
    }
    }
    }

    else
    {
    cout<<\t\t\t★谢谢★<<'\n'
    inoutclose()
    psf()
    man~queue()
    woman~queue()
    break
    }
    }
    }
    舞伴配系统执行先创建文件输入相关数接进行较然执行显示出进入循环操作进行判断
    舞伴配系统类模板分:
    223
    template
    class queue

    224
    template
    queuequeue()
    225
    template
    队列尾插入结点函数
    void queuepush(T &x)
    226
    template
    队列头中取出结点
    布尔型字节取值falsetrue01区
    bool queuepop(T &x)
    227
    template
    清空队列
    void queueclearQue()
    228函数功描述
    定义类模板
    template
    class queue
    {
    public
    queue()

    ~queue()
    {
    clearQue()
    }

    void push(T &) 队列尾插入结点
    bool pop(T &) 队列头中取出结点
    void clearQue() 清空队列


    protected
    int queSize 队列长度
    queueNode *head定义头结点
    queueNode *tail定义尾结点

    }
    定义类模板中成员函数
    template
    queuequeue()
    {
    构造函数初始化队列
    queSize0

    headNULL
    tailNULL
    }




    template

    队列尾插入结点函数
    void queuepush(T &x)
    {
    queueNode *tp
    tpnew queueNode 定义创建结点
    if(tp) 果创建结点错误返回
    {

    return
    }
    tp>nodeDatax x值送结点
    假队列数(空队列)尾插入
    if(tail)
    {
    tp>nextNULL
    tail>nexttp
    tailtp
    }
    假队列数(空队列)结点首结点尾结点
    else
    {
    tp>nextNULL
    tailtp
    headtp
    }
    queSize++
    }



    template

    队列头中取出结点
    布尔型字节取值falsetrue01区
    bool queuepop(T &x)
    {
    queueNode *tp
    if(head)
    {
    出队首出队首结点定义结点tpheadhead>next
    xhead>nodeData
    tphead
    headhead>nexthead置结点head
    if(headNULL)假首结点空尾空队列已清空
    {
    tailNULL
    }
    delete tp
    queSize
    return true
    }
    return false
    }



    template

    清空队列
    void queueclearQue()
    {
    T tp

    while(pop(tp))
    headtailNULL
    }
    3系统实现
    3.1 编码
    311 程序预处理
    包括加载头文件定义类常量变量进行初始化工作
    #include
    #include
    #include 清屏函数头文件
    #include 输入输出流头文件

    template声明类模板


    struct queueNode链式队列结构体
    {
    T nodeData
    queueNode *next
    }
    peoplespeoples()构造函数
    {
    初始化
    namenew char[8]
    nameNULL
    sexnew char[2]
    sexNULL
    }
    312 函数
    函数实现整程序运行控制相关功模块调
    void main()
    {

    运行系统程序执行生成标题
    system(title ☆舞伴配系统☆全建思)
    运行系统程序执行改变界面颜色
    system(color B1)

    queue man
    queue womanpeoples类放入模板然创建两队列
    peoples p 创建象
    int k 输入次舞会数
    char t 输入否继续场舞会
    static int count_m0男数量
    static int count_w0女数量
    static int count_t0舞会次数
    cout<<\t\t******************************************< cout<<\t\t★★★★★欢迎舞伴配系统★★★★★★< cout<<\t\t******************************************<
    ofstream inout(舞伴配txtiosin)创建文件

    if(inout) 果创建成功返回
    {
    cout< return
    }


    for() 死循环相while(1)
    {
    cout<<\t\t第<<++count_t<<场舞会< inout<<\t\t第< cout<<\t\t请输入数:

    cin>>k
    for(int i0i {
    peoples p
    char name[12]
    char sex[2]
    cout<<\t\t请输入姓名
    cin>>name
    cout<<\t\t请输入性(男(m)女(w))
    while(1)
    {
    cin>>sex
    if(strcmp(sexm)0||strcmp(sexw)0)较否样
    break
    else
    cout<<\t\t性错误请重新输入
    }
    pshuru(namesex)
    if(strcmp(sexm)0)
    {
    manpush(p) 进队列
    count_m++ 男数量+1
    }
    else if(strcmp(sexw)0) 女
    {
    womanpush(p)
    count_w++
    }
    }

    if(count_m>count_w) 男女时候
    {
    for(int i0i {
    cout<<第< manpop(p) 出队列
    pshow() 显示
    inout< inout< psf() 析构
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< inout< psf()
    cout<<'\n'
    inout<<\n
    }
    cout<<\t\t男队剩余<< <<剩余数:< count_mcount_mcount_w 男数目变成剩
    count_w0 女数目变0出队
    cout<<\t\t剩余
    for(i0i {
    manpop(p)
    pshow()
    cout< manpush(p)
    }
    }

    男女时候男女时候方法样男女区
    else if(count_m {
    for(int i0i {
    cout<<\t\t第< manpop(p)
    pshow()
    inout< inout< psf()
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< inout< psf()
    cout<<'\n'
    inout<<\n
    }

    cout<<\t\t女队剩余<< <<剩余数:< count_wcount_wcount_m
    count_m0
    cout<<\t\t剩余

    for(i0i {
    womanpop(p)
    pshow()
    cout< womanpush(p)
    }
    }

    男女数量相等
    else if(count_wcount_m)
    {

    for(int i0i {
    cout<<\t\t第< manpop(p)
    pshow()
    inout< psf()
    cout<<
    inout<<
    womanpop(p)
    pshow()
    inout< psf()
    cout<<'\n'
    inout<<\n
    }
    count_m0
    count_w0
    }
    cout<<'\n'
    cout<<\t\t第< cin>>t
    system(cls) 清屏函数

    if(t'y')
    {
    if(count_w>0)
    {
    cout<<\t\t次剩余女士数< cout<<\t\t分
    for(i0i {
    显示剩余时候先出队显示入队第二轮
    womanpop(p)
    pshow()
    cout< womanpush(p)
    }
    }
    else if(count_m>0)
    {
    cout<<\t\t次剩余男士数< cout<<\t\t分
    for(i0i {
    manpop(p)
    pshow()
    cout< manpush(p)
    }
    }
    }

    else
    {
    cout<<\t\t\t★谢谢★<<'\n'
    inoutclose()
    psf()
    man~queue()
    woman~queue()
    break
    }
    }
    }


    313 菜单界面

    菜单界面系统程序执行改变颜色:
    system(color B1)
    时菜单界面系统程序执行显示标题
    system(title ☆舞伴配系统☆全建思):

    314定义peoples成员函数
    class peoples
    {
    public
    peoples()
    void shuru(char *nachar *s)输入函数
    void sf() 相析构函数
    void show() 显示函数
    char *fhn() 获取姓名
    char *fhs()

    private
    char *name
    char *sex
    }
    315

    输入函数
    void peoplesshuru(char *nachar *s)
    {
    namenew char[strlen(na)+1] 存申请空间
    strcpy(namena) 系统函数拷贝函数
    sexnew char[strlen(s)+1]
    strcpy(sexs)
    }


    显示函数
    void peoplesshow()
    {
    cout<<\t\t<}


    析构函数
    void peoplessf()释放存
    {
    delete []name
    delete []sex
    }


    获取姓名函数
    char *peoplesfhn()
    {
    return name

    }

    char *peoplesfhs()
    {

    return sex
    }
    3.2 测试调试
    321 概述
    般情况解决问题编写程序代码较长包括百条甚成千万条语句检查排语法错误会易发现逻辑错误程序进行认真仔细测试调试
    测试通运行程序发现错误程常见错误数溢出数组越界进入死循环语句序颠倒加少加{}等等调试确定测试中找错误性质改正错误程测试调试通常交进行测试——调试——测试——调试
    检查出尚未发现种类型错误测试成功测试测试程序需测试例测试例公式表示:测试例=测试数+预期结果
    测试例应该少测试数发现错误发现错误概率选择合适测试数系统运行时量执行条语句测试指令否正确应分测试输入合法数非法数时程序运行情况合法数考虑数般性特殊性求值问题应测试值前面面中间某位置情况
    测试程序时监视窗口时查变量表达式值时部分程序代码注释符暂时括起缩短程序便压缩出错代码范围
    322 程序测试
    l 菜单中选择添加记录
    第次运行该程序应实现键盘输入信息非第次运行该程序应实现文件中读入信息链表中进入增加记录画面输入记录程图示



    l 输入数
    户继续添加进入添加记录界面程图示



    l 显示配情况




    l 进入场




    l 进文件中生成场配情况










    l 直结束时N进行





    退出


    4系统维护
    测试调试确认软件错时开发告段落时交付软件供户软件程中会面更加漫长工作软件维护般维护工作:更改中发现错误适应实际环境程序进行修改满足新需求程序作必改进等等
    5纳总结
    5.1 开发验
    通题目开发体会掌握点容
    1.C++面象程序设计进步掌握
    2.界面设计力够次想MFC设计界面实没力做成功学界面设计
    3.C语言C++语言间通转换掌握深次试图改少错误
    4.数结构中逻辑思维强方想全面方面定加强
    5.2 实训中遇问题解决方法
    次实训中遇问题定义类时头文件名花少时间搞:子写完边写边测试样步步利写二:函数间关系清晰增减功时清晰行
    点次系统没做读取文件数成功运程序中舞伴配系统求:假设周末舞会男士女士进入舞厅时排成队跳舞开始时次男队女队队头出配成舞伴两队初始数相较长队中未配者等轮舞曲等应刚跳完重新配文件读取成功重新文件数重新输入说明文件操作方面知识没掌握接仅学文件操作学关编程知识
    做实训培养动手力寻找足更学
    5.3 设计中尚存足处
    关次程序挺足方首先觉程序够完善方甚点乱次功太合实性该程序界面够美观方
    5.4 感想心体会
    通次实训感触甚深 明白力实太限二知识够广必须学更知识丰富提高力
    6参考资料
    [1] 谭浩强 C程序设计(第三版) 清华学出版社 2010
    [2] 谭浩强 C++面象程序设计 清华学出版社 2011
    [3] 缪淮扣 顾训穰 沈俊 数结构C++实现 科学出版社 2009

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    数据结构实训报告舞伴配对实训

    数据结构实训报告(一) 应用程序名称及要求··································3 (二) 应用程序主体、设计目的························...

    2年前   
    1027    0

    数据结构课程设计舞伴配对程序

    沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导...

    1年前   
    270    0

    Webform实训报告 网上花店系统

     Webform实训     网上花店      组    长        姜雪           组    员 米硕 李斌 辛港 李宇飞  班    级       09高...

    12年前   
    11913    0

    实训7 操作系统安装和磁盘管理实训报告

    实训7 操作系统安装和磁盘管理实训报告实训内容安装操作系统,利用操作系统自带工具进行磁盘分区、格式化。实训要求1. 熟悉操作系统安装方法2. 熟练利用操作系统自带工具进行磁盘分区和格式化3.了...

    3年前   
    1070    0

    实训10 微机硬件系统的维护实训报告

    实训内容 拆卸主机,并对其各主要部件进行清洁和维护。常用外设的清洁和维护。实训要求 1.了解微机硬件系统维护的基础知识,掌握主机硬件的维护方法。2.掌握常用外部设备的日常维护方法。

    4年前   
    1211    0

    实训11 微机软件系统的维护实训报告

    实训11 微机软件系统的维护实训报告实训内容操作系统维护工具的使用。注册表的维护。Windows优化大师软件的使用。实训要求1.掌握系统维护工具的使用并对微机系统进行优化操作2.掌握注册表维护...

    3年前   
    1077    0

    Windows Server系统管理实训报告

    江西现代职业技术学院Windows Server系统管理实训报告姓 名 郑济青 学 号 190628590240 学 院 信...

    4年前   
    2097    0

    实场营销实训报告

    实场营销实训报告  我们这周上的实训课是市场营销实训。我们小组自实训课开始就一直在一起,这次的实训也不例外,。这次实训的主要目标人群是学生家长及校内学生们。这是个符合我们目前状况的实训,现在的...

    10年前   
    680    0

    windows实训报告

    实训是教学工作的重要环节,是课堂理论教学的检验和延续,是培养学生实践技能的重要场所。通过实训,使学生能够完成企业windows服务器的配置、管理与维护。通过实际操作,使学生掌握一定的操作技能,能...

    3年前   
    1955    0

    实训报告总结

    实训报告总结  我校组织的为期两周的实训马上就要结束了,心中有些不舍,从第一天满怀激动的来到与学校合作的玛世电子商务公司到现在要结束的实训,虽然只有短短两周时间,但我收获很多知识性的东西。以前...

    12年前   
    879    0

    实训报告

    三年的大学即将结束,在基本完成了各个专业的基础课,专业课的学习任务的基础上。进行了为期12周的专业课程实验。在虚拟贸易平台中,同学们都参与扮演进出口业务中的不同当事人,在这个共同组成的贸易环境里...

    5年前   
    1723    0

    护理实训报告

    护理实训报告  学院                                      系部                                      班级      ...

    9年前   
    833    0

    实训报告

    人力资源管理沙盘模拟实验报告                            ——G组 1、企业基本情况 公司名称:创世集团(简称CS)    法人代表:包程程 成立时间:201...

    9年前   
    7824    0

    物流实训报告

    物流实训报告  物流实训报告  目  录  一、实训内容... 2  二、实训目的... 2  三、实训中遇到的问题... 2  四、三种角色具体流程分析... 3  五、实训感想及心得体会....

    12年前   
    750    0

    铣床实训报告

    铣床实训报告  短短两周的金工实习,随着昨天下午最后一节笔试的结束而结束了。在这段时间,我学到了很多东西,见识了许多新奇的工艺,也了解到了技工人员的工作环境。我想这两周的实习将给我以后的工作带...

    11年前   
    1024    0

    实训报告

    实训报告  一、实训时间:  二、实训目的:了解普通车床的工作原理,工作方式、结构特点各部件的用途,并掌握普通车床和立式升降铣床的基本操作。车工对应的机器主要是车床,车床主要由变速箱、主轴箱、...

    8年前   
    652    0

    ERP实训报告

    ERP实训报告  提示:在为期一周的erp实训中我认识和学习到erp系统及在企业运营中的重要性及涉及到的一些跨学科的知识。由此可以了解企业的运营过程、身临其境的进行操作,真正感受一个企业经营者...

    9年前   
    682    0

    会计实训报告

    会计实训报告  年级专业班级:  学        号:  姓        名:  提 交  日 期:  一、    实训基本情况  (一)实训时间:2012年9月6日――9月30日  (二...

    10年前   
    700    0

    实训报告总结

    实训报告总结  历经为期两个星期的实训能力扩展训练,在我们彼此的心目中有着或多或少的感悟!   前个星期的钳工实训使我更加了解到了划线,錾削,锯切,锉削,钻孔,绞孔,刮削等加工过程。同时也发现...

    12年前   
    873    0

    社会实训报告

    社会实训报告 2010年1月,我有幸成为一名在社区工作的人员,在两年多的时间里,使我走向社会,接触社会,了解社会,熟悉社会,投身社会的良好形式,我觉得自己对社会工作专业有了更深一步的了解,让...

    11年前   
    11837    0

    文档贡献者

    文***品

    贡献于2021-09-03

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档