欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    课程设计报告(网吧管理系统).doc

    • 资源ID:2399683       资源大小:100.50KB        全文页数:27页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计报告(网吧管理系统).doc

    软件学院课程设计报告 网吧管理系统 年级班级: 专业方向: 学 号: 姓 名: 指导老师: 二零一零年六月一、问题描述本程序是一个网吧管理程序,首先选择界面选择需要的服务,包括查询空机位,预订与取消机位,用户可通过屏幕提示,查询自己的信息,包括打印预订单,等候单,以及打印用户列表。操作简洁,较易掌握。 二、基本要求1、软件要求Windows XP、Windows Vista、Windows7 64位系统。使用VC+6.02、硬件要求CPU:CORE I5 2.14GHZ 内存:4G三、需求分析1、功能需求 实现对网吧机位的预定,查询,取消预订,以及打印预订与候选单。2、性能需求根据系统提示选择查询以及预定的时间段 四、测试数据 查询时间:2010-06-23 时间段:1 机位预订:2010-06-23 时间段:1 预订者姓名:杨骥 预订者电话:123 打印预订单; 输出:预定日期:2010-06-23 预定时间:08:00 联系电话:123 五.疑难解答六. 心得体会与研究方向通过对C语言的学习,了解C语言的基本知识,运用C语言可以解决许多实际问题,尤其是在信息管理方面,C语言作为一门高级和计算机编程语言,有其强大的功能。同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。在系统的时候发现自己的能力还是有限,要想学好C语言,并且灵活应用还是需要下苦功夫的,在接下来的暑假中我会经常上机实践,做到熟练掌握C语言中的精华。数据结构是C语言的基础,希望能在把编程练习好之后,继续深入学习数据结构,并结合C语言来继续进一步提高编程能力。七. 程序源代码#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1 /* 计算机总台数,可以根据实际需要改动 */#define P 11 /* 定义输入的日期字符数组,其格式为2009-12-23,共11位(包含0),无需改动 */#define T 12 /* 手机号码长度,共12位(包含0) */#define S 13 /* 表示时间段的输出长度,如8:00-10:00,共占13位 */* 数据结构的定义 */* 计算机类(关于类,有点OOP的的意味,在这里可以理解为相关数据在内存中的表现形式) */struct Computer int no; /* 计算机编号,个人感觉在这里没多大用处 */ int isOrder; /* 是否被预定,0表示未预定,1表示已预定 */;/* 用户类 */struct User char nameP; /* 用户姓名 */ char telT; /* 用户联系方式 */ struct User *next; /* User类型指针 */;/* 预订信息类 */struct OrderInfo char dateP; /* 日期 */ int time; /* 时间段 */ struct User *user; /* User类型指针,指向一个User类型节点 */ struct OrderInfo * next;/* 重命名结构体 */typedef struct Computer Computer;typedef struct OrderInfo OrderInfo;typedef struct User User;/* 定义相关全局变量 */static Computer computersN; /* 表示20台计算机的数组 */static OrderInfo orderList; /* 预订单,以链表表示 */static OrderInfo waitList; /* 等候单 */static User userList; /* 用户列表 */static OrderInfo *orderHead = &orderList; /* 指向预订单头结点的指针 */static OrderInfo *waitHead = &waitList; /* 指向等候单头结点的指针 */static User *userHead = &userList; /* 指向用户列表头结点的指针 */static OrderInfo *orderCurrent = &orderList; /* 指向预订单队尾的指针,初始指向头结点 */static OrderInfo *waitCurrent = &waitList; /* 指向等候单队尾的指针,初始指向头结点 */static User *userCurrent = &userList; /* 指向用户列表队尾的指针,初始指向头结点 */static char strS = "0"/* 函数声明 */void init(); /* 系统初始化,相关全局变量的初始化 */void mainMenu(); /* 主菜单中的选项逻辑处理 */int select(char date,int time); /* 通过日期和时间段进行查询,返回繁忙的计算机的数目 */void order (char date,int time); /* 处理预定信息 */void printInfo(char date,int time,int *used,int *wait); /* 通过日期和时间段打印出相关预订单和等候单的信息,并以指针形式返回预定数目和等候数目 */void deleteFromOrderList(char date,int time,int n); /* 从预订单中删除相关条目,并将等候单中第一个用户自动添加到预订单中 */void deleteFormWaitList(char date,int time,int n); /* 从等候单中删除相关条目 */void cancel(char date,int time); /* 通过日期和订单号删除相关条目 */int getDate(char date,int i); /* 获得日期的输入,并进行相关判断操作 */int isBusy(int count); /* 判断是否满员 */char* showTime(int time); /* 输出相应时间段 */void showMenu(); /* 显示主菜单选项 */int getFreeTime(char date, int time); /* 通过日期和时间段获得当前是否满员,1表示未满 */void insertIntoList(int i,char date,int time,char name,char tel); /* 向链表中插入数据 */* 程序入口点 */void main() init(); mainMenu();/* 系统初始化(全局变量的初始化) */void init() int i; for(i = 0; i < N; i+) computersi.no = i; computersi.isOrder = 0; strcpy(orderList.date,""); orderList.time = 0; orderList.user = NULL; orderList.next = NULL; strcpy(waitList.date,""); waitList.time = -1; waitList.user = NULL; waitList.next = NULL;/* 显示主菜单选项 */void showMenu() printf("*欢迎使用网吧管理系统*n"); printf("n"); printf(" 1.查询n"); printf(" 2.机位预定n"); printf(" 3.取消预定n"); printf(" 4.退出系统n");/* 调试功能,以下三项是做测试时使用的,可以根据实际需要增删 */* * */ printf(" 5.打印预订单n"); printf(" 6.打印等候单n"); printf(" 7.打印用户列表n");/* */ printf("n"); printf("请输入您的选择: "); printf("n");/* 输出相应时间段 */char *showTime(int time) switch(time) case 1: strcpy(str,"08:00-10:00"); break; case 2: strcpy(str,"10:00-12:00"); break; case 3: strcpy(str,"12:00-14:00"); break; case 4: strcpy(str,"14:00-16:00"); break; case 5: strcpy(str,"16:00-18:00"); break; case 6: strcpy(str,"18:00-20:00"); break; return str;/* 主菜单逻辑处理 */void mainMenu() int choice = 0; /* 选项 */ char dateP,ch; int time = -1; /* 时间段初始化为-1 */ int i,result; /* result表示输入时间数据是否满足相关要求 */* 若要开启调试功能,以下注释也应去掉 */* * */ OrderInfo *orderTemp; OrderInfo *waitTemp; User *userTemp;/* */ showMenu(); /* 显示相关选项 */ do /* 需要循环判断,知道输入4(退出)时才结束程序 */ scanf("%d",&choice); switch(choice) case 1 : /* 查询 */ /*这条语句主要是由于在getDate()函数中将会捕获到在主菜单中选择相应功能后的那个回车, 此时选择1,然后回车,它将捕获到这个回车,造成不必要的麻烦*/ ch = getchar(); printf("请输入日期,格式yyyy-mm-dd(如:2009-12-22):n"); result = getDate(date,P); while(result != 1) /* 判断是否满足相应输入要求 */ result = getDate(date,P); printf("请选择时间段:n"); for(i = 1; i <= 6; i+) printf("%d. %sn",i,showTime(i); /* showTime(),打印相关的时间段信息 */ scanf("%d",&time); while(time <1 | time > 6) /* 同样是进行输入校验 */ printf("对不起,您输入的参数有误,请核对后重新输入!nn"); scanf("%d",&time); isBusy(select(date,time); /* isBusy()判断是否满员 */ system("pause"); /* system("pause")->暂停DOS窗口输出 */ break; case 2 : ch = getchar(); printf("请输入日期,格式yyyy-mm-dd(如:2009-12-22):n"); result = getDate(date,P); while(result != 1) result = getDate(date,P); printf("请选择时间段:n"); for(i = 1; i <= 6; i+) printf("%d. %sn",i,showTime(i); scanf("%d",&time); while(time <1 | time > 6) printf("对不起,您输入的参数有误,请核对后重新输入!nn"); scanf("%d",&time); order(date,time); /* 调用预定相关逻辑处理函数 */ system("pause"); break; case 3 : ch = getchar(); printf("请输入日期,格式yyyy-mm-dd(如:2009-12-22):n"); result = getDate(date,P); while(result != 1) result = getDate(date,P); printf("请选择时间段:n"); for(i = 1; i <= 6; i+) printf("%d. %sn",i,showTime(i); scanf("%d",&time); while(time <1 | time > 6) printf("对不起,您输入的参数有误,请核对后重新输入!nn"); scanf("%d",&time); cancel(date,time); /* 调用取消预定相关逻辑处理 */ system("pause"); break; case 4 : printf("欢迎下次继续使用!n"); exit(0); /* 退出程序 */ break;/* 调试功能,以下部分是前面提到的调试时使用,可以按照需要选择增删此部分,这两部分应同时开启或关闭,以免引起不必要的麻烦 */* * */ case 5 : if(orderCurrent = orderHead) printf("暂无相关信息n"); printf("nn"); else orderTemp = orderHead->next; while(orderTemp != NULL) printf("预定日期: %sn",orderTemp->date); printf("预定时间: %sn",showTime(orderTemp->time); printf("预定者 : %sn",orderTemp->user->name); printf("联系方式: %sn",orderTemp->user->tel); printf("nn"); if( orderTemp->next != NULL) orderTemp = orderTemp->next; else break; system("pause"); break; case 6 : if(waitHead->next = NULL) printf("暂无相关信息n"); printf("nn"); else waitTemp = waitHead->next; while(waitTemp != NULL) printf("预定日期: %sn",waitTemp->date); printf("预定时间: %sn",showTime(waitTemp->time); printf("预定者 : %sn",waitTemp->user->name); printf("联系方式: %sn",waitTemp->user->tel); printf("nn"); if(waitTemp->next != NULL) waitTemp = waitTemp->next; else break; system("pause"); break; case 7 : if(userCurrent = userHead) printf("暂无相关信息n"); printf("nn"); else userTemp = userHead->next; while(userTemp != NULL) printf("联系人姓名: %sn",userTemp->name); printf("联系人电话: %sn",userTemp->tel); printf("nn"); if(userTemp->next != NULL) userTemp = userTemp->next; else break; system("pause"); break;/*/ default : printf("对不起,您输入的参数有误,请核对后重新输入!nnn");system("pause"); system("cls"); /* system("cls")->清空当前DOS窗口中的内容 */ showMenu(); while(choice != '4'); /* 除非输入4,否则将不会结束循环 */* 获得日期的输入,并进行相关判断操作,其中i表示需要输入的字符串长度,如2009-12-23,这个字符串就是11位的(包含0) */* 以下相关代码是进行输入校验的 */int getDate(char date,int i) char *p = date,ch; int m = 0 , result = 0 ,j; /* result表示输入是否合法,1表示合法 */ while(m <= i) ch = getchar(); if(ch != 'n') if(ch >='0' && ch <= '9' | ch= '-') /* 输入的字符只能为'0'到'9'以及'-' */ *p+ = ch; m+; else *p = '0' break; else *p ='0' break; *p+ = '0' m+; if(m = i) /* 判断长度是否符合输入要求 */ result = 1; for(j = 0; j < P; j+) /* 判断是否仅仅只有date4和date7为'-',以此来判断格式是否为yyyy-mm-dd */ if(j = 4 | j = 7) continue; if(datej = '-') result = 0; break; return result;/* 查询某时间段是否满员,返回已预定的机位数 */int select(char date,int time) OrderInfo *temp = orderHead; /* 临时性存储头结点 */ int count = 0; /* 存储该时间段预定人数 */ do /* 遍历orderList,获得相同时间段的预定信息,统计20台机器中正在使用多少台 */ if(strcmp(temp->date,date) = 0 && temp->time = time) count+; if(temp->next != NULL) /* 若为空,表示已到链表末尾,直接跳出循环 */ temp = temp->next; else break; while(temp != NULL); return count;/* 判断是否满员 */int isBusy(int count) int result = 0; /* 该变量作为返回值,指示该时间段是否满员,1表示已满,0表示空闲 */ /* 若使用数目大于20台,则提示无空闲机位,否则打印出空闲机位 */ if(count >= N) printf("对不起,暂无空闲机位nn"); result = 1; else printf("恭喜您,还剩%d个机位nn",N - count); return result; /* 该返回值表示是否满员 */* 通过日期和时间段获得当前是否满员,1表示未满 */int getFreeTime(char date, int time) int result = 0; int count = select(date,time); if(count < N) result = 1; return result;/* 预定逻辑处理,首先判断是否满员,可以调用select函数 */void order (char date,int time) int result; char nameP; char telT; system("cls"); printf("*欢迎使用网吧管理系统*nn"); printf("您查询的时间段是: %s %snn",date,showTime(time); result = isBusy(select(date,time); if(result = 0) /* 未满 */

    注意事项

    本文(课程设计报告(网吧管理系统).doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开