当前位置:文档之家› C语言课程设计-网吧管理系统

C语言课程设计-网吧管理系统

《通信工程专业C语言课程设计》报告专业:通信工程班级:0802*名:**指导教师:**二00九年十二月二十五日目录一、课程设计题目及所涉及知识点 (1)二、课程设计思路及设计流程图 (1)三、课程设计中遇到的难点及解决办法 (4)四、小结 (4)参考书目 (6)附录原程序 (7)一.课程设计题目及所涉及知识点(一).课程设计题目:网吧管理系统(1).基本内容网吧管理系统管理信息包括会员的会员名、性别、年龄、积分等。

试设计一网吧管理系统,使之能提供以下功能:系统以菜单方式工作,密码登陆。

1.会员信息的录入(增加数据)。

用数组数据类型赋初值的方法把会员信息送到各个数组中(但要注意是合法数据),然后把它们保存起来。

2.会员信息的删除(删除数据)。

任意输入一位会员号,将它所有的信息从组数中删除。

3.会员信息的浏览(查找数据)。

任意输入一位会员号,打印出他的所有数据。

要求能多次查找。

4.会员积分的计算(积分数据)。

任意输入一位会员号,打印出会员的积分。

要求能多次积分计算。

5.会员管理系统登陆。

输入密码登陆系统。

(2). 课程设计的要求与数据1.编程时,设计函数来完成每个功能,通过main函数调用各函数。

2.程序中的输入输出要加提示说明。

3.输出的结果要准确、清晰、美观。

(二).所涉及知识点:结构体数组的定义与引用;函数的定义与调用;局部变量和全局变量; for循环语句;指针;if语句;switch语句;break语句;格式输入与输出;字符串处理函数;函数的定义;数组作为函数参数.二、课程设计思路及设计流程图1、课程设计思路根据题目的要求,需要一个主程序main()和12个子程序,分别为quit()、loading()、menu()、input()、save()、load()、list()、window()、add()、del()、search()、point();可以实现退出、登陆、菜单、输入、保存、导入、列表、界面、增加、删除、查找、积分。

其中,登陆、增加、删除、查找、积分五个函数为主要处理对象,也是网吧管理系统的核心部分。

2、课程设计流程图Main()Del()三、课程设计中遇到的难点及解决办法1 结构体数组的定义。

当在结构体中有float型数据时系统会提示错误。

解决方法:用其他变量代替然后再定义。

2 在调试未运行完自动跳出到主界面。

解决方法:是由于系统问题,在遇到float型数据时会出现系统错误。

3 变量未定义而先使用。

解决方法:定义变量。

4 输入名称与数据库中文件的数据匹配。

解决办法:若输入名称存在,则跳回主界面,重新操作。

若不存在,则进行下一项。

5文件的保存与导入。

解决方法:利用文件指针。

6不知道如何使型参于实参一一对应。

解决办法:对应相应参数调试。

7在调试程序是出现死循环。

解决办法:找出循环语句,调试修改范围。

8在进行导入时出错。

解决方法:看变量是否一致,看型参以实参是否对应。

9 整合完善。

解决办法:增加清屏和提示等措施完善美化程序。

四、小结C语言是一门计算机基础语言,通过这一学期的学习,对于它的一些特点和算法有了一定程度的了解,并能够做一些中等的题目,但并没有完全掌握。

这两周的课程设计正是让我们巩固以前的知识并在此基础上能够有所突破。

作为一种计算机程序设计语言。

它既有高级语言的特点,又具有汇编语言的特点。

它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛。

同时,其特点鲜明,它是一种结构化语言。

层次清晰,便于按模块化方式组织程序,易于调试和维护。

C语言的表现能力和处理能力也极强。

它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。

它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

具体来说:1. 简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。

它把高级语言的基本结构和语句与低级语言的实用性结合起来。

C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2. 运算符丰富C的运算符包含的范围很广泛,共有种34个运算符。

C语言把括号、赋值、强制类型转换等都作为运算符处理。

从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3. 数据结构丰富C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。

能用来实现各种复杂的数据类型的运算。

并引入了指针概念,使程序效率更高。

另外C语言具有强大的图形功能, 支持多种显示器和驱动器。

且计算功能、逻辑判断功能强大。

4. C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5. C语法限制不太严格、程序设计自由度大一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。

而C语言允许程序编写者有较大的自由度。

通过这次创新的课题——网吧管理系统其设想——构造——整合——优化等一系列项目完成,了解到程序设计的严谨性,也更加体会到C语言给大家带来的方便。

同时学会了很多调试程序的方法,在小组成员的探讨中不断学习到许多最优的程序设计,而且懂得了更多更好如何处理错误的方法。

对C语言的使用进一步的提高,加深了我对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能,结构设计的合理性决定了这个程序的价值。

程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。

可得最后结论。

在程序设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。

程序设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。

在这个社会中,经验与想法最为重要。

C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。

使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。

使我们体会到自身知识和能力能在实际中的应用和发挥。

不但可以激发创新意识,还可以开发创造能力、培养沟通能力。

这次实习时间虽然仅有一个星期,但确实使我受益非浅。

通过实习我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对C++的使用技巧。

另外,实习中老师对我们进行了细心、耐心的指导,鼓励我们对程序进行合理改进,培养了我们的创新意识和创新能力。

原来是我认为可怕的课程设计,就在种种辅助条件下完成了,心里有说不出的高兴。

参考书目:[1] 谭浩强,《c程序设计教程》,北京,清华大学出版社,2007年[2] 田淑清,《c语言程序设计》,北京,高等教育出版社,2008年附录原程序:#include <stdio.h>#include <conio.h>#include <windows.h>#include <string.h>/*定义相关变量*/struct vip/*结构体*/{char name[10];char sex;int age;int point;};/*定义各函数*/struct vip vi[100];void menu();void input();void del();void point();void del();void add();void search();void quit();int load();void save(int m);void loading();void window();void list();/*退出函数*/void quit(){system("cls");printf("\n\n\n");printf("\t\t************************************************\n\n"); printf("\t\t************谢谢您使用428网吧管理系统***********\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\n");printf("\t\t*************通信工程0802第一小组***************\n\n"); printf("\t\t************************************************\n\n\n\n\n"); }/*登陆函数*/void loading(){int x,y=123456;system("cls");printf("提示:密码为123456\n");printf("\n\n\n\n\n\n");printf("\t\t\t请输入登录密码:");scanf("%d",&x);if(x==y)menu();else if(x!=y){printf("\n\n\n\t\t\t密码错误!按任意键返回...");getch();window();}}/*菜单函数*/void menu(){int x;system("cls");printf("\t ******************************************************\n"); printf("\t ** **\n"); printf("\t ** 会员管理**\n"); printf("\t ** **\n"); printf("\t ******************************************************\n"); printf("\t\t\t1----输入会员信息\n");printf("\t\t\t2----所有会员信息\n");printf("\t\t\t3----查找会员信息\n");printf("\t\t\t4----增加会员信息\n");printf("\t\t\t5----删除会员信息\n");printf("\t\t\t6----会员积分管理\n");printf("\t\t\t7----退出管理系统\n");printf("请选择服务:\t");L:scanf("%d",&x);if(x>=1&&x<=7){switch(x){case 1:input();break;case 2:list();break;case 3:search();break;case 4:add();break;case 5:del();break;case 6:point();break;case 7:quit();break;}}else{printf("选择非法项,请重新输入选择:");goto L;} }/*输入函数*/void input(){int i,m;system("cls");printf("请输入要添加会员数:\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入会员名: ");scanf("%s",vi[i].name);getchar();printf("请输入性别: (m--男f--女) ");scanf("%s",&vi[i].sex);printf("请输入年龄: ");scanf("%d",&vi[i].age);printf("\n\n");}printf("\n\n\t\t\t\t添加成功!\n");save(m);printf("\n\n\n按任意键返回菜单...");getch();menu();}/*保存文件函数*/void save(int m){int i;FILE*fp;if ((fp=fopen("vip_list","wb"))==NULL) /*创建文件并判断是否能打开*/ {printf ("无法打开文件!\n");printf("\n\n\n按任意键返回菜单...");getch();menu();}for (i=0;i<m;i++) /*将内存中会员的信息输出到磁盘文件中去*/ if (fwrite(&vi[i],sizeof(struct vip),1,fp)!=1)printf("文件读写错误!\n");fclose(fp);}/*导入函数*/int load(){FILE*fp;int i=0;if((fp=fopen("vip_list","rb"))==NULL){printf ("无法打开文件!\n");printf("\n\n\n按任意键返回菜单...");getch();menu();}else{do{fread(&vi[i],sizeof(struct vip),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}/*列表函数*/void list(){int i;int m=load();system("cls");printf("\n\n\n\t会员名\t性别\t年龄\t积分\n");for(i=0;i<m;i++)printf("\n\n\n\t%s\t%c\t%d\t%d\n",vi[i].name,vi[i].sex,vi[i].age,vi[i].point); printf("\n\n\n按任意键返回菜单...");getch();menu();}/*删除函数*/void del(){int i,j,n,flag;char name[10];int m=load();system("cls");printf("请输入要删除的会员名:\n");scanf("%s",name);getchar();for(flag=1,i=0;flag&&i<m;i++){if(strcmp(vi[i].name,name)==0){printf("\n此会员信息为:\n");printf("\n\n\n\t会员名\t性别\t年龄\n");printf("\n\n\n\t%s\t%c\t%d\t%d\n",vi[i].name,vi[i].sex,vi[i].age,vi[i].point);printf("\n确实删除请按1,否认删除请按0\n");scanf("%d",&n);}if(n==1) /*如果删除,则其他的信息都往上移一行*/{for(j=i;j<m-1;j++){strcpy(vi[j].name,vi[j+1].name);vi[j].sex=vi[j+1].sex;vi[j].age=vi[j+1].age;vi[j].point=vi[j+1].point;}flag=0;}}if(!flag)m=m-1;elseprintf("\n您所查找的会员信息不存在!\n");save(m);printf("\n\n\n按任意键返回菜单...");getch();menu();}/*查找函数*/void search(){char name[10];int i;int m=load();system("cls");printf("\n\n\t\t请输入要查找会员名:");scanf("%s",&name);{ for(i=0;i<m;i++)if(strcmp(vi[i].name,name)==0){printf("\n\n您的会员信息为:\n");printf("\n\n\t会员名\t性别\t年龄\n");printf("\n\n\t%s\t%c\t%d\n",vi[i].name,vi[i].sex,vi[i].age );printf("\n\n\n\n\n\n\n\n\n\n按任意键返回菜单...");getch();menu();}}if(i==m)printf("\n\n\n\t\t您所查找的会员信息不存在!\n");printf("\n\n\n\n\n\n\n\n\n\n\n按任意键返回菜单...");getch();menu();}/*增加函数*/void add(){int n;int a=0;int i,j;int m=load();system("cls");{printf("\t\t\t请输入想增加的会员数:");scanf("%d",&n);for (j=m;j<(m+n);j++){printf("\n\t\t\t 请输入新增会员的信息:\n");printf("请输入会员名: ");P:scanf("%s",vi[j].name);getchar();for(i=0;i<m;i++)if(strcmp(vi[i].name,vi[j].name)==0){printf("您输入的会员名已存在!请重新输入:");goto P;} printf("请输入性别: ");scanf("%s",&vi[j].sex);printf("请输入年龄: ");scanf("%d",&vi[j].age);a++;}printf("\n\n\t\t\t恭喜您,添加会员信息成功!\n");m=m+a;save(m);}printf("\n\n\n按任意键返回菜单...");getch();menu();}/*积分函数*/void point(){int i;char name[10];float t,l;int m=load();system("cls");printf("请输入您的会员名:");scanf("%s",&name);for(i=0;i<m;i++)if(strcmp(vi[i].name,name)==0){printf("\n请输入已使用小时数:");scanf("%f",&t);l=t;vi[i].point+=(int)l;printf("\n您的会员%s共积%d分",vi[i].name,vi[i].point);save(m);printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n按任意键返回菜单...");getch();menu();}if(i==m){printf("\n\n\n\n\n\t\t\t此会员名不存在!\n");printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n按任意键返回重新输入...");getch();point();}}/*界面函数*/void window(){int x;system("cls");printf("\n\n\n\n\n");printf("\t\t***************************************************\n");printf("\t\t** **\n");printf("\t\t** **\n");printf("\t\t** **\n");printf("\t\t** 欢迎进入使用428网吧管理系统**\n");printf("\t\t** **\n");printf("\t\t** **\n");printf("\t\t** **\n");printf("\t\t***************************************************\n");printf("\t\t\t\t1----登陆\n");printf("\t\t\t\t2----退出系统\n\n\n\n");printf("请选择:\t");L:scanf("%d",&x);if(x==2)quit();else if(x==1)loading();else{printf("选择非法项!请重新输入选择:");goto L;}}/*主函数*/void main(){window();}19。

相关主题