- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没用,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到不在身边的时候也可以完成一些简单的程序编写与错误排除。
2.实验要求
设计并实现24点游戏,满足以下基本要求:
① 运行系统后,出现登录/注册初始界面,允许用户选择“注册”、“登录”或“退出”。用户分为2类:管理员、一般用户,他们拥有不用权限。管理员可以对用户信息实现增、删、改、查等管理操作;一般用户可以进入游戏,以及查看英雄榜。
②玩家开始游戏后,系统随机产生四个1-13的数,分别代表13张牌。提示玩家输入算式。判断玩家输入的表达式是否合法,其中算式中的四个数字只能是程序所给的四个数字。当玩家正确输入算式后,运用“用堆栈求解表达式”的原理,求出结果并判断是否为24,得出用户是输是赢的结果。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
c)修改用户密码:1.输入需要修改的用户名,并判断该用户是否存在。
2.当该用户存在时,由于是管理员身份可修改密码。
3.更新数据库(文件)。
d)查看用户信息:输入需要查看的用户名,显示用户信息。
4.3数据库设计
数据库采用TXT文件进行存储,每次对信息进行添加,删除,修改都重写文件,从而使文件里的信息具有实时性。
8)英雄榜界面
4.2功能逻辑设计
1)注册
a)判断用户名的可用性:判断用户名是否存在。
b)判断密码有效性(当用户名可用时):1.判断密码长度;
2.判断密码字符有效性(是否是字母)。
c)选择是“自动登入”或是“返回上一层”。
d)更新数据库(文件)。
2)登入
a)判断用户名是否存在:判断用户名是否存在。
b)判断密码有效性(当用户名存在时):1.判断密码长度
if(!(length_password(temp1.key)&&is_password_valid(temp1.key)))//密码有效性验证
{
printf("\n\t\t您输入的密码无效!!!");
Sleep(3000);
for(k=0;k<50;k++)
printf("\b \b");
goto loop;
}
printf("\n");
loop1 : printf("\t\t请再次输入密码:");
gets(key);
if(strcmp(temp1.key,key))
{
printf("\n\t\t两次输入的密码不一致!");
Sleep(3000);
for(k=0;k<50;k++)
printf("\b \b");
}
printf("\n\t\t输入任意键返回……");
c=getch();
if(c)
users();
}
六.测试
6.1、下面使用“等价分类法”对用户密码进行测试
(1) 划分等价类
① 对密码划分等价类
输入数据
有效等价类
无效等价类
密码长度
①6—12位字母字符
②有非字母字符
③少于6个字母字符
④大于12个字母字符
fread(userss,sizeof(struct user),J,fp);
if(J==0)
printf("\t\t现在还没有人算对……\n");
else
{
printf("\t\t姓名\t\t性别\t\t时间\n\n");
for(i=0;i<J;i++)
printf("\t\t %s\t\t%s\t\t%f\n\n",heros[i].name,heros[i].sex,heros[i].time);
printf("\t\t☆☆\n");
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n\n");
printf("\t\t -----------------英雄榜----------------\n\n");
FILE *fp;
fp=fopen("herolist.txt","rb");
③如果用户赢,计算其所用时间(从输入算式开始计算,直至输入算式结束),并与英雄榜中成绩进行比较。可以进入英雄榜的,则需更新英雄榜。英雄榜只按成绩降序记录1-5名相关信息。
Microsoft WindowsXP / Windows 7Turbo C/Visual C++
一.项目计划
1.1 总体介绍
以计算机后台系统为基础,文件作为数据库,利用C语言技术,研究和开发适合脑力开发的智力游戏,将现行以手写的24点游戏提升至计算机自动生成,实现普通用户的注册,登入,查看英雄榜,游戏的功能;实现管理员对用户进行的增、删、改、查的功能。
(2)普通用户登入模块
检测用户名是否存在,检查密码是否正确;
(3)用户模块
选择用户需要执行的操作(进入游戏、查看英雄榜、切换用户、退出)。
(4)游戏模块
用户进行游戏,计算用户游戏时间,更新英雄榜。
(5)用户管理模块
提供对用户信息的增、删、改、查的功能。
(6)管理员添加用户模块
采用普通用户注册的内核,诸如:检测用户名,密码。
1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4)训练用系统的观点和软件开发一般规范进行软件开发。
5)培养快速学习新的知识,并在项目中使用的能力。
五.编码
部分代码:
1.void change()//管理员帮用户修改密码
{
char key[13],c;
int j,k;
system("cls");
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆24点游戏(修改信息)☆\n");
通过C语言的课程设计,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过两周的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
goto loop1;
}
userss[j]=temp1;//将新注册的用户信息放入结构体数组中
printf("\n\t\t密码修改成功!输入任意键返回……");
c=getch();
if(c)
admin();
break;
}
else
j++;
if(j>=I)
{
printf("\n\t\t没有此用户信息!输入任意键返回……");
二.需求分析
2.1 需求概述分析
本系统共分为九个模块:普通用户注册模块,普通用户登入模块,用户模块,游戏模块,用户管理模块,管理员添加用户模块,管理员删除用户模块,管理员修改用户密码模块,管理员查看用户信息模块。以下是各个模块的功能简介。
(1)普通用户注册模块
检测用户名的可用性,检查密码有效性,向用户文件输入当前注册用户信息。
3.1用例图
(1)用户用例图
(2)系统用例图
3.2部分类/对象图
1.类图
(1)普通用户类图
(2)管理员类图
2.对象关系图
(1)关联关系
3.3流程图
四.详细设计
4.1界面设计
1)添加管理员界面(只为初始化系统)
2)开始界面
3)注册界面
4)登入界面
5)用户管理界面
6)用户界面
7)游戏界面
(1)回答正确
(2)回答错误
c=getch();
if(c)
admin();
}
}
2.void view_hero()
{
int i;
char c;
system("cls");
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\t\t☆☆\n");
printf("\t\t☆24点游戏☆\n");
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。
自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。
当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!
{
printf("\t\t姓名\t\t性别\t\t密码\n\n");
printf("\t\t %s\t\t%s\t\t%s\n",userss[j].name,userss[j].sex,userss[j].key);
loop :printf("\n\n\t\t输入新密码:");
gets(temp1.key);
(2)设计有效等价类的测试用例
①对密码设计有效等价类测试用例
测试数据
期望结果
测试范围
Zhangwei
输入有效
②
(3)为无效等价类设计测试用例
①为密码设计无效等价类测试用例
测试数据
期望结果
测试范围
Zhang198998
输入无效
②
zhang
输入无效
③
zhangweizhangwei
输入无效
④
七.项目总结
2.判断密码字符有效性(是否是字母)。
3.判断密码是否与注册的密码一致。
c)选择“登入”或“重置”。
3)用户管理
a)添加用户:采用注册的方法,只不过这里操作的管理员。
b)删除用户:1.输入需要删除的用户名,并判断该用户是否存在。
2.当该用户存在时,由于是管理员身份可直接删除。
3.更新数据库(文件)。
printf("\t\t☆☆\n");
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n\n");
printf("\t\t输入需要修改的用户名:");
gets(temp1.name);
printf("\n\n");
for(j=0;j<I;)
if(!strcmp(temp1.name,userss[j].name))
(7)管理员删除用户模块
根据所输入的用户名,对用户全部信息进行删除,更新用户文件。
(8)管理员修改用户密码模块
根据所输入的用户名,对用户密码信息进行修改,更新用户文件。
(9)管理员查看用户信息模块
根据所输入的用户名,查看用户信息。
2
系统的分层数据流图
1.顶层数据流图
2.用户管理模块数据流图
三.面向对象分析
成绩
课程设计wk.baidu.com告
题目24点游戏
课 程名 称软件项目实践(二)
院部名称信息技术学院
专业计算机科学与技术
班 级M10计算机科学与技术(专转本)
学 生 姓 名张 伟
学 号1021413036
课程设计地点校内实验室
课程设计学时2周(40学时)
指 导 教 师沈 奇
金陵科技学院教务处制
一、实验目的和要求
1.实验目的