网吧管理系统设计C语言_第1页
网吧管理系统设计C语言_第2页
网吧管理系统设计C语言_第3页
网吧管理系统设计C语言_第4页
网吧管理系统设计C语言_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/摘要随着社会的发展,人们的生活水平逐步得到提高,科学技术的应用也逐步在人们的生活中得到体现。网吧是社会发展的产物之一,它成为了人们业余休闲的又一个场所。网吧管理者要靠人力管理网吧里面众多的电脑信息明显很困难,而且存在很多缺陷。科学技术的不断提高,计算机科学的日渐成熟,其强大的功能已为人们深刻相识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,运用计算机对网吧的电脑信息进行管理,已成为了必定选择。Withthesocialdevelopmentandpeople'slivingstandardsimproved,scienceandtechnologyapplicationsinpeople'slivesgraduallybereflected.Internetcafesareaproductofsocialdevelopmentandithasbeenoneofplacewherepeoplespendtheirleisuretime.ItisclearlydifficultthatInternetcafemanagersrelyonhumanmanagementtomanagealargenumberofcomputers,andtherearemanydefects.Withthecontinuousimprovementofscienceandtechnology,computerscienceandthematuringofitspowerfulfeaturesforpeopletohaveaprofoundunderstanding.Ithasenteredthehumansocietyinvariousfieldsandisplayinganincreasinglyimportantrole.Aspartofthecomputerapplication,theuseofthecomputeronthemanagementofnet-bar’scomputerinformationhasbecomeaninevitablechoice.1.课程设计目的:1.1娴熟驾驭C语言课程中所学的理论学问;1.2通过综合C语言的基本学问来解决实际问题;1.3加强分析和解决问题的实力。2.课程设计题目描述和要求:2.1题目描述:题目:网吧电脑管理系统。描述:在设计该程序时,要将系统的不同功能分成各个模块,每个模块由一个函数定义,整个程序由函数调用来实现。每个模块是一个子函数,由一个主函数调用各个子函数。在定义子函数时,依据其不同的功能来选择不同的语句,须要运用循环是可以用“do……while”来实现,须要运用选择时可以用“switch”来实现,须要运用条件时可以用“if”来实现等。2.2要求:电脑信息要求:电脑编号,购买时间,显示器规格,是否带摄像头,每小时资费标准,当前占用状况(B-忙,S-闲)等。系统功能要求:⑴、系统以菜单方式工作,管理员用密码登陆。⑵、新增电脑信息。用数组数据类型赋初值的方法或从键盘输入的方法把电脑信息送到各个数组中,然后把它们输出显示。⑶、删除电脑信息。随意输入一个电脑编号,将该电脑全部的信息从数组中删除。⑷、查看电脑信息。随意输入一个电脑编号,打印出该电脑的全部相关数据。同时,能供应依据用户要求的显示器规格和摄像头状况,查找未被占用的电脑。⑸、修改电脑信息。随意输入一个电脑编号,打印出全部相关信息后,可对某一项信息进行修改并保存。⑹、运用计费。输入一个用户运用的电脑编号、时长,计算该用户应支付的费用。3.课程设计内容:3.1各个模块设计的说明:定义相关变量和子函数的声明运用结构体定义每台电脑的信息。“structcomputer”结构体类型包括了每台电脑不同类型的数据项(电脑编号,购买时间,显示器规格,是否带摄像头,每小时资费标准,当前占用状况(B-忙,S-闲)等);“structbuydate”结构体类型包括了购买时间的月、日、年,再套用到“structcomputer”中。对要调用的函数进行声明#defineN15/*定义电脑的台数上限*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>structbuydate/*定义结构体*/{ intmonth; intday; intyear;};structcomputer/*定义结构体*/{ intnum; structbuydatedate; chardisplay[10]; charcamera; floatfee; charcondition;}cmp[N];/*定义数组*/intcmp_count=0;/*子函数声明*/voidma();voidadd_cmp_info();voidsearch_cmp_info();voidoutput_cmp_info();voidomit_cmp_info();voidmotify_cmp_info();voidcost_cmp_info();voidgo_out();主函数输出显示欢迎界面,通过函数getch(),printf("*")限制密码的输入输出。密码正确就进入菜单函数ma();密码错误系统会提示printf("\n\n密码错误,按随意键重新返回输入!"),错误次数达三次时printf("对不起!你输入的密码错误次数已达三次!你无权进入该系统!\n"),强制推出。输出欢迎画面j=0起先循环当j<3密码输入次数输出欢迎画面j=0起先循环当j<3密码输入次数i=0起先循环输入密码strcmp(pass,"123456")==0假真密码错误,ma()重新输入。错误次数达三次,无权进入。{ inti,j; charpass[10]; for(j=0;j<3;j++) { system("cls");/*清屏*/ system("colorb0");/*系统背景颜色*/ printf("\n\n\n\n\n\n"); printf("\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n"); printf("\t\t========================================================\n"); printf("\t\t※※\n"); printf("\t\t※\1\3欢迎进入网吧电脑管理系统\3\1※\n"); printf("\t\t※※\n");printf("\t\t========================================================\n"); printf("\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n"); printf("\n\n"); printf("请输入登陆密码:"); fflush(stdin); for(i=0;i<6;i++) { pass[i]=getch();/*输入密码并限制其输出为星号*/ printf("*"); } pass[6]='\0'; if(strcmp(pass,"123456")==0)/*推断输入密码是否正确*/ ma(); else { printf("\n\n密码错误,按随意键重新返回输入!"); getch(); } } printf("\n"); printf("对不起!你输入的密码错误次数已达三次!你无权进入该系统!\n");}3.1.3while(cont=='y'||cont=='Y')输入编号输入购买日期输入显示器规格输入摄像头有无输入资费标准输入占用状况是否接着新增conty/Y=getch()while(cont=='y'||cont=='Y')输入编号输入购买日期输入显示器规格输入摄像头有无输入资费标准输入占用状况是否接着新增conty/Y=getch()n/Nadd_cmp_info()ma()voidadd_cmp_info(){ inti; charcont; system("cls"); do { printf("请输入你要新增的电脑的编号:\n"); scanf("%d",&i); fflush(stdin); cmp[i-1].num=i;/*i-1为指针后移*/ printf("请输入第%d台电脑的购买时间(月,日,年):",i); scanf("%d,%d,%d",&cmp[i-1].date.month,&cmp[i-1].date.day,&cmp[i-1].date.year); fflush(stdin); printf("请输入第%d台电脑的显示器规格(yj17/19或cp17/19):",i); scanf("%s",&cmp[i-1].display); fflush(stdin); printf("请输入第%d台电脑是否有摄像头(Y/N):",i); scanf("%c",&cmp[i-1].camera); fflush(stdin); printf("请输入第%d台电脑的收费标准:",i); scanf("%f",&cmp[i-1].fee); fflush(stdin); printf("请输入第%d台电脑的占用状态(S-闲,B-忙):",i); scanf("%c",&cmp[i-1].condition); fflush(stdin); printf("是否接着新增?(y/n)\n"); fflush(stdin); cont=getchar(); }while(cont=='y'||cont=='Y');/*推断是否接着新增,不分大小写*/ printf("\n\n\n按随意键返回菜单。"); getch(); ma();/*调用子函数返回主菜单*/}各台电脑的信息如下for(i=0;i<N;i++)"No.buydatedispalycamera各台电脑的信息如下for(i=0;i<N;i++)"No.buydatedispalycamerafeecondition按随意键getch()ma()通过for循环输出N台电脑的数据。voidouput_cmp_info(){ inti; system("cls"); printf("\n"); printf("\t\t各台电脑的信息如下:\n"); printf("No.\tbuydate\tdispaly\tcamera\tfee\tcondition\n"); printf("\n"); printf("\n"); for(i=0;i<N;i++) printf("%d\t%d-%d-%d\t%s\t%c\t%.1f\t%c\n",cmp[i].num,cmp[i].date.month,cmp[i].date.day,cmp[i].date.year,cmp[i].display,cmp[i].camera,cmp[i].fee,cmp[i].condition);/*按数组依次依次输出数据*/ printf("\n\n按随意键返回菜单。"); getch(); ma();/*调用子函数返回主菜单*/}3.1.5首先显示查找菜单界面,查找方式分为两种:一种是编号查找,一种是要求查找,用选择结构switch语句来实现选择。case1编号查找中套用if语句推断输入的编号是否在电脑N上限内,再用for循环找出匹配电脑;case2要求查找整体运用for循环语句和if推断语句,for循环中再套用if语句和for语句来推断查找条件是否匹配和找出匹配的电脑,其中定义了一个count记录找到的匹配电脑的数目,if(count==0)则没有匹配的电脑。每个case中是否接着查找就用自我套用函数search_cmp_info()来实现。查找菜单case1case2查找菜单case1case2编号查找num要求查找displayif(num<N)camerafor(i=0;i<N;i++)for(i=0;i<N;i++)if(cmp[i].num==num)if(条件满足)输出cmp[i]各信息输出cmp[i]各信息是否接着查找count++cont=getch()if(cont=='y'||cont=='Y')search_cmp_info()elseif(count==0)无匹配电脑ma()voidsearch_cmp_info(){ intnum; inti,j,flag,count=0; chardisplay[10]; charcont,camera; system("cls"); printf("\n"); printf("\t\t**********查找菜单**********\n"); printf("\t\t1.选择电脑编号查找方式\n"); printf("\t\t2.选择依据要求查找方式\n"); printf("请选择查找的方式:"); scanf("%d",&flag);/*选择变量*/ switch(flag) { case1:printf("\t\t请输入你要查找的电脑编号:"); scanf("%d",&num); if(num<N)/*编号在查找范围内就执行*/ {printf("No.\tbuydate\tdispaly\tcamera\tfee\tcondition\n");printf("\n"); printf("\n"); for(i=0;i<N;i++) if(cmp[i].num==num)/*找出要查找编号的电脑信息*/ {printf("%d\t%d-%d-%d\t%s\t%c\t%.1f\t%c\n",cmp[i].num,cmp[i].date.month,cmp[i].date.day,cmp[i].date.year,cmp[i].display,cmp[i].camera,cmp[i].fee,cmp[i].condition); printf("\n"); printf("请问你是否接着查找(y/n):"); cont=getch(); printf("%c",cont); printf("\n"); if(cont=='y'||cont=='Y') search_cmp_info();/*函数自我套用,达到循环作用*/ } } else { printf("\n\n对不起!无法找到你要查找的电脑编号\n"); printf("\n\n按随意键返回菜单"); getch(); ma(); } break; case2:printf("\t\t请输入你要查找的电脑的要求(如:yj17或cp17):"); scanf("%s",&display); fflush(stdin); printf("\t\t你要的电脑须要摄像头不(Y/N)?:"); scanf("%c",&camera); fflush(stdin); printf("\n\n"); for(i=0;i<N;i++) {if(strcmp(cmp[i].display,display)==0&&(cmp[i].camera==camera)&&(cmp[i].condition=='S'||cmp[i].condition=='s'))/*匹配条件*/ { count++;/*记录匹配电脑数目*/printf("\t\t第%d台机子符合要求\n",cmp[i].num); printf("No.\tbuydate\tdispaly\tcamera\tfee\tcondition\n printf("\n");/*输出匹配电脑的信息*/ for(j=0;j<N;j++) if(cmp[j].num==cmp[i].num) {printf("%d\t%d-%d-%d\t%s\t%c\t%.1f\t%c\n",cmp[i].num,cmp[i].date.month,cmp[i].date.day,cmp[i].date.year,cmp[i].display,cmp[i].camera,cmp[i].fee,cmp[i].condition); printf("\n"); printf("请问你是否接着查找(y/n):"); cont=getch(); printf("%c",cont); printf("\n"); if(cont=='y'||cont=='Y')/*是否接着查找*/ search_cmp_info();/*函数自我套用达到循环*/ } printf("\n"); } } if(count==0)/*匹配电脑不存在*/ { printf("\n\n对不起!无法找到你要查找的电脑编号\n"); printf("\n\n按随意键返回菜单"); getch(); ma();/*调用子函数返回主菜单*/ } break; } printf("\n\n"); printf("按随意键返回菜单。"); getch(); ma();/*调用子函数返回主菜单*/}3.1.6用if语句推断输入的编号是否在范围内,再用for语句找出要删除的电脑信息,进行删除。其中还用到了一个if语句用来确认是否输入IIf(num<N)if(judge=='Y'||judge=='y')for(j=0;j<N;j++)删除信息ma()if(judge=='N'||judge=='n')ma()elsema()赋值味“0”,是单个字符的就赋值为空格,字符串就用strcpy复制函数覆盖原有的字符串。voidomit_cmp_info(){ intj,num; charjudge; system("cls"); printf("请输入你要删除的电脑的编号:\n"); fflush(stdin); scanf("%d",&num); printf("\n"); if(num<N)/*编号在查找范围内就执行*/ { printf("你确定要删除的电脑信息的编号是%d吗?(Y/N)\n",num); fflush(stdin); scanf("%c",&judge); if(judge=='Y'||judge=='y')/*确认输入无误*/ { for(j=0;j<N;j++) { if(cmp[j].num==num)/*找出匹配电脑*/ { cmp[j].num=0; cmp[j].date.month=0; cmp[j].date.day=0; cmp[j].date.year=0; strcpy(cmp[j].display,""); cmp[j].camera=''; cmp[j].fee=0; cmp[j].condition=''; printf("\t\t删除完成\n"); printf("\n\n按随意键返回菜单"); getch(); ma();/*调用子函数返回主菜单*/ } } } if(judge=='N'||judge=='n') { printf("\n\n按随意键返回菜单"); getch(); ma();/*调用子函数返回主菜单*/ } } else { printf("\n\n对不起!无法找到你要删除的电脑编号\n"); printf("\n\n按随意键返回菜单"); getch();输入要修改的电脑编号num1for(i=0;i<N;i++)输入要修改的电脑编号num1for(i=0;i<N;i++)if(cmp[i].num==num1)输出该电脑的信息修改项目Switch(flag)case1case2for(i=0;i<N;i++)case3case4if(cmp[i].num==num1)case5case6相应项目的修改defaultbreak是否接着修改Y/yN/nmodifyma() }}3.1.7修改数据函数输入要修改电脑的编号(do……while),选择要修该的项目(switch语句),修改相关选项(case),修改完后选择是否继续修改(while)。voidmodify_cmp_info(){ inti,flag,num1; intnum2; intmonth,day,year; chardisplay[10]; charcamera; floatfee; charcondition; charcont; system("cls"); do { printf("\t\t请输入你要修改电脑信息的电脑编号:"); scanf("%d",&num1); printf("\n\n该电脑原有信息如下:\n");printf("No.\tbuydate\tdispaly\tcamera\tfee\tcondition\n");printf("\n");printf("\n"); for(i=0;i<N;i++) { if(cmp[i].num==num1)/*编号的匹配*/printf("%d\t%d-%d-%d\t%s\t%c\t%.1f\t%c\n",cmp[i].num,cmp[i].date.month,cmp[i].date.day,cmp[i].date.year,cmp[i].display,cmp[i].camera,cmp[i].fee,cmp[i].condition);/*输出匹配电脑的原有信息*/ } printf("\n\n"); printf("\t\t电脑信息修改的项目如下:\n"); printf("\t\t1.No.\n"); printf("\t\t2.buydate\n"); printf("\t\t3.display\n"); printf("\t\t4.camera\n"); printf("\t\t5.fee\n"); printf("\t\t6.condition\n"); printf("\t\t请选择你要修改的项目:"); scanf("%d",&flag); fflush(stdin); switch(flag)/*选择修改项目*/ { case1:printf("请输入改动的电脑编号:"); scanf("%d",&num2); for(i=0;i<N;i++) { if(cmp[i].num==num1) cmp[i].num=num2; } break; case2:printf("请输入改动的日期(月/日/年):"); scanf("%d,%d,%d",&month,&day,&year); for(i=0;i<N;i++) { if(cmp[i].num==num1) { cmp[i].date.month=month; cmp[i].date.day=day; cmp[i].date.year=year; } } break; case3:printf("请输入改动电脑的类型:"); scanf("%s",&display); for(i=0;i<N;i++) { if(cmp[i].num==num1) strcpy(cmp[num1-1].display,display); } break; case4:printf("请输入有无摄像头:"); scanf("%c",&camera); for(i=0;i<N;i++) { if(cmp[i].num==num1) cmp[num1-1].camera=camera; } break; case5:printf("请输入该台电脑的收费(每小时)标准:"); scanf("%f",&fee); for(i=0;i<N;i++) { if(cmp[i].num==num1) cmp[num1-1].fee=fee; } break; case6:printf("请输入该台电脑的状态(B-忙,S-闲):"); scanf("%c",&condition); for(i=0;i<N;i++) { if(cmp[i].num==num1) cmp[num1-1].condition=condition; } break;default:printf("输入出错!\n"); } printf("是否接着修改?(y/n):"); fflush(stdin); cont=getchar(); }while(cont=='y'||cont=='Y'); printf("\n\n\n按随意键返回菜单。"); getch(); ma();}3.1.8输入电脑编号和时长cost=cmp[num-1].fee*time是否接着Y/yN/ncost_cmp_info()ma()输入电脑编号和时长cost=cmp[num-1].fee*time是否接着Y/yN/ncost_cmp_info()ma()voidcost_cmp_info(){ charcont; intnum; floatcost=0,time; do { printf("请输入用户运用的电脑编号和时长:"); scanf("%d,%3f",&num,&time); cost=cmp[num-1].fee*time; printf("该用户须要支付%.1f元!\n",cost);printf("是否接着输入?(y/n):"); fflush(stdin); cont=getchar(); }while(cont=='y'||cont=='Y'); printf("\n\n\n按随意键返回菜单。"); getch(); ma();}3.1.9退该子函数在菜单函数中被套用,从而推出系统exit(0)。退出界面exit()退出界面exit()退出系统{ system("cls"); printf("\n\n\n\n"); printf("\t\t★§§§§§§§§§§§§§§§§§§§§§§§§§§§★\n"); printf("\t\t==========================================================\n"); printf("\t\t¤¤\n"); printf("\t\t¤感谢您运用电脑信息管理系统!¤\n"); printf("\t\t¤¤\n"); printf("\t\t¤*********************¤\n"); printf("\t\t¤¤\n"); printf("\t\t==========================================================\n"); printf("\t\t★§§§§§§§§§§§§§§§§§§§§§§§§§§§★\n"); printf("\n"); exit(0);}3.1.10输出选择菜单i=1i=2i=3i=4i=5i=6i=7defaultaddsearchouputomitmodifycostgo_outma()输出选择菜单i=1i=2i=3i=4i=5i=6i=7defaultaddsearchouputomitmodifycostgo_outma()voidma(){ inti; system("cls"); printf("\n"); printf("\t\t△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲\n"); printf("\t\t********************************************************\n"); printf("\t\t○○\n"); printf("\t\t●♂选择菜单♂●\n"); printf("\t\t○○\n"); printf("\t\t○1.新增电脑信息○\n"); printf("\t\t●2.查找电脑信息●\n"); printf("\t\t○3.显示电脑信息○\n"); printf("\t\t●4.删除电脑信息●\n"); printf("\t\t○5.修改电脑信息○\n"); printf("\t\t●6.运用计费状况●\n"); printf("\t\t○7.退出系统○\n"); printf("\t\t●●\n"); printf("\t\t○●\n"); printf("\t\t********************************************************\n"); printf("\t\t△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲\n"); printf("\n"); printf("选择菜单(1-7):"); scanf("%d",&i); switch(i) { case1:add_cmp_info();break; case2:search_cmp_info();break; case3:ouput_cmp_info();break; case4:omit_cmp_info();break; case5:modify_cmp_info();break; case6:cost_cmp_info();break;case7:go_out();break; default:printf("输入出错!按随意键返回菜单输入。\n");getch();ma(); }}3.2程序的调试、错误分析和完善密码登陆的调试:以密码输入进入系统,密码正确就进入到主菜单画面,调试时有意输入错误的密码,会返回到密码登陆画面,无论密码错误几次都可以,考虑到实际应用密码错误的次数应有限度,在此我运用for循环限制次数,当密码登陆界面出现三次后,自动跳出for循环,输出"对不起!你输入的密码错误次数已达三次!你无权进入该系统!"然后强制推出。新增数据的调试:起初我是用for循环依次输入各台电脑的相关信息,调试时发觉信息的输入必需按依次依次输入,一旦删除了中间的某台电脑的信息,想要添加新的电脑信息在该数组名中就不能了。针对这一点,我后来改用do……while循环来完善,编号不是数组名的序列号(cmp[i-1].num=i),编号是独立出来的一组信息,想在哪个空电脑信息的数组上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论