ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:673.62KB ,
资源ID:9343926      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9343926.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(课程设计报告-实现十进制数N和二进制数之间的转换-学生成绩管理-拓扑排序.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

课程设计报告-实现十进制数N和二进制数之间的转换-学生成绩管理-拓扑排序.doc

1、上海应用技术学院课程设计报告 课程名称 《数据结构课程设计》 设计题目 数据结构课程设计 院系 计算机科学与信息工程学院 专业游戏软件制作与开发 班级 姓名 学号 指导教师 日期 2016-1-14 一. 目的与要求 1. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的

2、能力 二. 课程设计内容说明 1. 项目一 (1) 对设计任务内容的概述 实现十进制数N和二进制数之间的转换。 (2) 需求分析或功能描述 输入相应的各式正确的数值(可以是混合小数的形式),程序按照设定的算法执行后,给出相对应的进制数数值,对于输入数据的合法性可以不做检查。 采用栈。 (3) 概要设计或程序流程图  内容:利用栈实现十进制和其他任意进制数的任意转换输出问题  进制转换原理:N = (N div d) *d + N mod d(其中:div 为整除运算,mod 为求余运算)  步骤: 1  定义栈数据类型,采用链式存储结构实现       2 

3、 链栈基本操作函数原型声明       3  初始化栈       4  输入栈  5  输出栈  6  判空栈  7  自定义实现进制转换函数  8  数据调试  9  程序结束  开始 创建栈 数制转换函数 输出结果 (4) 详细设计或源代码说明 #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 #define ERROR 0 #define

4、OVERFLOW -2 #include #include #include #include #include #include"math.h" typedef int SElemType; typedef struct { SElemType *base;// 在栈构造之前和销毁之后,base 的值为NULL SElemType *top;// 栈顶指针 int StackSize; //当前已分配的存储空间,以

5、元素为单位 }SqStack1; void InitStack(SqStack1 *s) //初始化栈 { s->base =(SElemType*)malloc (STACK_INIT_SIZE * sizeof(SElemType)); if(!s->base) exit(OVERFLOW); s->top=s->base; s->StackSize= STACK_INIT_SIZE; } void Push(SqStack1 *s,SElemType e) // 输入栈 { i

6、f (s->top-s->base>=s->StackSize) { s->base=(SElemType *) realloc (s->base,(s->StackSize+STACKINCREMENT)*sizeof(SElemType)); //栈满,追加存储空间 if(!s->base) exit(OVERFLOW); //若内存中没有s->StackSize+STACKINCREMENT个连续空间则分配失败 s->top=s->base+s->StackSize; s->StackSize+

7、STACKINCREMENT; } *s->top++ =e; } int Pop(SqStack1 *s,SElemType *e) //输出栈 { if (s->top==s->base) return ERROR; s->top=s->top-1; *e = *s->top; } int StackEmpty(SqStack1 s) //判空栈 { if (s.top ==s.base) return 1; else re

8、turn 0; } void Conversion(int N,int m) { SElemType e; SqStack1 s; InitStack(&s); while(N) { Push(&s,N%m); N= N/m; } printf("转换后的%d进制数为:",m); while(StackEmpty(s)!=1) { Pop(&s,&e); if(e>=10) printf("%c",e

9、10+'A'); else printf("%d",e); } printf("\n"); } void squnion() { int n,m; printf("请输入一个十进制数: "); scanf("%d",&n); printf("需要转成的进制m:"); scanf("%d",&m); Conversion(n,m); } void linkunion() { int a,i,k=-1,y=0; printf("\n 请输入一个正确的二进制数:");

10、 scanf("%d",&a); printf("\n%d十进制为:",a); while(a!=0) { i=a%10; k++; y+=i*pow(2,k); a=a/10; } printf("%d\n",y); } void list1() { int i,flag=1,k; while(flag) { printf("**************************************\n"); printf("\t1:十进制转换为任意进制\n"); printf("\t2:二进制

11、转换为十进制\n"); printf("\t0:返回\n"); printf("\t请选择:\n"); printf("**************************************\n"); while (true) { scanf("%d",&i); if (i>=0 && i<=2) break; else printf("请选择0--2:\n"); } switch (i) { case 1:squnion();break; case 2:linkunion() ;break; c

12、ase 0:{flag=0;break;} } } } (5) 程序模块及其接口描述 void InitStack(SqStack1 *s) //初始化栈 void Push(SqStack1 *s,SElemType e) // 输入栈 int Pop(SqStack1 *s,SElemType *e) //输出栈 int StackEmpty(SqStack1 s) //判空栈 void Conversion(int N,int m)  功能是:将十进制转换为其他进制 void linkun

13、ion() 功能是:将二进制转换为十进制 (6) 程序的输入与输出描述 输入要求的整数 输出二进制 (7) 调试分析或程序测试 在主界面中选择“1”进入进制转换子界面 在子界面中选择“1”进入十进制转换为其他进制的测试,输入:99,转换为二进制,得出:1100011 在子界面中选择“2”,进行二进制转换为十进制测试。测试结果如下: 输入“0”,正常返回主界面。 (8) 尚未解决的问题或改进方向 未完善的问题:不能由二进制直接转换为任意进制;在十进制转换过程中不能输入小数。 改进方向:界面美化;调整程序,使其可以输入

14、小数。 (9) 对软件的使用说明 根据界面提示选择需要的操作,输入整数,注意二进制只包含“1”“0”。 2. 项目二 (1) 对设计任务内容的概述 任务:要求实现对学生资料的录入、浏览、插入和删除等功能。 输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩。 存储结构:采用线性链式结构。 (2) 需求分析或功能描述 管理系统中有五个要求:输入 查找 修改 插入 删除 存储 输入要求:能够通过键盘输入和文件输入两种 查找要求:能够根据学生号查找单个学生的信息,也可以遍历所有学生信息 修改要求:能够根据学生号修改单

15、个学生所有信息 插入要求:能够实现头插和尾插 删除要求:能够根据学生号删除单个学生信息 存储要求:通过链表存储所有信息 (3) 概要设计或程序流程图 首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等; 其次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能; 最后,编写主函数对每个实现进行按需调用,实现操作。 (4) 详细设计或源代码说明 #include #include #include struct Stud

16、ent { char name[10]; char subject[10]; int num; int grade; Student *next; }; void StuMain(); //学生成绩管理系统的主函数,由main函数调用 void StuInput(Student *); //学生成绩管理系统的输入函数,由主函数调用 void StuSelect(Student *); //学生成绩管理系统的查找函数,由主函数调用 void StuAlter(Student *); //学生成绩管理系统的

17、修改函数,由主函数调用 void StuInsert(Student *); //学生成绩管理系统的插入函数,由主函数调用 void StuDelect(Student *); //学生成绩管理系统的删除函数,由主函数调用 void StuSave(Student *); //学生成绩管理系统的存储函数,由主函数调用 void StuOutput(Student *p); //输出函数 int StuImport(Student *head,Student *p); //输入函数 void StuOutput(Student *p

18、) //打印函数,将链表的该节点信息输出 { printf("学生姓名:"); printf("%s ",p->name); printf("学生号:"); printf("%d ",p->num); printf("科目: "); printf("%s ",p->subject); printf("学生成绩:"); printf("%d \n",p->grade); } int StuImport(Student *head,Student *p) { S

19、tudent *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生号是否有重复 Opinion=head->next; printf("学生姓名:\n"); scanf("%s",p->name); printf("学生号:\n"); scanf("%d",&p->num); printf("科目:\n"); scanf("%s",p->subject); if(Opinion!=NULL) { if(Opinio

20、n->num==p->num&&!strcmp(Opinion->subject,p->subject)) { printf("该学生这门科目已有成绩,请重新输入\n"); return 1; } Opinion=Opinion->next; } printf("学生成绩:\n"); scanf("%d",&p->grade); return 0; } void list2() { StuMain(); } void StuMain() { char decide='y';

21、 //定义while变量,函数是否继续进行 int num=1; //定义switch变量,函数跳转到哪个子函数 Student *head; //定义链表的头指针 head=(Student *)malloc(sizeof(Student)); //给头指针开辟空间 head->next=NULL; //初始化头指针

22、 while(decide!='n') { printf(" ***************************************************\n"); printf(" ********** 1 输入 2 查找 3 修改 4 插入 ********\n"); printf(" ********** 5 删除 6 存储 7 退出 ********\n"); printf(" *********************************************

23、\n"); scanf("%d",&num); switch(num) { case 1: StuInput(head); break; case 2: StuSelect(head); break; case 3: StuAlter(head); break; case 4: StuInsert(head); break; case 5: StuDelect(head); break; ca

24、se 6: StuSave(head); break; default: decide='n'; break; } }; } void StuInputHand(Student *head); //学生成绩管理系统的手动输入函数,由输入函数调用 void StuInputFile(Student *head); //学生成绩管理系统的文件输入函数,由输入函数调用 void StuInput(Student *head) //学生成绩管理系统的输入函数,由主函数调用 { c

25、har decide='y'; //定义while变量,函数是否继续进行 int num; //定义switch变量,函数跳转到哪个子函数 while(decide!='n') { printf(" ***************************************************\n"); printf(" ** 1 手动输入 2 文件输入 3 退出 **\n");

26、 printf(" ***************************************************\n"); scanf("%d",&num); switch(num) { case 1: StuInputHand(head); break; case 2: StuInputFile(head); default: decide='n'; break; } } } void StuInputHand(Student *head) //学生成绩管理系统的手动输入函数,由输入函数调用 {

27、 if(head->next==NULL) { Student *point=(Student *)malloc(sizeof(Student)); //链表中最后一个节点,只在该函数中存在 point->next=NULL; int decide=1; while(decide!=0) { Student *p=(Student *)malloc(sizeof(Student)); p->next=NULL; StuImport(h

28、ead,p); if(head->next==NULL) { head->next=p; point=p; } else { point->next=p; point=p; } printf("是否继续:1/0\n"); scanf("%d",&decide); } } else printf("管理系统中已存在信息,若想输入学生信息,请转插入子系统"); } void Stu

29、InputFile(Student *head) //学生成绩管理系统的文件输入函数,由输入函数调用 { if(head->next!=NULL) { printf("学生管理系统中已有信息,请跳转到插入选项\n"); } FILE *fp; printf("请输入文件名(包括物理地址)\n"); char filename[10]; scanf("%s",filename); if((fp=fopen(filename,"r"))

30、NULL) { printf("can not open file\n"); return; } Student *point=(Student *)malloc(sizeof(Student)); Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生号是否有重复 while(!feof(fp)) { Opinion=head->next;

31、 Student *p=(Student *)malloc(sizeof(Student)); p->next=NULL; fread(p,sizeof(Student),1,fp); if(Opinion!=NULL) { if(Opinion->num==p->num&&!strcmp(Opinion->subject,p->subject)) { printf("该文件中有重复学生信息,请验明再传输\n"); he

32、ad->next=NULL; } Opinion=Opinion->next; } if(head->next==NULL) { head->next=p; point=p; } else { point->next=p; point=p; } }; Opinion=head->next; while(Opinion->next!=NULL) {

33、Opinion=Opinion->next; if(Opinion->next->next==NULL) Opinion->next=NULL; }; fclose(fp); printf("传输成功\n"); } void StuSelectErg(Student *head); //学生成绩管理系统的遍历函数,由查找函数调用 void StuSelectNumFind(Student *head); //学生成绩管理系统的按学号查找函数,由查找函数调用 void StuSelectSubFin

34、d(Student *head); //学生成绩管理系统的按科目查找函数,由查找函数调用 void StuSelect(Student *head) //学生成绩管理系统的查找函数,由主函数调用 { char decide='y'; //定义while变量,函数是否继续进行 int num; //定义switch变量,函数跳转到哪个子函数 while(decide!='n') { printf(" ************

35、\n"); printf(" **** 1 遍历 2 学号查找 3 科目查找 4 退出 ****\n"); printf(" ***************************************************\n"); scanf("%d",&num); switch(num) { case 1: StuSelectErg(head); break; case 2: StuSelectNumFind(head); bre

36、ak; case 3: StuSelectSubFind(head); break; default: decide='n'; break; } } } void StuSelectErg(Student *head) //学生成绩管理系统的遍历函数,由查找函数调用 { Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1; while(p!=NULL) { print

37、f("第%d位学生信息:\n",i); StuOutput(p); p=p->next; i++; } } void StuSelectNumFind(Student *head) //学生成绩管理系统的查找子系统,有查找函数调用 { int num; printf("输入想要查找学生的学生号:\n"); scanf("%d",&num); Student *p=(Student *)malloc(sizeof(Student)); p=head->next

38、 int i=1; while(p!=NULL) { if(num==p->num) { StuOutput(p); i++; } p=p->next; } if(i==1) printf("没有该学生信息"); } void StuSelectSubFind(Student *head) //学生成绩管理系统的按科目查找函数,由查找函数调用 { char Sub[10]; printf("输入想要查找科

39、目:\n"); scanf("%s",Sub); Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1; while(p!=NULL) { if(!strcmp(Sub,p->subject)) { StuOutput(p); i++; } p=p->next; } if(i==1) printf("没有该学生信息"); }

40、void StuAlter(Student *head) //学生成绩管理系统的修改函数,由主函数调用 { int num; printf("输入想要查找学生的学生号:\n"); scanf("%d",&num); char Sub[10]; printf("输入想要查找科目:\n"); scanf("%s",Sub); Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1;

41、 while(p!=NULL) { if(num==p->num&&!strcmp(Sub,p->subject)) { printf("输入修改成绩:\n"); scanf("%d",&p->grade); printf("修改成功\n"); i++; } p=p->next; if(i==1) printf("没有该学生信息"); } } void StuInsert(Student *head) //学生成绩管理系统的插入函数,由主函

42、数调用 { Student *point=(Student *)malloc(sizeof(Student)); point=head->next; while(point->next!=NULL) point=point->next; //找到尾结点 char decide='y'; //定义while变量,函数是否继续进行 int num; //定义switch变量,函数跳转到哪个子函数

43、 while(decide!='n') { printf(" ***************************************************\n"); printf(" **** 1 头插 2 尾插 3 退出 ****\n"); printf(" ***************************************************\n"); scanf(

44、"%d",&num); Student *p=(Student *)malloc(sizeof(Student)); switch(num) { case 1: StuImport(head,p); p->next=head->next; head->next=p; printf("插入成功\n"); break; case 2: StuImport(head,p); point

45、>next=p; p->next=NULL; printf("插入成功\n"); break; default: decide='n'; break; } } } void StuDelect(Student *head) //学生成绩管理系统的删除函数,由主函数调用 { int num; printf("输入想要删除学生的学生号:\n"); scanf("%d",&num); char Sub[10];

46、 printf("输入想要删除科目:\n"); scanf("%s",Sub); Student *p=(Student *)malloc(sizeof(Student)); p->next=head->next; int i=1; while(p->next!=NULL) { if(num==p->next->num&&!strcmp(Sub,p->next->subject)) { StuOutput(p->next); printf("是否删除:1

47、/0\n"); scanf("%d",&i); if(num==head->next->num&&!strcmp(Sub,head->next->subject)) { head->next=head->next->next; } else { p->next=p->next->next; } i=2; printf("删除成功\n"); break; } p=p->next; }

48、 if(i==1) printf("没有该学生信息\n"); } void StuSave(Student *head) //学生成绩管理系统的存储函数,由主函数调用 { FILE *fp; char filename[10]; printf("请输入存储文件名(包括物理地址)\n"); scanf("%s",filename); Student *p=(Student *)malloc(sizeof(Student)); p=head->next; if((fp=fopen(filename,"w")

49、)==NULL) { printf("cannot open file"); return; } printf("input data:/n"); while(p!=NULL) { fwrite(p,sizeof(Student),1,fp); /* 成块写入文件*/ p=p->next; } fclose(fp); } (5) 程序模块及其接口描述 void StuInput(Student *);   //学生成绩管理系统

50、的输入函数,由主函数调用  void StuSelect(Student *);  //学生成绩管理系统的查找函数,由主函数调用  void StuAlter(Student *);   //学生成绩管理系统的修改函数,由主函数调用  void StuInsert(Student *);  //学生成绩管理系统的插入函数,由主函数调用  void StuDelect(Student *);  //学生成绩管理系统的删除函数,由主函数调用 void StuSave(Student *);    //学生成绩管理系统的存储函数,由主函数调用  基本操作函数:  void StuOut

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服