




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用栈来设置密码为课程设计题目名称用栈来设置密码程序设计基础课程设计报告专 业: 计 算 机 科 学 与 技 术 班 级: 2008级 (2)班 学 号: 2008082288 姓 名: 胡 琴 指导教师: 秦 怀 斌 老 师二oo九 年 8 月 25 日目 录 1 课程设计目的22. 课程设计题目描述和要求23.课程设计报告内容24.测试结果95.课程设计总结96.参考书目107.流程图101.课程设计目的用栈来做一个密码验证程序,以此来检测自己所学的知识。2.课程设计题目描述和要求问题描述 用栈来做一个密码验证程序。基本要求 密码验证只有三次机会。3.课程设计报告内容#include#inc
2、lude#include#include#includeusing namespace std;#define stack_init_size 10 /存储空间初始分配量#define stackincrement 2 /存储空间分配增量#define infeasible -1#define ok 1#define true 1#define false 0#define error 0char password10=123223323; /*密码,全局变量*/typedef char selemtype;/指定用标识符selemtype代表int类型typedef struct stack
3、 /*定义栈类型*/ selemtype *base; /在栈构造之前和销毁之后,base的值为null selemtype *top; /栈顶指针 int stacksize; /当前已分配的存储空间,以元素为单位 int length;sqstack,*stack;/status是函数的类型,其值是函数结果状态代码typedef int status;/-基本操作的算法描述(部分)-void initstack(stack *s);status destroystack(stack *s); void clearstack(stack *s);void push(stack *s,sele
4、mtype e);status pop(stack *s);status gettop(stack s,selemtype *e);void change(sqstack s,char *a);void control(stack *s);void initstack(stack *s) /*初始化栈*/构造一个空栈s *s=(sqstack *)malloc(sizeof(sqstack); (*s)-base=(selemtype *)malloc(stack_init_size*sizeof(selemtype); if(!(*s)-base)exit(infeasible);/存储分配
5、失败 (*s)-top=(*s)-base; (*s)-stacksize=stack_init_size; (*s)-length=0;/ initstackstatus destroystack(stack *s) /* 销毁栈*/ free(*s)-base); free(*s); return ok;/destroystackvoid clearstack(stack *s) /*把栈置为空*/ (*s)-top=(*s)-base; (*s)-length=0;/clearstackstatus stackempty(sqstack s) /*判断栈空否*/ if(s.top=s.b
6、ase) return true; else return false;/stackemptyvoid push(stack *s,selemtype e) /*把数据压入栈*/插入元素e为新的栈顶元素 if(*s)-top - (*s)-base=(*s)-stacksize) /栈满,追加存储空间 (*s)-base=(selemtype *) realloc(*s)-base, (*s)-stacksize + stackincrement) * sizeof(selemtype); if(!(*s)-base) exit(infeasible);/存储分配失败,exit(异常代码)为异
7、常结束语句 (*s)-top=(*s)-base+(*s)-stacksize; (*s)-stacksize += stackincrement; *(*s)-top+)=e; +(*s)-length;/pushstatus pop(stack *s) /*删除栈顶元素*/若栈不空,则删除s的栈顶元素,用e返回其值,并返回ok;否则返回error if(*s)-top=(*s)-base) return error; (*s)-top-; -(*s)-length; return ok;/popstatus gettop(stack s,selemtype *e)/*返回栈顶元素*/若栈不
8、空,则用e返回s的栈顶元素,并返回ok;否则返回error if(s-top=s-base) return error; *e=*(s-top-1); s-top-; return 0;/gettopvoid change(sqstack s,char *a) /*将栈中的元素按反序付给 a */ int n=s.length-1 ; while (!stackempty(s) gettop(&s,&an-);/changevoid control(stack *s)int i=0,k,j=0; selemtype ch,*a; k=strlen(password); printf(输入一个
9、%d 个数的密码,你只有 3 次机会:n,k); printf(c:); for(;) if(i=3) i+; break; else if(i0&i3) for(j=1;jlength;j+)printf( ); clearstack(s); for(;) /* 密码输入,可退格 */ ch=getch(); /* 退格 的ascii 是8 */ if(ch!=13) /* 判断是否为回车,不是则把它付给下面*/ if(ch=8) pop(s);printf( ); else printf(*);push(s,ch); j=(*s)-length; else break; i+; if(k!
10、=j) continue; else a=(selemtype *)malloc(*s)-length*sizeof(selemtype); change(*s,a); for(j=1;jlength;) if(aj-1=passwordj-1) j+; else j=(*s)-length+ stackincrement;break; if(j=(*s)-length+ stackincrement) continue; else break;/*最上面的for完*/ if(i=4) printf(n密码错误,即将退出); else printf(n密码正确n); free(a);/cont
11、rol int main() stack s;cout初始密码为:123223323n; initstack(&s); control(&s); getch(); destroystack(&s); return 0; 4运行结果5. 课程设计总结通过一年的学习,我已经能够进行简单的程序设计,这次课程设计对自己所学知识起到了检测和提高的作用。通过和同学的讨论与交流,解决了不少问题。课程设计完成后,感觉上最大的收获就是在设计之前要有一个清晰的思路和完整的设计提纲,对各功能函数的作用做详细考虑。细心在这次课程设计中起到很关键的作用,一个标点、一个字母、一个符号都可能导致程序的不能运行,因此要有耐心认真完成。当然知识是不可缺少的,只有对这学期所学得知识能够真正掌握并能加以运用,才能顺利完成这次的课程设计。课程设计是对学习c+的一个很好的检测,通过课程设计可以开发思维,提高创新能力。要想完成课程设计光靠书本上学的那点东西是不够,所以要求我们到图书馆或网上查阅相关资料,这也是自我学习的一个过程,同时使我们认识到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 弱电项目人工合同范本
- 派对布置合同范本
- 机械租赁分期合同范本
- 企业岗前培训考试题及答案
- 特色餐饮行业技术规范
- 环渤海经济圈2025年房地产市场区域分化与投资策略洞察报告
- 中医专科护士题库及答案
- 2025年人体机能试题及答案
- 2025年汉语专业语法题库及答案
- 机械原理试卷及答案
- 空间向量及其线性运算课件 高二上学期数学人教A版(2019)选择性必修第一册
- 俄罗斯历史与文化课件
- 3.4 商品质量品级评定与质量监督
- 一年级谁比谁多练习题(比较实用)
- 油管的上扣扭矩表
- 金矿汇报实用教案课件
- 个案分析-万科四季花城
- 年轻人群酒水消费洞察报告
- 社会化媒体全套教学课件
- 幼儿园绘本:《你真好》 PPT课件
- 小学语文《一定要争气》教案设计
评论
0/150
提交评论