详细设计说明书(基于C语言的羽毛球场馆预订及查询系统)

article/2025/8/26 8:00:58

详细设计说明书

                 

目录

一.基本情况概述... 3

1.用户名   

2. 基本说明

3. 背景

4.编写目的

5.主要参考资料

二.软件详解... 4

1.设计流程图

2.软件主要功能

3.软件各模块

三.测试分析... 5

1.限制条件

2.出现的问题

四.源代码解析... 6

一.基本情况概述

  1. 用户名:GCGLDEXZ

        (工程概论第二小组)

2.基本说明:

a、软件系统的名称:羽毛球场馆预订及查询系统(Badminton venue booking and enquiry system)

b、本项目的任务提出者:

           本项目的开发者:

           本项目的用户:在校学生,教师,校园游客

3.背景:

当前羽毛球场馆预订查询及预订较为麻烦,且网络卡顿较为严重,很难预订成功

4.编写目的:

本详细设计说明书是针对羽毛球场馆预订及查询系统(Badminton venue booking and enquiry system)的项目编写。目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试做准备。本详细设计说明书的预期读者为本项目小组的成员以及对该小程序感兴趣,在以后想对系统进行拓展和维护的人员。

5.主要参考资料:

CSDN博主liu_rong_fei《c语言开发窗口应用程序》

二.软件详解

1.设计流程图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATmV2ZXJsYW5kIGx5,size_20,color_FFFFFF,t_70,g_se,x_16

2.软件主要功能:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATmV2ZXJsYW5kIGx5,size_20,color_FFFFFF,t_70,g_se,x_16

3.软件各模块:

(1).查询模块:

a.直接查询:可以直接查询本周任何时间段的空闲状况

b.输出查询:可以直接输出本周所有空闲时间段

(2).预订模块:

a.直接预订:可以直接预订本周任何空闲时间段

b.辅助预订:可以结合课表输出本周可选时间段

三.测试分析

1.限制条件

a.需要提前录入课表及初始场地空闲状况

答:考虑过用户直接输入课表与初始场地空闲状况以提高软件实时性,但用户反映太过麻烦,于是改成了提前录入课表及初始场地空闲状况这种模式

b.必须按照系统提示输入数字否则程序会进入死循环

答:虽然参考了CSDN博主的帖子,但是开发者暂时无法解决这个问题。

2.出现的问题:
(1).预订系统中已预订的场次虽然在查询时显示已被预订,但是在输出所有空闲场次时依然出现

答:重编预订函数与查询函数,将两者串联

(2). 不按照系统提示输入数字程序会进入死循环或者得出错误结果

例如:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATmV2ZXJsYW5kIGx5,size_20,color_FFFFFF,t_70,g_se,x_16

答:虽然参考了CSDN博主的帖子,但是开发者暂时无法解决这个问题。

(3).使用太多跳转函数,修改时非常麻烦:

答:第一次编写这种程序,下次注意。

四.源代码解析

#include <stdio.h>

#include<windows.h>

#include<conio.h>

#include<string.h>

void color(short x)   //控制台变色函数

{

    if (x >= 0)

        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);

    else

        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);

}

int yuding2(int guozuori[][3],int zhoumo[][13],int ke[][5])    //输出所有无课时间段中空闲场次

{

       while(1)

       {

       system("cls");                                                                       //系统清屏函数

       printf("所有无课时间段中空闲场次:\n");

       int i=0,j,k,f,a,b,c,h;

       for(j=0;j<5;j++)

       {

              for(k=0;k<3;k++)

              if(ke[i][j]==0&&guozuori[j][k]==0)  printf("周%d %d:00~%d:00\n",j+1,k+18,k+19);

       }

       for(i=1;i<3;i++)

       {

              for(j=0;j<2;j++)

              if(ke[i][0]==0&&zhoumo[i-1][j]==0)   printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=2;j<4;j++)

              if(ke[i][1]==0&&zhoumo[i-1][j]==0)   printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=4;j<6;j++)

              if(zhoumo[i-1][j]==0)    printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=6;j<8;j++)

              if(ke[i][2]==0&&zhoumo[i-1][j]==0)   printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=8;j<10;j++)

              if(ke[i][3]==0&&zhoumo[i-1][j]==0)   printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=10;j<11;j++)

              if(zhoumo[i-1][j]==0)    printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

              for(j=11;j<13;j++)

              if(ke[i][4]==0&&zhoumo[i-1][j]==0)   printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);      

       }                                                                                                                                                         //条件+循环语句控制

       printf("\n\n选择预订场次请输入1,返回预订系统请输入2\n");

       scanf("%d",&f);

       return f;

       }

}

int yuding(int guozuori[][3],int zhoumo[][13],int ke[][5])         //预订主函数

{

       int f,a,b,c,h,F=0;

       while(1)                                                                                      //控制循环

{

Beggn:   system("cls");

       printf("欢迎使用羽毛球场馆预订系统\n");

Began6:  printf("直接预订请输入1,输出所有无课时间段中空闲场次请输入2,返回上一级请输入3\n");

       scanf("%d",&f);                                                                                   //选择功能

       if(f==1)

{

              while(1)

              {

Began:           system("cls");

Begin1:          printf("请输入所要预订的时间段(eg:1 18:00~19:00(周一晚上六点至七点))\n");

              scanf("%d %d:00~%d:00",&a,&b,&c);

              if(c!=b+1)   {MessageBox(0,"请输入正确时间","预订系统",0);goto Began;}

              if(a>=1&&a<=5)  if(b>=18&&b<=20){if(guozuori[a-1][b-18]==0)  {MessageBox(0,"预订成功","预订系统",0);guozuori[a-1][b-18]=1;}else  MessageBox(0,"该场地已被预订,请选择其他场次","预订系统",0);}else  {MessageBox(0,"请输入正确时间","预订系统",0);goto Began; }

              if(a>=6&&a<=7)  if(b>=8&&b<=20){if(zhoumo[a-6][b-8]==0)  {MessageBox(0,"预订成功","预订系统",0);zhoumo[a-6][b-8]=1;}else  MessageBox(0,"该场地已被预订,请选择其他场次","预订系统",0); }else  {MessageBox(0,"请输入正确时间","预订系统",0);goto Began;}

              if(a<=0||a>7)   {MessageBox(0,"请输入正确时间","预订系统",0);goto Began;}

              printf("\n\n继续预订请输入1,退出直接预订输入2\n");

Began1:         scanf("%d",&h);

              if(h==2)  break;

              if(h==1)  {printf("\n");}

              if(h!=1&&h!=2)   {MessageBox(0,"请输入正确数字","预订系统",0);printf("\n");goto Began1;}       //预订功能

              }

}

       if(f==2)

       {

Began2:  f=yuding2(guozuori,zhoumo,ke);

       if(f!=1&&f!=2)   {MessageBox(0,"请输入正确数字","预订系统",0);printf("\n");goto Began2;}

       if(f==1)  {printf("\n\n");goto Begin1;}

       if(f==2)    goto Beggn;

       }

       if(f==3)     {F=1;return F; }

   if(f!=1&&f!=2&&f!=3)   {MessageBox(0,"请输入正确数字","预订系统",0);printf("\n");goto Began6;}     //返回主函数

}

}

int chaxun(int guozuori[][3],int zhoumo[][13],int ke[][5])               //查询函数

{

       int a,b,c,f,F=0,h;

       while(1)

{

      

Begin:     system("cls");

       printf("欢迎使用羽毛球场馆查询系统\n");

Began4:  printf("查询单个场次请输入1,输出所有空闲场次请输入2,返回上一级请输入3\n");

       scanf("%d",&f);

       if(f==1)                                                                                      //条件语句

       {

              while(1)

              {

              system("cls");

              printf("请输入所要查询的时间段(eg:1 18:00~19:00(周一晚上六点至七点))\n");

              scanf("%d %d:00~%d:00",&a,&b,&c);

              if(c!=b+1)   {MessageBox(0,"请输入正确时间","查询系统",0);goto Begin;}

              if(a>=1&&a<=5)  if(b>=18&&b<=20){if(guozuori[a-1][b-18]==0)  MessageBox(0,"该场地空闲","查询系统",0);else  MessageBox(0,"该场地已被预订","查询系统",0);}else  {MessageBox(0,"请输入正确时间","查询系统",0);goto Begin; }

              if(a>=6&&a<=7)  if(b>=8&&b<=20){if(zhoumo[a-6][b-8]==0)  MessageBox(0,"该场地空闲","查询系统",0);else  MessageBox(0,"该场地已被预订","查询系统",0); }else  {MessageBox(0,"请输入正确时间","查询系统",0);goto Begin;}

              if(a<=0||a>7)   {MessageBox(0,"请输入正确时间","查询系统",0);goto Begin;}

              printf("\n\n继续查询请输入1,退出查询系统输入2\n");

              scanf("%d",&h);

              if(h==2)  break;

              if(h!=1&&h!=2)    MessageBox(0,"请输入正确数字","查询系统",0);

              }

        }

        if(f==2)   

{

             while(1)

   {

       system("cls");

       printf("所有空闲场次:\n");

       int i=0,j,k,f,h;

       for(j=0;j<5;j++)

       {

              for(k=0;k<3;k++)

              if(guozuori[j][k]==0)  printf("周%d %d:00~%d:00\n",j+1,k+18,k+19);

       }

       for(i=1;i<3;i++)

       {

              for(j=0;j<13;j++)

              if(zhoumo[i-1][j]==0)    printf("周%d %d:00~%d:00\n",i+5,j+8,j+9);

       }

       printf("\n\n返回查询系统请输入1,进入预订系统请输入2\n");

       scanf("%d",&f);

       if(f==1)     goto  Begin;

       if(f==2)     yuding(guozuori,zhoumo,ke);                          //跳转函数与控制

   }

}

   if(f==3)     {F=1;return F; }                                           //返回上一级

   if(f!=1&&f!=2&&f!=3)   {MessageBox(0,"请输入正确数字","预订系统",0);printf("\n");goto Began4;}    

}     

}

int main()                                                 //主函数

{

       char str[9]="GCGLDEXZ",yonghu[9];                       //用户名

       int f,h,guozuori[5][3]={0},zhoumo[2][13]={0},ke[3][5]={0};             //课表及初始场地状况录入

       system("color F0");

LOOP:    color(249);                                 //控制台色号选择

       printf("羽毛球场馆查询及预订系统说明:\n本系统提供当周羽毛球场馆查询及预订功能,其中查询功能分为查询单个场次和输出所有空闲场次,预订功能分为直接预订和输出无课时间段中的空闲场次");

       printf("\n注:本系统需要提前录入课表及初始场地空闲状况,默认无课与场地初始全空闲态\n");

       color(244);

       printf("请输入用户名以使用本系统:\n");

       gets(yonghu);

       if(strcmp(str,yonghu)==0)

{

       while(1)

       {

       system("cls");

       color(244);

LOOQ:   printf("欢迎使用羽毛球场馆查询及预订系统\n");

       printf("羽毛球馆仅在工作日18:00~21:00及周末8:00~21:00开放\n");

Began2:  printf("进入查询系统请输入1,进入预订系统请输入2,结束进程请输入3\n");         //欢迎使用!!!

       scanf("%d",&f);                                                                                                                      //各主要功能实现

       if(f==1)

       {

              h=chaxun(guozuori,zhoumo,ke);

              if(h==1)   {system("cls");goto LOOQ; }

       }

       if(f==2)

       {

              h=yuding(guozuori,zhoumo,ke);

              if(h==1)   {system("cls");goto LOOQ; }

       }

       if(f==3)  break;

       if(f!=1&&f!=2&&f!=3)   {MessageBox(0,"请输入正确数字","主系统",0);system("cls");goto LOOQ;}

       }

}

       else

       {

       MessageBox(0,"用户名无权使用,请重新输入","登陆界面",0);         //抱歉啦!

       system("cls");  

       goto LOOP;

       }

}


http://chatgpt.dhexx.cn/article/ecww7k3u.shtml

相关文章

计算机基础(一)硬件

校园里当初学习的知识基本消耗殆尽&#xff0c;脑海中只剩浅浅又浅浅的记忆痕迹。即使一直从事相关的工作&#xff0c;但仅仅在一个方向上做着苦行僧&#xff0c;从来无暇去还原看全貌。或许是心有余悸&#xff0c;亦或许是仅仅为了搞钱而没用心正面看过它。在滚滚向前的科技时…

计算机基础硬件知识点讲解

目录 1.CPU2.内存2.1 随机存取存储器2.2 只读存储器 3.高速缓冲存储器3.寄存器6.磁盘7.I/O设备8.运行流程 1.CPU CPU是计算机的大脑&#xff0c;主要和内存进行交互&#xff0c;从内存中提取指令并执行它。在时间多路复用(Time Multiplexing) 的CPU中操作系统往往停止运行一个…

计算机硬件基础知识(三)

1 存储系统 存储系统在计算机系统中的地位非常重要 一般有 Cache和主存组成 Cache 由于在CPU和存储系统间存在数据传送带宽的限制&#xff0c;因此在其中设置了Cache&#xff08;高速缓冲存储器&#xff09; 提高效率&#xff0c;但是由于成本更高&#xff0c;所以cache的容量…

计算机硬件:内存条的基础知识笔记

在电脑硬件中&#xff0c;CPU、显卡、内存均三者是重中之重&#xff0c;所以我们在选择这些核心硬件一定要慎重。今天给大家分享一下关于的电脑内存基础知识&#xff0c;让更多的装机朋友们可以更好的学习内存相关知识。 史上最易懂的电脑内存基础知识 内存条的基本概念&#x…

计算机硬件基本知识

从概念上讲&#xff0c;计算机的结构非常简单&#xff1a;**首先布置一根总线&#xff0c;然后将各种硬件设备挂在总线上。**所有的这些设备都有一个控制设备&#xff0c;外部设备都由这些控制器与CPU通信。而所有设备之间的通信均需通过总线&#xff0c;如图3-1所示。图3-1中的…

计算机硬件系统基础知识

计算机硬件系统 不管我们有没有发现&#xff0c;在生活中我们处处都在使用着计算机。 计算机给我们的生活带来了很多便利与效率&#xff0c;为了更好地使用计算机协助我们的工作学习我们需要对计算机有一个基础的了解。 计算机历史 定义&#xff1a;计算机&#xff08;compu…

硬件基础知识点

目录 ①数制转换②码制转换BCD码有权BCD码无权BCD码 ASCII码循环码&#xff08;格雷码&#xff09;奇偶校验码原码&#xff0c;反码&#xff0c;补码 ③逻辑运算及逻辑门与非或非与或非异或同或(异或非) 逻辑函数逻辑函数的概念由真值表写函数表达式逻辑函数的相等逻辑函数的基…

计算机硬件基础知识总结(一 )

1 进制计算 R进制转换成十进制 将R进制的数的每一位数值用 形式表示 即幂的底数是R 指数位k k是该位数字和小数点之间的距离&#xff08;在小数点左边 为正&#xff0c;右边为负&#xff09; 例如 &#xff1a; 10100.01 的十进制计算方式为 10100.01> 1*…

硬件基础知识

实模式 实模式又称为实地址模式&#xff0c;实&#xff0c;即真实&#xff0c;这意味着程序运行的是真实的指令&#xff0c;对指令的动作不作区分&#xff0c;直接执行指令的真实功能&#xff0c;同时也说明发往内存的地址是真实的&#xff0c;对任何地址不加限制地发往内存。…

计算机核心硬件基础知识

文章目录 计算机核心基础前言1、计算机组成原理1.1 计算机五大组成部分1.1.1控制器1.1.2运算器1.1.3存储器1.1.4输入设备input1.1.5输出设备output 1.2 程序运行与三大核心硬件(CPU 内存 硬盘)的关系 2、操作系统2.1 操作系统的由来2.2 系统软件与应用软件2.3 计算机系统三层结…

电脑基础知识精选(硬件篇)

电脑基础知识精选&#xff08;硬件篇&#xff09; 电脑基础知识一、处理器 CPU二、内存 RAM三 、硬盘 Disk四、显卡 GPU五、主板 Motherboard六、电源和显示器七、选配电脑常见问答八、如何开始选配电脑&#xff1f;结尾 电脑基础知识 这是一篇关于 电脑配置的一篇科普性 的文…

计算机硬件基础知识(一)

一、 硬件是计算机系统快速、高效、可靠运行的基础。 构成&#xff1a;运算器、存储器&#xff08;取证的主要对象&#xff09;、控制器和I/O控制系统等部件组成。 二、 内存&#xff08;Memory&#xff09; 也称内存存储器&#xff0c;ROM\RAM。是cpu、显卡或者其他内存板卡…

1.1 计算机硬件基础知识

本节主要考点 1、计算机硬件系统的组成 2、CPU的组成 3、进制转换 4、存储器与总线 5、输入输出控制 计算机硬件系统的组成 CPU的组成 • 运算器&#xff1a; • 功能&#xff1a; &#xff08;1&#xff09;执行所有的算术运算。如加、减、乘、除等基本运算及附加运算。 &…

计算机基础知识(上)(硬件篇)

1.计算机发展 1.1 计算机简介 计算机&#xff08;Computer&#xff09;&#xff1a;俗称电脑&#xff0c;是一种能接收和存储信息&#xff0c;并按照存储在其内部的程序对海量数据进行自动、高速地处理&#xff0c;然后把处理结果输出的现代化智能电子设备。 计算机有很多形式…

计算机硬件——基础知识

计算机硬件——基础知识 1.编程语言的作用 语言是用来沟通的&#xff0c;如英语、法语、葡萄牙语等。程序员编程的本质就是让计算机去工作&#xff0c;而编程语言就是程序员与计算机沟通的介质。 2.操作系统和硬件的关系 操作系统负责管理计算机系统中各种独立的硬件&#xff0…

计算机硬件基础知识

计算机硬件系统 不管我们有没有发现&#xff0c;在生活中我们处处都在使用着计算机。 计算机给我们的生活带来了很多便利与效率&#xff0c;为了更好地使用计算机协助我们的工作学习我们需要对计算机有一个基础的了解。 计算机历史 定义&#xff1a;计算机&#xff08;comp…

元数据的构建

什么是元数据 orm 框架一般需要定义表的模型&#xff0c;然后模型与表生成映射关系&#xff0c;那么就一定少不了解析模型然后找到与之映射的数据库表&#xff0c;所以&#xff0c;元数据是解析模型获得的&#xff0c;这些元数据将被用于构建 SQL、执行校验&#xff0c;以及用…

元数据与元数据管理

元数据与元数据管理 元数据 业务元数据 技术元数据 操作元数据 元数据管理 数据安全管理(Ranger) Apache Ranger 是一个用在 Hadoop 平台上并提供操作、监控、管理综合数据安全的框架。Ranger 的愿景是在 Apache Hadoop 生态系统中提供全面的安全性。 目前&#xff0c;Apa…

什么是元数据

转自&#xff1a;https://baijiahao.baidu.com/s?id1643094202189404837&wfrspider&forpc 如果把数据比作人的话&#xff0c;元数据就像数据的“户口本”&#xff0c;表明数据的存储位置&#xff08;家庭住址&#xff09;、字段长度&#xff08;年龄&#xff09;、字…

元数据管理

元数据管理的核心功能如下&#xff1a; 元数据采集 在操作方式上分为自动采集和手动采集两种&#xff1a; 自动采集&#xff1a;定义自动的、定时的采集任务。采集任务为自动调度的工作单元&#xff0c;为元数据的采集提供自动化的、周期性的&#xff0c;或指定某个时间触发的…