大二上课程设计最终版
大二java课程设计

大二java课程设计一、课程目标知识目标:1. 理解并掌握Java语言面向对象编程的基本概念,包括类、对象、继承、封装和多态。
2. 学会运用Java异常处理机制,提高程序的稳定性和可靠性。
3. 熟悉Java集合框架,能够根据实际需求选择合适的集合类型进行数据存储和处理。
4. 掌握Java多线程编程的基本原理,了解线程的生命周期、同步与通信。
技能目标:1. 能够运用面向对象思想设计并实现小型Java应用程序。
2. 能够运用Java异常处理机制,编写具有良好错误处理能力的程序。
3. 能够运用Java集合框架,实现数据的存储、检索和排序等操作。
4. 能够编写简单的多线程程序,实现并发操作。
情感态度价值观目标:1. 培养学生的编程兴趣,激发他们学习Java的热情。
2. 培养学生的团队合作精神,提高沟通与协作能力。
3. 培养学生勇于面对困难、积极解决问题的态度。
4. 增强学生的责任感和自信心,使他们能够在项目中承担相应的工作。
本课程针对大二学生,课程性质为专业核心课。
结合学生特点,课程目标注重理论与实践相结合,以项目驱动的方式进行教学。
在教学过程中,要求学生积极参与,主动思考,提高实际编程能力。
通过课程学习,使学生能够达到以上所述的具体学习成果,为后续课程和实际工作打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 面向对象编程基础:- 类与对象- 继承与多态- 封装与抽象- 接口与实现2. Java异常处理:- 异常的概念与分类- 异常处理机制- 自定义异常- 异常链3. Java集合框架:- 集合框架概述- List、Set、Map接口及其实现类- 集合的迭代与操作- 集合排序与查找4. Java多线程编程:- 线程的创建与启动- 线程的生命周期- 线程同步与通信- 线程池与线程安全教学内容依据教材章节进行安排,具体进度如下:1. 面向对象编程基础(第1-4章)2. Java异常处理(第5章)3. Java集合框架(第6章)4. Java多线程编程(第7章)教学内容注重科学性和系统性,结合课程目标,以实际案例为主线,使学生能够循序渐进地掌握Java编程的核心知识,提高实际编程能力。
大学数学应用教程第二版上册课程设计

大学数学应用教程第二版上册课程设计1. 课程背景与意义大学数学作为一门重要的基础学科,在各个专业中都有着广泛的应用。
同时,数学应用也是数学学科本身的重要发展方向之一。
本课程旨在通过对数学知识的深入理解与应用,帮助学生掌握数学在实际生活中的应用,以及为将来的专业学习打下坚实的基础。
2. 教学目标1.通过课程学习,学生能够应用基本的数学知识解决实际问题;2.学生能够通过数学工具及计算机软件进行数据分析和处理;3.学生具备数学建模的基础知识和能力。
3. 教学内容1.数学基础知识回顾;2.线性代数基础;3.统计学基础;4.微积分基础;5.概率论基础;6.描述统计学;7.推论统计学;8.数学建模。
4. 教学方法本课程采用多种教学方法,包括讲授、案例分析、实例演练、课程设计等,以提高学生的数学实际应用能力,引导学生主动学习和探究。
5. 教学评价本课程采取多种方式进行评价,包括作业、课堂表现、期末考试、课程设计报告等。
6. 课程设计任务本课程设计任务要求学生运用所学到的数学知识,完成下列任务。
任务一:基于Excel数据分析与预测1.给出一个关于股票价格涨跌的数据集合,用Excel进行分析并预测涨跌;2.汇总一份关于不同区域癌症患病率的数据,并对其进行统计分析;3.给出500位学生的消费数据,进行数据分析得出其消费特点和规律;4.根据一个集合中的数据,用Excel统计出美国电影票房的总收入,并进行分析。
任务二:基于Matlab的数据处理与数学建模1.为终端用户设计一个简单的网络流控制算法;2.对于采样数据,编程实现最小二乘平滑,并测试其效果;3.构建线性回归模型,预测不同电视广告类型的收视率;4.构建对数回归模型,研究投资与收益率的关系。
7. 课程设计要求1.完成任务一和任务二中的至少三项任务;2.完成课程设计报告,包括任务描述、方法设计、数据处理结果、建模效果分析等;3.课程设计报告不少于2000字,并包括项目源代码、数据文件、以及必要的说明性图片和图表。
JUC2课程设计报告 江苏大学 大二上

JMP 0030H
微指令微程序设计
取源操作数的直接寻址方式的微命令与取目的操作数直接寻址的微命令相同不过地址改为从00C,013,014,015,016为止。
MOV #0101,0040H
源操作数立即寻址的微程序设计
微地址
微指令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
微命令
ORG 0030H
MOV #0041H,R0
PUSH R0
PUSH 0040H
POP (R0)
POP R1
PUSH的微程序设计
微地址
微指令
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
微命令
078
03000084
0
0
C
0
0
0
0
0
0
084
SPdec
084
E0080085
7
0
0
0
2
0
0
0
0
085
SPoe,ARce
F3
F4
F5
F6
F7
F8
F9
微命令
051
60030052
3
0
0
0
0
3
0
0
0
052
Soe,DRce
052
00052200
0
0
0
0
1
1
0
0
1
000
ARoe’,DRoe’,WR
(3)
大二工业设计课程设计

大二工业设计课程设计一、课程目标知识目标:1. 理解并掌握工业设计的基本原理,包括设计流程、设计方法和设计原则;2. 掌握工业设计中的材料学、工程学等相关知识,并能将其应用于实际设计项目中;3. 熟悉工业设计领域的最新发展趋势和行业动态。
技能目标:1. 能够运用设计软件(如SketchUp、AutoCAD等)进行三维建模和渲染;2. 培养创新思维和解决问题的能力,能够独立完成从需求分析到设计提案的整个流程;3. 提高团队协作和沟通表达能力,能够在团队项目中发挥关键作用。
情感态度价值观目标:1. 培养对工业设计的热爱和敬业精神,树立为改善人类生活质量而设计的责任感;2. 增强环保意识,关注可持续发展和绿色设计,将环保理念融入设计实践中;3. 树立正确的审美观,尊重多元文化,关注用户体验,提高设计的人文关怀。
本课程针对大二工业设计专业学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,使学生具备扎实的理论基础和较强的实践能力,为未来从事工业设计相关工作打下坚实基础。
同时,注重培养学生的创新意识、团队协作和沟通能力,提高其综合素质,使其成为具有竞争力的工业设计人才。
二、教学内容1. 工业设计基本原理:包括设计流程、设计方法、设计原则等内容,参考教材第一章;- 设计流程:需求分析、概念生成、方案设计、评估与优化;- 设计方法:用户体验设计、原型设计、迭代设计;- 设计原则:实用性强、美观性、可生产性、经济性。
2. 材料学与工程学知识:介绍常用工业设计材料及工程学原理,参考教材第二章;- 常用材料:塑料、金属、木材、复合材料等;- 工程学原理:力学、热力学、电学等。
3. 设计软件应用:学习并掌握三维建模和渲染软件,参考教材第三章;- 软件操作:SketchUp、AutoCAD、Photoshop等;- 实践项目:完成一个三维建模及渲染作品。
4. 创新思维与解决问题:培养创新意识和问题解决能力,参考教材第四章;- 创新思维方法:头脑风暴、六顶思考帽、TRIZ等;- 实践项目:完成一个创新设计项目。
大二c语言课程设计

大二c语言课程设计一、课程目标知识目标:1. 理解并掌握C语言中数组、指针、结构体等复杂数据结构的使用和应用场景。
2. 学会使用C语言进行文件操作,包括文件的读写、打开和关闭。
3. 掌握C语言中的动态内存管理,理解内存分配和释放的机制。
技能目标:1. 能够运用数组、指针和结构体编写复杂的C程序,解决实际问题。
2. 熟练运用文件操作实现数据的持久化存储,提高程序的实用性。
3. 能够合理使用动态内存管理,避免内存泄漏和野指针等问题。
情感态度价值观目标:1. 培养学生严谨、细心的编程习惯,提高代码质量和可维护性。
2. 激发学生对C语言的兴趣,使其认识到C语言在计算机编程中的重要性。
3. 培养学生的团队协作意识,提高沟通与协作能力。
分析课程性质、学生特点和教学要求,本课程目标旨在使大二学生在掌握C语言基础知识的基础上,进一步提高编程能力,为后续课程和实际项目开发打下坚实基础。
通过本课程的学习,学生将能够独立完成复杂的C程序设计,具备解决实际问题的能力。
同时,注重培养学生的编程兴趣和团队协作意识,为将来的职业发展奠定基础。
后续教学设计和评估将围绕以上目标进行,确保学生达到预期学习成果。
二、教学内容本课程教学内容依据课程目标,结合教材《C程序设计》进行选择和组织,主要包括以下三个方面:1. 复杂数据结构- 数组:多维数组的使用,数组与字符串操作。
- 指针:指针与数组,指针与函数,指向指针的指针。
- 结构体:结构体的定义和声明,结构体变量的创建和初始化,结构体数组,结构体指针。
2. 文件操作- 文件的基本概念:文件的类型和性质,文件指针。
- 文件的读写操作:fopen(),fclose(),fprintf(),fscanf(),fgets(),fputs()等函数的使用。
- 文件的随机读写:fseek(),ftell(),rewind()等函数的使用。
3. 动态内存管理- 内存分配与释放:malloc(),free(),calloc(),realloc()等函数的使用。
大二学生教案设计模板

一、课程名称(例如:《高等数学》)二、授课班级(例如:大二一班)三、授课时间(例如:第1周星期二第2节)四、教学目标1. 知识与技能目标:(1)使学生掌握本节课的基本概念、基本原理和基本方法;(2)培养学生运用所学知识解决实际问题的能力。
2. 过程与方法目标:(1)引导学生通过观察、实验、讨论等方式,培养分析问题和解决问题的能力;(2)培养学生独立思考、合作探究的学习习惯。
3. 情感态度与价值观目标:(1)激发学生对所学知识的好奇心和求知欲;(2)培养学生严谨求实、勇于创新的精神。
五、教学重点与难点1. 教学重点:(1)基本概念、基本原理和基本方法;(2)实际应用问题。
2. 教学难点:(1)理论知识的深入理解;(2)实际应用问题的解决。
六、教学方法1. 讲授法:教师通过讲解,使学生掌握本节课的基本概念、基本原理和基本方法;2. 讨论法:引导学生通过小组讨论,共同解决实际问题;3. 案例分析法:通过具体案例,使学生深入理解理论知识;4. 实验法:通过实验操作,培养学生的实践能力。
七、教学过程1. 导入新课(1)回顾上节课所学内容,引导学生思考本节课的学习目标;(2)提出本节课的学习任务,激发学生的学习兴趣。
2. 讲解新课(1)讲解基本概念、基本原理和基本方法;(2)结合实例,讲解实际应用问题。
3. 小组讨论(1)将学生分成若干小组,讨论实际问题;(2)各小组代表汇报讨论成果,教师点评。
4. 案例分析(1)分析具体案例,使学生深入理解理论知识;(2)引导学生提出问题,进行讨论。
5. 实验操作(1)讲解实验原理和步骤;(2)学生分组进行实验操作,教师巡视指导。
6. 总结与反思(1)对本节课所学内容进行总结;(2)引导学生反思学习过程,提出改进措施。
八、作业布置1. 完成课后习题,巩固所学知识;2. 查阅相关资料,了解所学知识的实际应用;3. 针对本节课的难点,进行自主学习。
九、教学反思1. 教学过程中,是否充分调动学生的学习积极性;2. 教学方法是否得当,能否达到教学目标;3. 学生对所学知识的掌握程度如何;4. 教学过程中遇到的问题及解决方法。
大二化工原理课程设计

大二化工原理课程设计一、课程目标知识目标:1. 理解并掌握化工原理中流体流动与输送、热量传递和质量传递的基本理论知识;2. 掌握化工过程中常见单元操作的工作原理及计算方法;3. 了解化工流程的模拟与优化方法。
技能目标:1. 能够运用所学原理解决实际化工过程中的问题,进行简单的工艺计算和设备设计;2. 能够运用化工流程模拟软件进行简单流程的模拟与优化;3. 培养学生的实验操作能力,能够独立完成化工原理实验。
情感态度价值观目标:1. 培养学生对化工原理学科的兴趣,激发学生的求知欲和探索精神;2. 培养学生的团队协作意识,提高沟通与交流能力;3. 增强学生的环保意识,使其认识到化学工程在环境保护和可持续发展中的重要作用。
课程性质:本课程为化工原理专业核心课程,旨在培养学生掌握化工过程的基本理论、计算方法和实验技能。
学生特点:大二学生已具备一定的化学基础和工程观念,具有较强的逻辑思维能力和动手能力。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,提高学生的工程素养,培养具有创新精神和实践能力的高素质化工人才。
通过本课程的学习,使学生能够将所学知识应用于实际工作中,为后续专业课程打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 流体流动与输送:涵盖流体静力学、流体动力学、流体阻力与能量损失、泵与风机等单元操作,对应教材第2章至第4章。
2. 热量传递:包括导热、对流换热、辐射换热等内容,对应教材第5章至第7章。
3. 质量传递:主要讲解分子扩散、对流传质、反应工程等基本原理,对应教材第8章至第10章。
4. 化工单元操作:涉及过滤、沉降、吸收、蒸馏、萃取等操作,对应教材第11章至第15章。
5. 化工流程模拟与优化:介绍流程模拟软件及其在化工过程优化中的应用,对应教材第16章。
教学内容安排与进度如下:第1-4周:流体流动与输送基本理论及计算;第5-8周:热量传递基本理论及计算;第9-12周:质量传递基本理论及计算;第13-16周:化工单元操作原理及计算;第17-18周:化工流程模拟与优化。
大二上学期课程表

北校区
教学楼E座
E101
3-11
4
7
2
北校区
教学楼E座
E103
1-2
4
7
2
北校区
教学楼E座
E101
1-2
5
5
2
北校区
教学楼E座
E103
912005
大学物理B
1
4.5
必修
考试
胡鸿奎*
正常
置入
1-9
5
3
2
北校区
教学楼A座
A101
1-9
4
9
2
北校区
教学楼A座
A102
1-9
9
2
北校区
教学楼A座
A101
10-11,14-19
概论_7(北校区教学楼A座A102)
篮球_8(北校区实践教室运动场)
大学英语-3_22(北校区教学楼E座E103)
大学物理B_1(北校区教学楼A座A102)
线性代数_2(北校区教学楼B座B401)
第7节
材料力学A_1(北校区教学楼A座A104)
纲要_6(北校区教学楼A座A101)
大学英语-3_22(北校区教学楼E座E101)
线性代数_2(北校区教学楼B座B401)
纲要_6(北校区教学楼B座B203)
晚饭
晚上
第9节
线性代数_2(北校区教学楼A座A104)
大学英语-3_22(北校区教学楼E座E101)
大学物理B_1(北校区教学楼A座A102)
大学物理B_1(北校区教学楼A座A102)
材料力学A_1(北校区教学楼A座A202)
大学英语听说训练-3_22(北校区计算中心A109)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计报告学号:20131000678班级序号:113131姓名:孙国欢指导老师:张唯成绩:中国地质大学(武汉)信息工程学院遥感系2015年1月总体介绍这是大二上学习了数据结构后的课程设计。
数据结构这门课相对于大一所学习的计算机高级程序语言设计更为复杂,此次课程设计主要考察的三个知识点分别为:堆栈、搜索树、图。
这三个是数据结构中最重要并且考验应用能力的三个知识点。
我开始拿到题目只有想出流程做法,怎么写代码仍是一头雾水,最后随着课程设计的深入,多与老师研究探讨之后开始有点眉目了。
通过对书上实例的反复翻阅学习,我对数据结构又有了更深入的认识,三项知识点的应用也更加熟路。
实习题目一火山喷发模拟1、功能需求火山喷发时,岩浆会随着地势的走向逐步扩散,岩浆经过的区域,即为当前火山喷发的灾害影响范围。
设计合理的数据结构,计算火山灾害的影响面积,并给出灾害影响范围图。
2、数据结构及算法本题重点考察数组和堆栈的使用。
使用高程矩阵描述火山周边地形,矩阵中每个像元占有一定的面积,像元值为当前位置的海拔高度,其中最高的位置即为火山口。
火山喷发时,从火山口源源不断地涌出岩浆,岩浆会流向火山口周边所有地势较低的位置。
由于是矩阵形式的地形,每个像元有固定的八个周边位置,即上下左右及其对角线方向的像元。
而某个位置一旦被岩浆覆盖,又会继续流向自身周边所有地势较低的位置。
依次循环,最终岩浆经过的像元,即为火山喷发的灾害影响范围。
每个像元的周围八个像元需要全部判别,因此需要采用堆栈来记录每次判断的像元信息。
由于每个像元占有一定面积,火山灾害的影响面积即为岩浆经过的像元个数乘以像元面积,灾害影响范围图可以使用0、1的矩阵,即受灾位置为1,未受灾位置为0来表示。
【实现过程】(1)思想:这道题的关键是判别火山口的位置以及高程,随后利用递归原理将判别高低的结果输出到文本中。
难点的解决可以参考书中关于回溯法解决迷宫的问题,总体来说并不困难。
(2)程序实例:#include<iostream>using namespace std;struct offsets //位置在直角坐标下的偏移{ int a,b; //a,b是x,y方向的偏移char *dir; //dir是方向};offsetsmove[8]={{-1,0,"N"},{-1,1,"NE"},{0,1,"E"},{1,1,"SE"},{1,0,"S"},{1,-1,"SW"},{0,-1,"W"},{-1,-1,"NW"}};; //各个方向的偏移表int Maze[5][5]; //模拟火山二维矩阵int mark[5][5]; //访问标志数组int Seekpath(int x,int y){char *d;int g,h;mark[x][y]=1;for (int c=0;c<5;c++){g=x+move[c].a;h=y+move[c].b;d=move[c].dir;if (mark[g][h]==0&&Maze[g][h]<Maze[x][y]){mark[g][h]=1;if(Seekpath(g,h))return 1;}}return 0;};void main(void){int i,j;cout<<"请输入一个模拟火山的5*5的矩阵:"<<endl; for(i=0;i<5;i++){for(j=0;j<5;j++){cin>>Maze[i][j];mark[i][j]=Maze[i][j];}cout<<endl;}int max=0,l,k;for ( i=0;i<5;i++)for ( j=0;j<5;j++){if ( max<Maze[i][j]){max=Maze[i][j];l=i;k=j;}}for (i=0;i<5;i++) //初始化访问函数for (j=0;j<5;j++)mark[i][j]=0;Seekpath(l,k);for (i=0;i<5;i++){ for (j=0;j<5;j++){ cout<<mark[i][j]<<" ";}cout<<endl;}cout<<"火山口高度为:"<<max<<" 位于:"<<"第"<<l+1<<"行"<<"第"<<k+1<<"列"<<endl; }(3)运行结果:我没有解决像元面积的问题,想法是标记1的数量调用一个函数求得面积,最终没有写进去有点遗憾。
希望在以后的学习里能够善始善终,不畏难关。
(4)重点问题:有的同学采用的文件流读入火山矩阵信息,这只是一个小方面。
最终要的内容是如何判别最高点即为火山口的位置和进行八个方向的比较。
肯定是要利用堆栈来记录每次判断的像元信息,不能完全理解的话参照书上关于回溯法解决迷宫难题的相关讲解。
设置一个矩阵作为一个n维数组,调用一个前进方向函数,给出各个方向的偏移量。
通过位移标记数组并且保存行走路径,然后再递归就全部标记好了。
(5)算法分析:offsetsmove[8]={{-1,0,"N"},{-1,1,"NE"},{0,1,"E"},{1,1,"SE"},{1,0,"S"},{1,-1,"SW"},{0,-1,"W"},{-1,-1,"NW"}};; //各个方向的偏移表int g,h;mark[x][y]=1;for (int c=0;c<5;c++){g=x+move[c].a;h=y+move[c].b;d=move[c].dir;if (mark[g][h]==0&&Maze[g][h]<Maze[x][y]){mark[g][h]=1;if(Seekpath(g,h))return 1;}}这是有关回溯法的重要内容,上面是定义位移,下面是对数组元素偏移周围的大小判断后的标记,最后两句表示递归,这样就基本解决主要问题了。
实习题目二电子同学录1、功能需求编程实现一个小工具,支持文本格式同学信息的输入输出和查询。
同学信息至少应该包含姓名、性别、身份证号、班级、年龄、家庭住址等,其他如EMAIL等可根据实际情况酌情添加。
具体功能如下:(1)、信息管理(1)、从文本文件中批量导入多个同学信息;(2)、添加、编辑和删除单个同学信息,提供编辑界面;(3)、支持自定义群组的建立,能够将同学按照不同类型进行分组,如大学同学、高中同学等,具体分组方式和操作可参看QQ,一个同学可以同时存在于多个不同的分组中;(2)、信息查询提供查询条件的选择和输入以及查询结果的显示窗口,要求使用BST或AVL树动态创建搜索结构。
(1)、根据姓名查询同学,支持模糊查询,如丁一、丁二,输入“丁”字即可同时查询到。
(2)、根据身份证号查询同学,支持模糊查询;(3)、根据其他属性查询同学,支持模糊查询;(4)、根据群组查询同学,显示查询到的所有记录。
(5)、查询结果输出至文本文件。
2、数据结构及算法本题重点考察线性表和搜索树的使用。
设定合理的结构来存储同学的基本信息,请注意不同信息的数据类型。
信息编辑功能主要涉及线性表的具体添加和删除操作。
群组信息需要单独管理,群组和同学信息之间可以使用指针来连接,也可以通过在同学信息中添加属性项来实现。
信息查询功能主要涉及搜索树的动态建立和查找,根据用户选定的属性项,建立相应的搜索树,根据属性内容的不同,也可以采用哈希表的方式来进行相应的搜索设计,但必须实现动态的构建和销毁。
例如,姓名可以采用形式笔画或拼音排序,建立相应的BST树,而数字类型的属性字段如年龄等则可以采用取余的方式建立哈希函数。
【实现过程】(1)思想:这道题的关键是搜索树的建立。
我一开始思考这道题我想假如利用大一学的也能写的七七八八,但是还是简单的C++知识没有利用数据结构。
所以通过上网查询和老师指导,我逐步摸索出要点。
定义好数据表和数据录,逐步输入文本,然后根据要求编写相关的调用函数,一步一步来,虽然可能会很复杂但是理清脉络要想实现也并不困难。
(2)程序实例:#include<iostream>#include<string>#include<iomanip>#include<fstream>#include<windows.h>using namespace std;typedef struct//定义数据结构{string num;string name;string sex;string phone;string addr;}DataType;typedef struct node{DataType data;struct node *next; //定义顺序表节点}ListNode;typedef ListNode *LinkList;class StudentRecords //类{public:StudentRecords(){head=new ListNode;head->next=NULL;}~StudentRecords();void Build(); //功能相关函数void Add();void Check();void Delete();void PrintList();void cin_file(char*filename);void Preservation_file();private:LinkList head; //头结点};void StudentRecords::Build(){string NUM;bool flag=false;ListNode *p; // 存放后继元素的地址cout<<"分别输入编号,姓名,性别,电话,地址(输入0 结束通信录的建立):"<<endl; while(!flag){cout<<"编号:";cin>>NUM;if(NUM>"0"){ p=new ListNode; //判断是否存在之后录入p->data.num=NUM;cout<<"姓名:";cin>>p->;cout<<"性别:";cin>>p->data.sex;cout<<"电话:";cin>>p->data.phone;cout<<"地址:";cin>>p->data.addr;p->next=head->next;head->next=p;}else break; }cout<<endl;}StudentRecords::~StudentRecords() //类的析构函数{ListNode *p,*q;p=head;q=p->next;delete p;while(q){p=q;q=p->next;delete p;} //判断}void StudentRecords::Add() //继续添加{ListNode *p;bool flag=true;while(flag){p=new ListNode;cout<<"分别输入编号,姓名,性别,电话,地址:"<<endl;cout<<"编号:";cin>>p->data.num;cout<<"姓名:";cin>>p->;cout<<"性别:";cin>>p->data.sex;cout<<"电话:";cin>>p->data.phone;cout<<"地址:";cin>>p->data.addr;p->next=head->next;head->next=p;cout<<endl;cout<<"是否继续添加?(Y/N):";char YN;cin>>YN;if(YN=='Y')flag=true;else flag=false;}}void StudentRecords::Check() //查找{ListNode *p,*q;int i;bool flag1,flag2,flag3,flag;flag=true;char YN='Y';string NUM;string NAME;while(flag){if(!head->next){cout<<"通信录为空!"<<endl;break;}else{while(YN=='Y'){flag3=false;cout<<"请选择查询的方式(1编号,2姓名):";cin>>i;switch(i){case 1:cout<<"请输入编号:";cin>>NUM;break;case 2:cout<<"请输入姓名:";cin>>NAME;break;default:cout<<"好像输错了亲!"<<endl;flag3=true;break; }if(!flag3){p=head->next;flag1=false;while(p){flag2=false;switch(i){case 1:if(NUM==p->data.num){flag2=flag1=true;q=p;}p=p->next;break;case 2:if(NAME==p->){flag2=flag1=true;q=p;}p=p->next;break;default:break;}if(flag2){cout<<"该学生信息如下:"<<endl;cout<<"编号:"<<q->data.num<<endl;cout<<"姓名:"<<q-><<endl;cout<<"性别:"<<q->data.sex<<endl;cout<<"电话:"<<q->data.phone<<endl;cout<<"地址:"<<q->data.addr<<endl;}}cout<<endl;if(!flag1)cout<<"没有这个人!"<<endl;cout<<"请问是否继续查询?(Y/N):";cin>>YN;if(YN=='Y')flag=true;else flag=false;}}}cout<<endl;}}void StudentRecords::Delete() //删除信息{ListNode *p,*q;string NUM;char YN='Y';bool flag,flag1;flag1=true;while(flag1){while( YN=='Y'){ flag=false; p=head;q=p->next;if(!q){cout<<"通信录为空!"<<endl;flag1=false; break;}cout<<"输入删除编号:";cin>>NUM;while(q){if(NUM==q->data.num){cout<<"删除学生信息如下:"<<endl;cout<<"编号:"<<q->data.num<<endl;cout<<"姓名:"<<q-><<endl;cout<<"性别:"<<q->data.sex<<endl;cout<<"电话:"<<q->data.phone<<endl;cout<<"地址:"<<q->data.addr<<endl;p->next=q->next;delete q;flag=true;break;}else {p=p->next; q=p->next;}}if(!flag) cout<<"没有这个人!"<<endl;cout<<"是否继续进行删除?(Y/N):";cin>>YN;if(YN=='Y')flag1=true;else flag1=false;}}cout<<endl;}void StudentRecords::PrintList() //显示联系人信息{ListNode *p,*q,*s,*Max,*Min,*first;int count=0;if(head->next){first=new ListNode;s=first;cout<<"通信录的全部信息如下:"<<endl<<endl;cout<<"****编号"<<"***********姓名"<<"**********性别"<<"**********电话"<<"**************地址***********"<<endl;while(head->next){Min=head->next ;Max=Min->next ;q=head;while(Max&&Min){if(Max->data .num <Min->data .num ){Min=Max;Max=Max->next ;}else Max=Max->next ;}while(q->next !=Min)q=q->next ;q->next =Min->next;s->next=Min;s=Min;s->next =NULL;}delete head;head=first;p=head->next;while(p){cout<<setw(8)<<p->data.num<<setw(17)<<p-><<setw(13)<<p->data.sex<<setw(16)<<p->data.phone<<setw(21)<<p->data.addr<<endl;p=p->next;count++;}cout<<endl<<"同学总人数为:"<<count<<endl;}else cout<<"通信录为空!"<<endl;cout<<endl;}void StudentRecords::cin_file(char*filename){ifstream infile(filename,ios::in);if(!infile){cerr<<"open error!"<<endl;exit(1);}ListNode ch,* p;while(infile>>ch.data.num){ p=new ListNode;infile>>>>ch.data.sex>>ch.data.phone>>ch.data.addr; p->data.num=ch.data.num;p->=;p->data.sex=ch.data.sex;p->data.phone=ch.data.phone;p->data.addr=ch.data.addr;p->next=head->next;head->next=p;}infile.close();}void StudentRecords::Preservation_file(){ofstream outfile("RD.txt",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}ListNode * p;p=head->next;while(p){outfile<<setw(8)<<p->data.num<<setw(17)<<p-><<setw(13)<<p->data.sex<<setw(16)<<p->data.phone<<setw(22)<<p->data.addr<<endl;p=p->next;}cout<<"记录已保存!"<<endl<<endl;outfile.close();}int main(){StudentRecords RD;system("color 3");int n=1;fstream outfile("RD.txt",ios::out|ios::app); if(!outfile){cerr<<"open error!"<<endl;abort();}outfile.close();RD.cin_file("RD.txt");while(n){int m;cout<<" 欢迎进入孙国欢的通讯录 "<<endl;cout<<" 1.建立 "<<endl;cout<<" 2.添加 "<<endl;cout<<" 3.查询 "<<endl;cout<<" 4.删除 "<<endl;cout<<" 5.输出 "<<endl;cout<<" 6.保存 "<<endl;cout<<" 0.退出管理系统 "<<endl;cout<<"请输入您的选择(0--6):";cin>>m;switch(m){case 1:RD.Build();break;case 2:RD.Add();break;case 3:RD.Check();break;case 4:RD.Delete();break;case 5:RD.PrintList();break;case 6:RD.Preservation_file();break;case 0:n=0;break;default:cout<<"好像输错了!"<<endl;break;}}return 0;}(3)运行结果:这是我事先写进去的相关联系人信息首先检测是否能够输出。