设计2(精选课件)_第1页
设计2(精选课件)_第2页
设计2(精选课件)_第3页
设计2(精选课件)_第4页
免费预览已结束,剩余55页可下载查看

下载本文档

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

文档简介

1、设计2成绩评 定表学生姓名马舒阳班级学号120371专 业电子信息科学与技术课程设计题目编程技术基础实训评语组长签字:成绩日期 20 年 月 日57 / 59课程设计任务书学院信息科学与工程学院专业电子信息科学与技术学生姓名马舒阳班级学号12070102课程设计题目编程技术基础实训实践教学要求与任务:利用C语言编写下题的代码.题目名称:设计求两数之差的绝对值的函数和学生成绩统计程序内容及要求:(1)题目一的内容和要求:1)设计一个选择式菜单.栈子系统* 1 入栈 * 2 出栈 * 3 显示 数制转换 0 返回 *请选择菜单号(0):2).设计一个整型数据元素的链栈。3)。编写入栈、出栈和显示栈

2、中全部元素的程序。4).编写一个把十进制数转换成八进制数的应用程序.(2)题目二的内容和要求:通讯录实质上是一个线性表,由于通讯录长度不确定,且插入或删除操作比较频繁,因此,采用单链式存储结构。要求实现如下功能:1)设计一个选择式菜单。通讯录管理系统* 1 通讯录单链表的建立 * 2 通讯者的插入 * 3通讯者的删除 4 通讯者的查询 * 0退出 *请选择菜单号(04):)。编程实现通讯录单链表的建立、通讯者的插入、通讯者的删除、通讯者的查询、通讯录的输出。工作计划与进度安排:第天:1、指导教师布置课程设计题目及任务、查找相关资料第24天:1、根据具体设计题目进行具体分析2、对设计题目进行编码

3、和调试3、指导教师进行验收第5天:1、指导教师针对课程设计进行答辩2、完成课程设计报告指导教师: 201年 月 日专业负责人:203年 月 日学院教学副院长:2013 年 月 日目 录一、课程设计目的-1.二、课程设计内容和要求-1.三、题目一设计过程-2.四、题目二设计过程-24.五、设计总结-6.六、参考文献-36.题目栈子系统、通讯录管理系统一、课程设计的目的本学期我们对数据结构这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求学生掌握数据结构中的各方面知识,还要求学生具备一定的语言基础

4、和编程能力。.(1)题目一的目的: 1。掌握栈的特点及其描述方法2。掌握链式存储结构实现一个栈3。掌握链栈的各种基本操作。掌握栈的典型应用的算法(2)题目二的目的: .掌握线性表的特点2掌握线性表的顺序存储结构和链式存储结构的基本运算3。掌握线性表的基本操作二、课程设计的内容和要求(1)题目一的内容和要求:1)。设计一个选择式菜单。栈子系统*.* 1 入栈 * 2出栈 * 3 显示 * 4 数制转换 * 0 返回 *.请选择菜单号(04):).设计一个整型数据元素的链栈。3)编写入栈、出栈和显示栈中全部元素的程序。).编写一个把十进制数转换成八进制数的应用程序。(2)题目二的内容和要求:通讯录

5、实质上是一个线性表,由于通讯录长度不确定,且插入或删除操作比较频繁,因此,采用单链式存储结构。要求实现如下功能:.1)。设计一个选择式菜单。通讯录管理系统*. 通讯录单链表的建立 通讯者的插入 * 3 通讯者的删除 * 4 通讯者的查询 * 0 退出 *.请选择菜单号(04):2).编程实现通讯录单链表的建立、通讯者的插入、通讯者的删除、通讯者的查询、通讯录的输出。三、题目一设计过程1、题目分析本题要求合理地设计一个栈的结构及入栈、出栈、删除、查找等基本操作,并运用此结构实现数制转换。2、 算法描述首先定义一个结点结构体,指针域包括两个指针,分别指向前驱结点和后继结点,数据域为一个Dtaye类

6、型的变量,其中DtTYe类型为宏定义;在定义一个栈结构体,结构体内包括两个指针,分别为栈顶指针和栈低指针,还有一个i型记录栈的长度。.欢迎界面后,进入主菜单,主菜单用witch设计,其中调用函数NUM,该函数可返回有效的菜单号,可屏蔽并提示错误信息及重新输入,菜单下调用了其他功能函数,菜单内除退出和初始化函数外所有的功能函数均存放在FU。c下。.下面仅详细阐述一下各功能模块的工作原理。入栈为栈的首次赋值,利用dowhil();可按需求循环输入多组信息,并及时退出返回到主菜单,在实现循环多组输入时调用了函数Push,Puh为机械入栈一个新元素,将参数nn,入栈到栈tt内,栈的长度加一。.出栈函数

7、Pop中,首先判断栈是否为空,为空时,不可出栈;非空时,输出栈顶元素及栈的长度,并删除栈顶节点,栈的长度减一.信息输出完毕后按任意键返回主菜单。.显示函数ow中,即利用do.。while循环多次调用出栈函数,每次输出时要按任意键继续一次,以保障画面整洁。信息输出完毕后按任意键返回主菜单.数制转换函数g中,大体结构包括一个大的do.。h允许多次使用信息转换,do中首先输入数及其进制和预期进制,然后判断是否为十进制,经费是禁止的数字转换为十进制,再将其循环除以预期进制,将其余数存在新建号的栈中,直到余数为零,停止循环,然后依次出栈,将栈顶元素依次显示出来,即转换结束。可选N或Y,继续下一次转换,或

8、者返回主菜单.3、 源代码T。h:#ifnde STH#die ST_H#incluetdi.h#inudesdlb。h#icudeono.h#incudewindows。hypedefintDataTyp;typedfsruct Ndetuct Nde po;DatType ata;strut oe *net; N;/双向链栈的结点pde srutN op;NN as;nt ize; ST;/栈/main。c:主函数/Mnuc:框架界面函数和初始化退出函数vid Iitiate(S *tt);/栈的初始化 及 双向链的初始化void JM();/界面int um();/菜单序号选择oid E

9、();/退出/FUN。c:具体功能函数oidInut(S *t);/入栈void Push(ST*t,DataTpe nn);/机械入栈it Pp(ST tt);/机械出栈voidSow(ST tt);/显示oid hage(S tt);/数制转换#ndifMenuc:#ince”ST.oi JM()/界面函数nt ch;S t;Initiate(&tt);printf(”nnnnn欢迎您使用栈子系统 !nnn ”);.int(tttt设计者:马舒阳(2070102));gech();dsystem(c);print (ntt栈子系统);rintf (”t*n);.pritf (”t 1 入栈

10、 ”);.rint(”t 出栈 ”);.pif(”t* 显示 *n);rin (* 4 数制转换 n);.printf (t 0 返回 n);.printf (*n);.int (t 提示:本系统仅可用于整型数数据的储存,望谅解。tn);prntf (t*n);.chm();swih(ch)ce1 :Inpu(&tt);rea;cs :Po(&tt);break;cas 3 :h(t);beak;case 4 :chane(tt);brek;ase0 :Exit();as -:;while(ch);intNum()/判断菜单号int ;prnt(nt请选择菜单号(0):);scnf(%d,k)

11、;getchar();if(ase =(NN)mall(sizo(NN));tt-top = ttbase;tiz=0;vod Exit()/退出sstem(cls);print(nnnnntt谢谢使用 程序退出!);printf(”nnnttt”);pnt(按任意键继续。.);tc();mai.c:#incldeST.Hit main()J();retur 0;FUNc:#ncludeSHvoid Int(ST tt)/栈的初始化DataTpe nn;int ch;syst(”cls”);prntf(”nnt老师早安! 开始入栈!n);doprintf(nt请输入新栈顶数据: );sanf

12、(”%d”,&nn);/dgtar();Ph(t,n);/调用入栈函数dorin(nt继续? or ”);ch =gcar();gtar();if(ch != N&ch != Y)printf(nt请输入 Y或 N !);elebrak;whie(1);whie (c = Y);vo Pu(tt,aT)/将n入栈到t所指栈(栈中top指向还未赋值的结点)NN *p;p (N)maloc(szeof(N);tto-dta n;-ro =ttto;(tto)-ex =p;ttto = ;ttsiz+;int p(S*t)/出栈N *p;if (ttsize=0)printf (”ntt对不起,此栈

13、已空!n);getc();return ;elseprintf(”nt栈顶元素为 n”,ttop-rdata);/%d.p=tttop;tt-o = tt-pro;fr(p);ttp-nex=NUL;i (!(tttopnxt)ttsize-;prin(ntt出栈成功!栈中还有d个元素!按任意键继续。.n”,t-ize);.etc();et 1;vidhow(ST)/显示 全部出栈sytm(cs”);doif(!tt.sze)re;lePop(t);hile(1);printf(ntt马舒阳汇报完毕完毕!按任意键继续。n”);geh();voidchang()/数值转换S ;NNp;n i,n

14、,zz,yy,tem_1,tem_,te_;ar ch;Initiate();dosye(”cl);rintf(nn欢迎进入数据转换!nntt(请注意:系统暂不支持十以上进制转换!)n);.printf(nntt请输入一个数字! ”);sanf(d”,&);/dgecar();printf(nntt请问已输入的数字是什么进制呢? );scnf(%d”,zz);/dgetcha();ptf(”nntt请问您想要转换到几进制的呢? );saf(”,&yy);/%dgetchar();if(zz10 yy0)ntf(”ntt待转换的数字进制输入不合理!按任意键回到主菜单。.);etch();etu

15、;(zz!10)/若不是十进制要转换成十进制te_=1;/变量含义:进制数的n次方tem_=0;/变量含义:暂时存放和tem_1=1;/变量含义:各项数for(=0;nn;n/=10)em_1=(nn10)*tem_3 ;te_2+=tem_1;t_3=zz;n=tem_2;r(;n;nn/=y)/大除法入栈if(nn%yyz)uh(&c,nyy);eeritf(tt待转换的数字进制输入不合理!按任意键回到主菜单。.。);tch();reurn ;pint(nntt转换结果为”);or(;ba!cc。top;)出栈p=cc.o-ro;intf(%d,pa);/dcc.op= p;free(pn

16、ext);cc.size;dornf(nntt继续?Y or N ”);ch = etcha();getchar();i(ch! N & != Y)in(”ntt请输入 Y 或N !”);elrea;whil(1);whe (c = Y);4、 运行结果欢迎界面,如图所示。图1-1 按任意键继续后进入主菜单,选择菜单号1,进入入栈模块,如图所示。图1- 开始入栈,输入新的栈顶元素(整型),并输入Y或N选择是否继续,此过程中,输入错误有提示,如图所示,以,5,7,9,2,4,,8,入栈为例。.图-3图4图-5 选择N,输入结束,然后回到主菜单,下面选择菜单号2,进入出栈模块。图1-按任意键继续后

17、,回到主菜单,选择菜单号3,显示栈内剩余信息。图17图18其间,每一次输出可按需要按任意键输出,并显示剩余信息.图19图0汇报完毕后,即栈已空,按任意键返回到主函数,选择菜单号4 ,进入数制转换模块。图111输入被转换的数字,被转换数字的数制及预期数制,并可按需求输入或N选择继续或退出。图112图13退出后返回主菜单,选择,即可退出程序。图4图15四、题目二设计过程1、题目分析本题要求建立链表,以存储联系人信息,并设计出对其的建立,插入删除显示等基本操作即可.3、 算法描述首先定义一个链表结点结构体,指针域包括一个nxt指针,数据域包括个人姓名及联系方式.欢迎界面后,进入主菜单,主菜单用swi

18、tch设计,其中调用函数NU,该函数可返回有效的菜单号,可屏蔽并提示错误信息及重新输入,菜单下调用了其他功能函数,菜单内除退出和初始化函数外所有的功能函数均存放在Fxc下。.下面仅具体阐述一下各功能模块的工作原理。函数uild,首先判断该表是否已建立过,即表内是否有一个空结点(头结点),表未初始化时便建立一个空表,否则提示“表已存在,无需建立”。提示后延时2.自动跳转到主菜单。插入函数nrt,首先输入有效信息,然后利用头插法将其插入到头指针的下一个结点,再输出提示,提示用户选择N或,判断是否继续,若要继续,则递归本函数,否,直接返回主菜单.删除函数Delete,首先判断表是否为空,表为空时,不

19、允许删除,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要删除人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找与删除),若查找成功则输出提示,询问是否确定删除,按需求,删除该结点(暂不支持误删恢复)或取消操作;若查找失败,不存在该联系人,则输出提示。最后按任意键退回到主菜单。.查询函数Sarch,首先判断表是否为空,表为空时,不允许查找,并弹出提示,按任意键继续后后跳转到主菜单;表非空时,输入要查询人的姓名,利用循环查找表中人的信息(暂不支持多元素的查找),然后输出信息,按任意键退回到主菜单。退出函数Exi,先输出表内所有信息,信息输出完毕后,按任意键结束程序。.、源代码Y:

20、ifnef MSY_Hefin MSinclu stl.hinlude stdi。h/#nclude io.hiudewindosh#fin 2tyeef strct Ndecar nae;chr nuN;truct Noe net;NOD;vdWeome();void jeian();nNum();voidBil(ODE *he);voidinert(ND hed);vdDelee(OD*head);vid ind(NODE *ad);viEit(NOD *d);/待改进:多元素查询/待改进:当head没有初始化,要直接关闭,不允许进行插入和删除等操作endifFx.:inclue ”Y.h

21、”voi jiemian()tatic NOD *ead=ULL;system(”cls”);rntf(”nnt通讯录管理系统n”);prif(”*n”);.prinf(* 通讯录单链表的建立 *”);.printf( 2 通讯者的插入 n);.pintf(* 3 通讯者的删除 n);.pitf( 4通讯者的查询 n);.printf(”* 0 退出 *);.pritf(*n”);.prit(t提示:在2,,4功能执行前,须先执行1。操作! n);.prinf(”*n”);.swtch(u())case 1:Build(&head);brea;case :isert(&had);reak;ca

22、se 3:elete(head);break;cas :Find(hd);brek;ase 0:Exi(head);break;int um()ink;rif(ntt请选择菜单号(04):);sa(%,k);getr();if(knu));gtchar();-next=(*hd)nxt;(ha)-net=p;i(=(*head)nex)prntf(”nn= 插入成功!=n”);.elseritf(n= 插入失败!=n”);.lep(1500);dsysem(cls);intf(”#n);.printf(”#);.prinf(nt是否继续? o N ”);=gcha();etar();if(h!

23、= ch!=Y)prif(”ntt输入有误,按任意键继续);gcha();elseif(h=Y)inset(hed);reak;hie(1);iemian();vd Deete(NODE ead)ODE n,*p;car ch,naeN;system(”cls);printf(#n);.printf(#-DEEE-#n);.printf(”#);.f(!(hadnt))intf(”nnnt*通讯录为空!快加入新联系人吧!*n);rinf(”ntt按任意键继续.。);getch();jeia();rn(ntt请输入欲删除联系人姓名: ”);scan(”%s”,nae);tchar();phead

24、;if(!stmp(-nae,ame))brea;elsen=p;pnext;wie(p);if(!p)printf(n-您所输入的联系人不存在,请查证!-”);elseprintf(nntT的电话号码是%s,您确定要删除吗?num);.scan(c”,&c);etchar();i(ch!=Y c !N)pf(nt输入错误!按任意键继续.”);getc();ese f(ch=)pit(”nn-删除未成功!- );else nnext=pnxt;ee(p);ritf(nn - 删除成功! - ”);pritf(ntt按任意键继续。.。”);gtc();jian();voidFd(ND *ea)O

25、DEp;ar namN;ssem(cls);rnf(#n);.printf(-ERCH-”);.pritf(”#n”);.(!(hedxt))pintf(nn*通讯录为空!快加入新联系人吧!*n);pitf(ntt按任意键继续.。.”);gt();jiian();pritf(nt请输入A的姓名:);san(s”,name);echar();p=ad;wil(p)f(!tcmp(nae,pnam))break;p-nex;if(p)prinf(”ttA的电话号码为!”,-um);elseit(”nn-您所输入的联系人不存在,请查证!- );rin(ntt按任意键继续.。);getch();iem

26、an();void Exit(OE head)ND p;syte(”cls);rint(#n);.prt(#-L CNTTS-#n);.prntf(#n);.p=headnext;while(p)pritf(”n的电话号码为%s”,pnam,p-num);p=p-next;/待改进:当head没有初始化,要直接关闭ntf(tt马舒阳汇报完毕,按任意键退出程序。.);getc();system(s);printf(nnnnnntt谢谢使用 程序退出!);pritf(”nnnnt”);print(按任意键继续.。);getch();ei(0);i.c:#iclde ”MSY.hvoi man()W

27、lco();jeian();voidWeco()rntf(nnnntt欢迎您使用 通讯录管理系统 !nnn );.rnf(tt设计者:马舒阳(120370102)n”);geth();4、 运行结果首先是欢迎界面,如图21所示。(见下页)图-进入主菜单后,选择菜单号1,进入创建模块。如图2-2所示。图22创建成功(图2-3)!延时2s后回到主菜单。图23选择菜单号9(图2),显示错误提示(图2-5).图24图25选择菜单号2,已插入可供操作的有效信息(图-6).图6图27输入姓名,和联系方式后,选择Y,同上操作输入多组信息(图2-10)。图图2选择N后可跳转到主菜单,选择菜单号3即可进入删除模块,删除界面如下,查询到有此人时会询问是否删除(如图-0)。.图2-查无此人时,会显示错误提示(图21).图21表为空时,不允许删除(图21)。图212返回主菜单,选择菜单号4,进入查询模块。查询界面如下(图213)。图2-13最后,选择0,进入退出模块,界面如下(图2-45)。图214图-

温馨提示

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

评论

0/150

提交评论