数据结构综合性实验


    

     
    数结构实验
    实验六
    数结构综合性实验 



    计算机科学技术系X班
    组 长:X
    日 期:2011年X月X日
     











     实验报告
    2009级 X班 2011年X月X日
    实验类型:综合设计型 实验点:软件实验室三
    组长:  组员:
                 实验题目
    选票统计系统
    二              需求分析
    定数量参赛选手进行投票求输入投票者姓名址记录十投票投票结束查新轮选手排名查前十名选手分情况票数情况
    三              概设计
    退出
    查新轮排行榜信息选手名次分票数
    显示投票结果确认信息
    输入姓名址选手编号
    投票














    四              详细设计
    1投票
    int vote()
    {
    int ijmnp
    char a
    char num3[3]
    printf(\n\n\n\t\t投票\n\n)
    T ticket初始化选票
    printf(\t\t\t请输入您姓名)
    scanf(sticketname)
    printf(\t\t\t请输入您家庭住址)
    scanf(sticketadress)
    for(i1i<10i++){
    ticketlist[i]order2i
    strcpy(ticketlist[i]num200)
    }
    for(){
    printf(\t请次序分输入选手编号(01~40)十#键结束\n)
    printf(\t注意次输入必须空格隔开输入完毕回车键\n)
    for(j1j<10j++){
    scanf(snum3)
    if(strcmp(num3#)0)
    break
    strcpy(ticketlist[j]num2num3)
    }
    system(cls)
    printf(\n\n\n\t\t\t您选票\n)
    for(m1m<10m++)&&strcmp(ticketlist[m]num200)0
    printf(\t\t\t第2d名s\nticketlist[m]order2ticketlist[m]num2)
    printf(\t\t\t确定(yn)确定更改\n)
    aagetch()
    if(a'y'||a'Y')
    break
    else{
    if(a'n'||a'N'){
    system(cls)
    continue
    }
    else{
    printf(\t\t\t输入误请重试\n)
    goto a
    }
    }
    }
    2009100145
    2排行榜
    void list()
    {
    int ijrtmaxmark[10]
    int nksm1
    T *head*p*q
    printf(\n\n\n\t\t新排行榜\n\n)
    char f[2]{0}初始化
    char b[9][2]{123456789}
    for(i0i<4i++)
    {
    char e[4][2]{1234}
    char c[4][2]{0123}
    char a[4][2]{0123}
    for(j0j<8j++)
    {
    waiters[m]mark waiters[m]order1waiters[m]Total_Ticket0
    strcpy(waiters[m]num1strcat(a[i]b[j]))
    strcpy(a[i]c[i])
    m++
    }
    waiters[m]mark waiters[m]order1waiters[m]Total_Ticket0
    strcpy(waiters[m]num1strcat(e[i]f))
    m++
    }
    for(int z1z<40z++)
    waiters[z]statu0
    2009100122

    3排序
    int temptemp1求出十值
    for(t0t<10t++){
    int max0
    for(r1r<40r++){
    if(waiters[r]statu1)
    continue
    if(max maxwaiters[r]mark
    tempr
    }
    }
    waiters[temp]statu1
    maxmark[t]temp
    }
    2009100122

    4检查值中没等值
    for(int x0x<9x++){
    for(int yx+1y<10y++)
    {分数相较票数
    if(waiters[maxmark[x]]markwaiters[maxmark[y]]mark)
    {前面票数面票数交换位置
    if(waiters[maxmark[x]]Total_Ticket tempmaxmark[x]
    maxmark[x]maxmark[y]
    maxmark[y]temp
    }
    }
    }
    }
    2009100132

    5文件中选票信息导入链表中
    ifstream infile
    infileopen(sourcetxtiosin|iosnocreate)
    if(infile){
    printf(\t\t\t文件开失败\n)
    exit(1)
    }
    head(T *)malloc(sizeof(T))
    head>nextNULL
    phead
    while(infile){
    q(T *)malloc(sizeof(T))
    infileread((char *)qsizeof(T))
    p>nextq
    q>nextNULL
    pq
    }
    phead
    while(p>nextNULL)
    {
    for(k1k<10&&strcmp(p>list[k]num200)0k++){
    for(s1s<40s++){
    if(strcmp(p>list[k]num2waiters[s]num1)0){
    waiters[s]Total_Ticket++
    switch(p>list[k]order2){
    case 1{waiters[s]mark+15
    break}
    case 2{waiters[s]mark+12
    break}
    case 3{waiters[s]mark+9
    break}
    case 4{waiters[s]mark+7
    break}
    case 5{waiters[s]mark+6
    break}
    case 6{waiters[s]mark+5
    break}
    case 7{waiters[s]mark+4
    break}
    case 8{waiters[s]mark+3
    break}
    case 9{waiters[s]mark+2
    break}
    case 10{waiters[s]mark+1
    break}
    }
    }
    }
    }
    pp>next
    }
    2009100136

    6废票处理
    for(n1n<10&&strcmp(ticketlist[n]num200)0n++){
    if(ticketlist[n]num2[0]>51*4*||ticketlist[n]num2[0]<48*0*){
    printf(\n\n\t\t\t编号越界次投票效\n)
    return 0
    }
    for(pn+1p<10&&strcmp(ticketlist[n]num200)0p++){
    if(strcmp(ticketlist[n]num2ticketlist[p]num2)0){
    printf(\n\n\t\t\t编号出现重复次投票效\n)
    return 0
    }
    }
    }
    2009100145

    7符合求选票写进文件中
    ofstream outfile
    outfileopen(sourcetxtiosout|iosapp)
    if(outfile){
    printf(文件开失败\n)
    exit(1)
    }
    outfilewrite((char *)&ticketsizeof(T))
    outfileclose()
    printf(\n\n\t\t\t投票成功感谢您参\n)
    return 0
    }
    2009100136

    8函数
    void main()
    {
    char choice
    char mark
    for(){
    menu()
    for(){
    choicegetch()
    if(choice<49||choice>51)
    printf(\t\t\t输入误请重试\n)
    else break
    }
    switch(choice){
    case '1'{
    system(cls)
    vote()
    break}
    case '2'{
    system(cls)
    list()
    break}
    case '3'{
    exit(1)
    break}
    }
    printf(\t\t\t返回菜单请E号键\n)

    for(){
    markgetch()
    if(mark'e'||mark'E'){
    system(cls)
    break
    }
    else
    printf(\t\t\t输入误请重试\n)
    }

    }
    2009100132
    五              调试分析
    运行程中输入正确导致调试出错时应反复调试应运行前计算运行时需数量避免失误
    六              说明
    选手投票时候应注意操作规范性十名选手投票统计新轮选手排名情况选手票数
    七              测试结果




    八              实验总结
    1实验前应充分做准备数需参数提前列举出减少实验程中时间
    2调试分析时应注意实验步骤步骤进行漏应程
    3注意调试运行容进行合理排版运行时候条理容易找步运行指令
    九              模块分工
    2009100145  辛志鹏  投票废票处理
                2009100136  张发辉  文件中选票信息导入链表中
    符合求选票写进文件中
    2009100122  赵金桃  排行榜排序
    2009100132  田  飞  函数检查值中没等值
    附完整代码:
    #include stdioh
    #include conioh
    #include stringh
    #include fstreamh
    #include stdlibh
    #define N 4140名员工编号00~39

    数结构
    typedef struct Waiter
    {
    char num1[3]选手编号
    int order1选手排名
    int mark总分
    int Total_Ticket总票数
    int statu
    struct Waiter *next1
    }W
    W waiters[N]

    typedef struct List
    {
    int order2名次
    char num2[3]选手编号
    }L

    typedef struct Ticket
    {
    char name[10]姓名
    char adress[30]址
    L list[11]投
    struct Ticket *next
    }T

    菜单
    void menu()
    {
    printf(\n\n\n\t欢迎投票统计系统\n)
    printf(\t|\t\t\t 1投 票 \t\t\t|\n)
    printf(\t|\t\t\t 2排行榜 \t\t\t|\n)
    printf(\t|\t\t\t 3退 出 \t\t\t|\n)
    printf(\t\n)
    printf(\t\t\t请选择相应功(1~3)\n)
    }

    投票
    int vote()
    {
    int ijmnp
    char a
    char num3[3]
    printf(\n\n\n\t\t投票\n\n)
    T ticket初始化选票
    printf(\t\t\t请输入您姓名)
    scanf(sticketname)
    printf(\t\t\t请输入您家庭住址)
    scanf(sticketadress)
    for(i1i<10i++){
    ticketlist[i]order2i
    strcpy(ticketlist[i]num200)
    }
    for(){
    printf(\t请次序分输入选手编号(01~40)十#键结束\n)
    printf(\t注意次输入必须空格隔开输入完毕回车键\n)
    for(j1j<10j++){
    scanf(snum3)
    if(strcmp(num3#)0)
    break
    strcpy(ticketlist[j]num2num3)
    }
    system(cls)
    printf(\n\n\n\t\t\t您选票\n)
    for(m1m<10m++)&&strcmp(ticketlist[m]num200)0
    printf(\t\t\t第2d名s\nticketlist[m]order2ticketlist[m]num2)
    printf(\t\t\t确定(yn)确定更改\n)
    aagetch()
    if(a'y'||a'Y')
    break
    else{
    if(a'n'||a'N'){
    system(cls)
    continue
    }
    else{
    printf(\t\t\t输入误请重试\n)
    goto a
    }
    }
    }
    废票处理
    for(n1n<10&&strcmp(ticketlist[n]num200)0n++){
    if(ticketlist[n]num2[0]>51*4*||ticketlist[n]num2[0]<48*0*){
    printf(\n\n\t\t\t编号越界次投票效\n)
    return 0
    }
    for(pn+1p<10&&strcmp(ticketlist[n]num200)0p++){
    if(strcmp(ticketlist[n]num2ticketlist[p]num2)0){
    printf(\n\n\t\t\t编号出现重复次投票效\n)
    return 0
    }
    }
    }
    符合求选票写进文件中
    ofstream outfile
    outfileopen(sourcetxtiosout|iosapp)
    if(outfile){
    printf(文件开失败\n)
    exit(1)
    }
    outfilewrite((char *)&ticketsizeof(T))
    outfileclose()
    printf(\n\n\t\t\t投票成功感谢您参\n)
    return 0
    }

    排行榜
    void list()
    {
    int ijrtmaxmark[10]
    int nksm1
    T *head*p*q
    printf(\n\n\n\t\t新排行榜\n\n)
    char f[2]{0}初始化
    char b[9][2]{123456789}
    for(i0i<4i++)
    {
    char e[4][2]{1234}
    char c[4][2]{0123}
    char a[4][2]{0123}
    for(j0j<8j++)
    {
    waiters[m]mark waiters[m]order1waiters[m]Total_Ticket0
    strcpy(waiters[m]num1strcat(a[i]b[j]))
    strcpy(a[i]c[i])
    m++
    }
    waiters[m]mark waiters[m]order1waiters[m]Total_Ticket0
    strcpy(waiters[m]num1strcat(e[i]f))
    m++
    }
    for(int z1z<40z++)
    waiters[z]statu0

    文件中选票信息导入链表中
    ifstream infile
    infileopen(sourcetxtiosin|iosnocreate)
    if(infile){
    printf(\t\t\t文件开失败\n)
    exit(1)
    }
    head(T *)malloc(sizeof(T))
    head>nextNULL
    phead
    while(infile){
    q(T *)malloc(sizeof(T))
    infileread((char *)qsizeof(T))
    p>nextq
    q>nextNULL
    pq
    }
    phead
    while(p>nextNULL)
    {
    for(k1k<10&&strcmp(p>list[k]num200)0k++){
    for(s1s<40s++){
    if(strcmp(p>list[k]num2waiters[s]num1)0){
    waiters[s]Total_Ticket++
    switch(p>list[k]order2){
    case 1{waiters[s]mark+15
    break}
    case 2{waiters[s]mark+12
    break}
    case 3{waiters[s]mark+9
    break}
    case 4{waiters[s]mark+7
    break}
    case 5{waiters[s]mark+6
    break}
    case 6{waiters[s]mark+5
    break}
    case 7{waiters[s]mark+4
    break}
    case 8{waiters[s]mark+3
    break}
    case 9{waiters[s]mark+2
    break}
    case 10{waiters[s]mark+1
    break}
    }
    }
    }
    }
    pp>next
    }
    排序
    int temptemp1求出十值
    for(t0t<10t++){
    int max0
    for(r1r<40r++){
    if(waiters[r]statu1)
    continue
    if(max maxwaiters[r]mark
    tempr
    }
    }
    waiters[temp]statu1
    maxmark[t]temp
    }
    检查值中没等值
    for(int x0x<9x++){
    for(int yx+1y<10y++)
    {分数相较票数
    if(waiters[maxmark[x]]markwaiters[maxmark[y]]mark)
    {前面票数面票数交换位置
    if(waiters[maxmark[x]]Total_Ticket tempmaxmark[x]
    maxmark[x]maxmark[y]
    maxmark[y]temp
    }
    }
    }
    }
    输出前十名
    printf(\t\t|\t名次 选手编号 合计分 合计票数\t|\n)
    for(int o0o<10o++)
    printf(\t\t|\t 2d s 2d 2d\t|\no+1
    waiters[maxmark[o]]num1
    waiters[maxmark[o]]mark
    waiters[maxmark[o]]Total_Ticket)
    printf(\t\t\n)
    printf(\n)
    }

    函数
    void main()
    {
    char choice
    char mark
    for(){
    menu()
    for(){
    choicegetch()
    if(choice<49||choice>51)
    printf(\t\t\t输入误请重试\n)
    else break
    }
    switch(choice){
    case '1'{
    system(cls)
    vote()
    break}
    case '2'{
    system(cls)
    list()
    break}
    case '3'{
    exit(1)
    break}
    }
    printf(\t\t\t返回菜单请E号键\n)

    for(){
    markgetch()
    if(mark'e'||mark'E'){
    system(cls)
    break
    }
    else
    printf(\t\t\t输入误请重试\n)
    }

    }
    }








    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

    数据结构实验报告

    实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、...

    2年前   
    329    0

    数据结构实验报告《三、串及其应用》

    数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 ...

    3年前   
    1295    0

    链表排序北邮数据结构实验

    数 据 结 构实验报告实验名称:________链表排序___________学生姓名:_____________________班 级:________________班内序号:___...

    1年前   
    255    0

    c语言综合性实验总结

    华北科技学院计算机学院综合性实验实 验 报 告 课程名称 程序设计语言(C) 实验学期 2011 至 2012 学年 第 二 学期学生所在学...

    4年前   
    592    0

    数据结构实习报告

    数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给...

    8年前   
    1038    0

    数据结构练习题及答案

    数据结构练习题及答案第1章 绪论一、 判断题1. 数据的逻辑结构与数据元素本身的内容和形式无关。 (√)2. 一个数据结构是由一个逻辑...

    3年前   
    1074    0

    数据结构试题及答案多套

    数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构...

    3年前   
    888    0

    数据结构试验迷宫问题

    数据结构试验——迷宫问题(一)基本问题1.问题描述这是心理学中的一个经典问题。心理学家把一只老鼠从一个无顶盖的大盒子的入口处放入,让老鼠自行找到出口出来。迷宫中设置很多障碍阻止老鼠前行,迷宫唯...

    3年前   
    522    0

    数据结构实践报告

     数据结构实践报告学 号: 姓 名: 班 级: ...

    1年前   
    585    0

    数据结构练习题(含答案)

    数据结构练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ...

    3年前   
    1509    0

    数据结构大作业(含源代码)

    数据结构大作业作业题目: 职工信息管理系统 姓 名: 学 号: ...

    3年前   
    452    0

    数据结构习题集附答案

    数据结构习题集附答案第一章 绪 论一、选择题1.组成数据的基本单位是( )A.数据项 B.数据类型 C.数据元素 D.数据变量2.数据结构是研究数据的( )以及它们之间的相互关系。A.理...

    3年前   
    858    0

    十套数据结构试题及答案

    数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构...

    3年前   
    649    0

    《数据结构(C语言版)》教案

    2011 至2012 学年第 一 学期教  案课程名称 数据结构 使用教材《数据结构(C语言版)》教学时数 56    课程性质 必修    任课班级(人数)信管(53人)   信息 系(部)...

    3年前   
    648    0

    数据结构和算法课程设计题目

    XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7-...

    11个月前   
    376    0

    数据结构简答题打印版

     数据结构简答题1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。解:数据是对客观事物的符号表示...

    3年前   
    468    0

    数据结构 第九章 查找

    .折半查找是否适合链表结构的序列,为什么?用二分查找的查找速度必然比线性查找的速度快,这种说法对吗?

    5年前   
    1702    0

    初中毕业综合性评语

    初中毕业综合性评语  丁:该生在校期间,各方面表现突出。能严格遵守校纪班规,尊敬师长,友爱同学。有较强的责任心,在担任数学科代表期间,工作认真负责,是老师的好帮手。有强烈的进取心,学习自觉性强...

    11年前   
    503    0

    浅谈综合性学习教学

    综合性学习的教学与传统的文本教学有着明显的不同,这集中体现在教学内涵的扩展,教师教的作用的逐步消解。传统教育中的教学指的是教师把知识、技能传授给学生的过程

    2年前   
    410    0

    2017年综合性评语4篇

    综合性评语4篇本文目录1. 综合性评语2. 初中毕业综合性评语3. 中学生综合性评语4. 学校对学生综合性评语  该生聪慧多思,善于把握自己,把握时间。成绩稳定,能保持前列。热爱体育运动,在班...

    7年前   
    376    0

    文档贡献者

    文***享

    贡献于2023-03-11

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

    该用户的其他文档