课程设计报告(课程设计报告结束语于怎么写)
本文目录
- 课程设计报告结束语于怎么写
- 课程设计开题报告格式
- 课程实验报告与课程设计报告区别
- 数字逻辑课程设计报告-多人抢答器(完整版) 八位抢答器课程设计
- 课程设计报告是否需要目录
- C语言程序设计课程设计报告怎么写啊有谁有样本吗谢啦!
- 求c语言课程设计报告,300行左右题目不限急!
- 求C语言课程设计报告 程序已经写好了 就是报告不知道怎么写 T-T
- 求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析
- 学生成绩记录薄 c语言 课程设计报告
课程设计报告结束语于怎么写
通过这次的课程设计,在老师的带领下还有同组成员的相互交流相互探讨之后,我学会了如何将一个换热器从构想计算出详细的数据,并加上合理的。从这一过程中我学到很多东西,在大量繁杂的手册和资料中找出与我相关的重要资料。收获的经验很多,吸取的教训也不少。以前虽然在作业和考试中复习过换热器的计算,但实际设计过程却要复杂许多许多。大量的数据,繁杂的公式,实际应用取值范围要自己查找,然后的到符合此次课程设计标准的设计方案。通过两周的课程设计,我受益匪浅。最大的收获是能够独立完成器件的设计。当然,在设计的过程中我也遇到很多问题,但通过和老师同学的交流探讨,加上自己上网和图书馆查找相关资料,最终顺利解决。这是我第一次做课程设计,以前都是被动的学书本上的理论知识,这次做课程设计时要求将所学理论知识灵活运用。所以,受益很多。主要有:①掌握了查阅资料、搜集数据和合理选用公式的能力。②学会了从多方面考虑问题,比如在设计冷却器时,不仅要考虑设备本身的合理性,还要考虑到应用中的经济性和安全性等因素。③我的计算能力和对一些软件的熟悉度都有明显的提高。④学会了运用最简练的语言来表达问题,并且能够用图说明问题。
课程设计开题报告格式
课程设计开题报告格式
每个人都要经历写课程设计开题报告,下面就由我为大家整理课程设计开题报告格式,欢迎大家查看!
课程设计开题报告格式1
1、开题报告写作格式
第一步、论文拟研究解决的问题
内容要求:
明确提出论文所要解决的具体学术问题,也就是论文拟定的创新点。
明确指出国内外文献就这一问题已经提出的观点、结论、解决方法、阶段性成果。
评述上述文献研究成果的不足。
提出你的论文准备论证的观点或解决方法,简述初步理由。
撰写方法:
你的观点或方法正是需要通过论文研究撰写所要论证的核心内容,提出和论证它是论文的目的和任务,因而并不是定论,研究中可能推翻,也可能得不出结果。开题报告的目的就是要请专家帮助判断你所提出的问题是否值得研究,你准备论证的观点方法是否能够研究出来。
一般提出3或4个问题,可以是一个大问题下的几个子问题,也可以是几个并行的相关问题。
第二步、国内外研究现状
内容要求:列举与论文拟研究解决的问题密切相关的前沿文献。基于“论文拟研究解决的问题”提出,允许有部分内容重复。
撰写方法:只简单评述与论文拟研究解决的问题密切相关的前沿文献,其他相关文献评述则在文献综述中评述。
第三步、论文研究的目的与意义
内容要求:
简介论文所研究问题的基本概念和背景。
简单明地指出论文所要研究解决的具体问题。
简单阐述如果解决上述问题在学术上的推进或作用。
基于“论文拟研究解决的问题”提出,允许有所重复。
第四步、论文研究主要内容
容要求:初步提出整个论文的写作大纲或内容结构。由此更能理解“论文拟研究解决的问题”不同于论文主要内容,而是论文的目的与核心。
2、考虑要素
①研究的目标。
只有目标明确、重点突出,才能保证具体的研究方向,才能排除研究过程中各种因素的干扰。
②研究的内容。
要根据研究目标来确定具体的研究内容,要求全面、详实、周密,研究内容笼统、模糊,甚至把研究目的、意义当作内容,往往使研究进程陷于被动。
③研究的.方法。
选题确立后,最重要的莫过于方法。假如对牛弹琴,不看对象地应用方法,错误便在所难免,相反,即便是已研究过的课题,只要采取一个新的视角,采用一种新的方法,也常能得出创新的结论。
④创新点。
要突出重点,突出所选课题与同类其他研究的不同之处。
3、开题报告写作要点
第一、要写什么
这个重点要进行已有文献综述把有关的题目方面的已经有的国内外研究认真介绍一下先客观介绍情况要如实陈述别人的观点然后进行评述后主观议论加以评估说已有研究有什么不足说有这些研究但还有很多问题值得研究。其中要包括选题将要探讨的问题。由于研究不足所以你要研究。你的论文要写什么是根据文献综述得出来的,而不是你想写什么就写什么。如果不做综述很可能你的选题早被别人做得很深。
第二、为什么要写这个
这个主要是说明你这个选题的意义。可以说在理论上?你发现别人有什么不足和研究空白?所以你去做?就有理论价值。那么你要说清楚你从文献综述中选出来的这个题目在整个相关研究领域占什么地位。这就是理论价值。然后你还可以从实际价值去谈。就是这个题目可能对现实有什么意义可能在实际中派什么用场等等。
第三、怎么写
在开题报告里你还应当说清楚你选这个题目之后如何去解决这个问题。就是有问题你准备怎么去找答案。要说一下你大致的思路、同时重点阐述你要用什么方法去研究。如文献分析法、访谈法、问卷法、定量研究、实验研究、理论分析、模型检验等等。
在上述三个方面中间文献综述是重点。没有文献综述你就无法找到自己的题目也不知道这个题目别人已经做得怎么样所以你要认真进行综述。当然综述的目的还是引出你自己的话题所以不能忘记评述。
课程设计开题报告格式2
1 总述
开题报告的总述部分应首先提出选题,并简明扼要地说明该选题的目的、目前相关课题研究情况、理论适用、研究方法、必要的数据等等。
2 提纲
开题报告包含的论文提纲可以是粗线条的,是一个研究构想的基本框架。可采用整句式或整段式提纲形式。在开题阶段,提纲的目的是让人清楚论文的基本框架,没有必要像论文目录那样详细。
3 参考文献
开题报告中应包括相关参考文献的目录
4 要求
开题报告应有封面页,总页数应不少于4页。版面格式应符合以下第3部分第2)项“格式”的规定。
开 题 报 告
学 生:
一、 选题意义
1、 理论意义
2、 现实意义
二、 论文综述
1、 理论的渊源及演进过程
2、 国外有关研究的综述
3、 国内研究的综述
4、 本人对以上综述的评价
三、 论文提纲
前言、
结论
论文写作进度安排
毕业论文开题报告提纲
一、开题报告封面:论文题目、系别、专业、年级、姓名、导师
二、目的意义和国内外研究概况
三、论文的理论依据、研究方法、研究内容
四、研究条件和可能存在的问题
五、预期的结果
六、进度安排
七、教研室可行性论证结论
;课程实验报告与课程设计报告区别
课程实验报告与课程设计报告区别大。课程实验报告是实验之后写的。课程设计报告是课程之前写的。1、实验报告就是做了实验后写的,分实验题目,实验目的,实验准备,实验过程等。2、课程设计报告包括系统规划,系统分析,系统设计,系统实施报告。
数字逻辑课程设计报告-多人抢答器(完整版) 八位抢答器课程设计
数字逻辑课程设计 ——多路抢答器 专业:学号:姓名: 多路智力竞赛抢答器设计 一、设计内容及要求: 设计内容:本课题要求设计一台可供4-8名选手参加比赛的智力竞赛抢答器。 设计要求: 基本功能 (1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。 (2)设置一个系统清除和抢答控制开关S ,该开关由主持人控制。用来控制系统清零(编号显示数码管灭灯)和抢答的开始。 (3)抢答器具有锁存与显示功能。即抢答开始后,选手按动按钮,锁存相应的编号,并在编号显示器上显示该编号。同时封锁输入编码电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人将系统清除为止。 2.扩展功能 (1)抢答器具有定时抢答功能。要求定时器开始倒计时,并用定时显示器显示倒计时时间。 (2)参赛选手在设定时间(20秒)内抢答,抢答有效,同时定时器停止倒计时,编号显示器上显示选手的编号,定时显示器上显示剩余抢答时间,并保持到主持人将系统清零为止。 (3)如果定时抢答时间已到,却没有选手抢答时,本次抢答无效。系统扬声器报警(音响持续0.5秒),并封锁输入编码电路,禁止选手超时后抢答,时间显示器显示0。 二、实验内容及方法 1.组装调试抢答器电路。 2.设计可预置时间的定时电路,并进行组装和调试。当输人1Hz 的时钟脉冲信号时,要求电路能进行减计时,当减计时到零时,能输出低电平有效的定时时间到信号。 3.组装调试报警电路。 4.完成定时抢答器的联调,注意各部分电路之间的时序配合关系。然后检查电路各部分的功能,使其满足设计要求。 抢答器框架设计 定时抢答器的总体框图(如图 1.1)所示,它由主体电路和扩展电路两部 分组成。主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答按钮时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。扩展电路完成定时抢答的功能。 图1 如图所示为总体方框图。工作原理为:接通电源后,主持人将开关拨到“清零”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置; 开始" 状态,宣布“开始”抢答器工作。定时器倒计时,选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。 电路设计 1. 抢答电路设计 设计电路如图2所示。电路选用优先编码器 74LS148 和锁存器 74LS297 来完成。该电路主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号(显示电路采用七段数字数码显示管);二是禁止其他选手按键,其按键操作无效。 图2 工作过程:开关S 置于" 清除" 端时,RS 触发器的 R、S 端均为0,4个触发器输出置0,使74LS148的优先编码工作标志端(图中5号端)=0,使之处于工作状态。当开关S 置于" 开始" 时,抢答器处于等待工作状态,当有选手将抢答按键按下时(如按下S5),74LS148的输出经RS 锁存后,CTR=1,RBO(图中4端) =1,七段显示电路74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。此外,CTR =1,使74LS148 优先编码工作标志端(图中5号端)=1,处于禁止状态,封锁其他按键的输入。当按键松开即按下时,74LS148的 此时由于仍为CTR =1,使优先编码工作标志端(图中5号端)=1,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将S 开关重新置“清除”然后再进行下一轮抢答。 2. 定时电路设计 节目主持人根据抢答器的难易程度,设计一次抢答的时间,通过预置时间电路对计数器进行预置,选用十进制同步加减计数器74LS192进行设计,计数器的时钟脉冲由秒脉冲电路提供。具体电路如图3。 原理及设计:该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74LS48译码电路和2个7段数码管即相关电路组成。具体电路如图3所示。两块74LS192实现减法计数,通过译码电路74LS48显示到数码管上,其时钟信号由时钟产生电路提供。原理及设计:该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74LS48译码电路和2个7段数码管即相关电路组成。具体电路如图3所示。两块74LS192实现减法计数,通过译码电路74LS48显示到数码管上,其时钟信号 由时钟产生电路提供。按键弹起后,计数器开始减法计数工作,并将时间显示在共阴极七段数码显示管DPY_7-SEG 上,当有人抢答时,停止计数并显示此时的倒计时时间;如果没有人抢答,且倒计时时间到时, 输出低电平到时序控制电路,控制报警电路报警,同时以后选手抢答无效。结合我们的实际经验及考虑到元器件的成本,我们选择的电阻值为R1=15K,R2=68K,C=10uF,代入到上式中即得 ,即秒脉冲。 图3 仿真电路实验 一、 Multisim仿真电路图 实物制作 1. 原理图 1. 实物图 心得体会 通过这次设计,我的理论知识掌握得更扎实,动手能力明显提高。同时,通过网上搜索等多方面的查询资料,我学到许多在书本上没有的知识,也认识到理论联系实践的重要。在制作当中遇到了许多以前没遇到的困难。我们利用许多的方法去解决所遇到的问题。制作好以后,虽然基本符合设计要求,但我们总觉得欠缺点什么。这次设计,让我感受最深是。在仿真的阶段遇到很多的问题,计时电路不能随抢答而停止,以及在实物连接后,抢答电路不能锁存等问题。我们一定要具备一定的检查、排除电路故障的能力。我深刻认识到了“理论联系实际”的这句话的重要性与真实性。而且通过对此课程的设计,我不但知道了以前不知道的理论知识,而且也巩固了以前知道的知识。最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。
课程设计报告是否需要目录
课程设计报告是需要目录的,课程设计报告撰写要求一、课程设计报告的内容安排课程设计报告应包括以下7个方面的内容:.(前言)、:完整、准确、简练。(150字以下):(1)课题的目的或意义;(2)设计工作的主要内容、过程,采用的方法及取得的成果。即:做了什么工作?(3)结论或实现的功能。(KeyWords):一般3~5个,最能代表报告内容特征,或在报告起关键作用,最能说明问题的词组。(不能用元器件充数):(1)摘要应用第三人称书写;(2)不得引用他人的著作;(3)摘要应排除本学科已成常识的内容;(4)同义词不要并列为关键字。三、(前言)前言主要说明为什么要从事本设计工作(课题意义),本课题相关技术的现状与特点,拟采用的方案或路线。可以有以下的一些内容:、目的、意义。、特点。注意:(1)不要与摘要雷同;(2)学科中的常识内容、科普内容不必赘述。四、正文正文是整个报告的核心部分,应包括所进行设计或研究的整体内容。主要包括:,写出系统的组成(包括方案比较);(单元电路设计、参数计算和器件选择等内容)。(调试部分也应该和设计部分一样,分模块或单元电路调试,每个单元电路分调试的重点、调试应注意的地方、调试过程中出现了什么问题,如何解决的,仿真设计应与调试结合起来写)包括:使用的主要仪器和仪表;调试电路的方法和技巧;测试的数据和波形并与计算结果比较分析;调试中出现的故障、原因及排除方法。五、结论结论是对整个课题设计的总结,写你设计出来的这个系统的特点,存在的不足以及如何改进等要求:措词严谨、逻辑严密、文字准确。注意:(1)不要以第一人称(我)来书写;(2)不要对在设计过程中的常识性错误进行讨论。六、参考文献本部分列出撰写论文过程中所参考的文章、书本及其它文献。:,DesignandFabricationofAcousto-opticdevices,MarcelDekker,NewYork,1994(按时间顺序):
C语言程序设计课程设计报告怎么写啊有谁有样本吗谢啦!
实 验 报 告 一课 程 C语言程序设计 实验项目 C程序设计初步 成 绩 专业班级 学 号 指导教师 金发夏姓 名 序 号 实验日期 一【实验目的】1. 了解使用VC++6.0的开发环境;2. 掌握在该系统上如何、编译、连接和运行一个C程序;3. 通过运行简单的C程序,初步了解C源程序的特点;二【实验内容】【实验1-1】输入并运行一个简单的正确程序 1)输入下面的程序 include 《stdio.h》void main( ){printf(" 欢迎学习C语言程序设计!\n ");}2).仔细观察屏幕的输入程序,检查有无错误。3).对该程序进行编译,查看编译输出窗口,检查是否有错误,有错误需要改正错误。无错误就可以运行程序。【实验1-2】设计一个程序,已知矩形的两条边长为3.2和1.5,求矩形的面积。【实验1-3】求4和6的和,并在显示器上输出。然后修改程序从键盘上任意输入2个整数,并将二者的和输出。三【实验过程】四【实验小结】
求c语言课程设计报告,300行左右题目不限急!
//*************************************************************************** #include《string.h》 #include《ctype.h》 #include《malloc.h》 // malloc()等 #include《limits.h》 // INT_MAX等 #include《stdio.h》 // EOF(=^Z或F6),NULL #include《stdlib.h》 // atoi() #include《io.h》 // eof() #include《math.h》 // floor(),ceil(),abs() #include《process.h》 // exit() #include《iostream.h》 // cout,cin // 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 // #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE#define STACK_INIT_SIZE 100#define STACKINCREMENT 10//***************************************************************************//栈的储存结构typedef struct{ //运算符栈 char *base; char *top; int stacksize;}SqStack1;typedef struct{ //运算数栈 float *base; float *top; int stacksize;}SqStack2;//***************************************************************************//以下是运算符栈的基本操作函数Status InitStack(SqStack1 &S){ //初始化一个栈 S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char)); if(!S.base)exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;}//InitStackStatus DestroyStack(SqStack1 &S){ //销毁栈S free(S.top); free(S.base); return OK;}//DestroyStackchar GetTop(SqStack1 S){ //若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR if(S.top==S.base)return ERROR; return *(S.top-1);}//GettopStatus Push(SqStack1 &S,char e){ //插入元素e为新的栈顶元素 if(S.top-S.base》=S.stacksize){ //栈满,追加储存空间 S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char)); if(!S.base)exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK;}//PushStatus Pop(SqStack1 &S,char &e){ //若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR if(S.top==S.base)return ERROR; e=*(--S.top); return OK;}//Pop//***************************************************************************//以下是运算数栈的基本操作函数Status InitStack(SqStack2 &S){ //初始化一个栈 S.base=(float *)malloc(STACK_INIT_SIZE*sizeof(float)); if(!S.base)exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;}//InitStackStatus DestroyStack(SqStack2 &S){ //销毁栈S free(S.top); free(S.base); return OK;}//DestroyStackfloat GetTop(SqStack2 S){ //若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR if(S.top==S.base)return ERROR; return *(S.top-1);}//GettopStatus Push(SqStack2 &S,float e){ //插入元素e为新的栈顶元素 if(S.top-S.base》=S.stacksize){ //栈满,追加储存空间 S.base=(float *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(float)); if(!S.base)exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK;}//PushStatus Pop(SqStack2 &S,float &e){ //若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR if(S.top==S.base)return ERROR; e=*(--S.top); return OK;}//Pop//***************************************************************************//以下是相关的运算符判断函数char Precede(char A,char B){ //比较运算符A, B的优先关系,A,B的范围仅限于’+’,’-’,’*’,’/’,’^’,’(’,’)’,’=’ //返回’》’,’《’,’=’ switch(A){ case ’+’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’《’; case ’/’:return ’《’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’-’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’《’; case ’/’:return ’《’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’*’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’》’; case ’/’:return ’》’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’/’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’》’; case ’/’:return ’》’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’^’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’》’; case ’/’:return ’》’; case ’^’:return ’》’; case ’(’:return ’《’; case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’(’:switch(B){ case ’+’:return ’《’; case ’-’:return ’《’; case ’*’:return ’《’; case ’/’:return ’《’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:return ’=’; case ’=’:printf("表达式错误!\n");exit(0); default:printf("表达式错误!\n");exit(0); } case ’)’:switch(B){ case ’+’:return ’》’; case ’-’:return ’》’; case ’*’:return ’》’; case ’/’:return ’》’; case ’^’:return ’》’; case ’(’:printf("表达式错误!\n");exit(0); case ’)’:return ’》’; case ’=’:return ’》’; default:printf("表达式错误!\n");exit(0); } case ’=’:switch(B){ case ’+’:return ’《’; case ’-’:return ’《’; case ’*’:return ’《’; case ’/’:return ’《’; case ’^’:return ’《’; case ’(’:return ’《’; case ’)’:printf("表达式错误!\n");exit(0); case ’=’:return ’=’; default:printf("表达式错误!\n");exit(0); } default:printf("表达式错误!\n");exit(0); }}//PrecedeStatus InOP(char c){ //判断c是否是运算符,是则返回TRUE,否则返回FALSE switch(c){ case ’+’:return TRUE; case ’-’:return TRUE; case ’*’:return TRUE; case ’/’:return TRUE; case ’^’:return TRUE; case ’(’:return TRUE; case ’)’:return TRUE; case ’=’:return TRUE; default:return FALSE; }}//InOP//***************************************************************************float Operate(float a,char theta,float b){ switch(theta){ case ’+’:return a+b; case ’-’:return a-b; case ’*’:return a*b; case ’/’: if(b==0){ printf("分母不能为0!\n"); exit(0); } else return a/b; case ’^’: if(a==0&&b《=0){ printf("0的指数必须大于0!\n"); exit(0); } else return (float)pow(a,b); default:printf("表达式错误!\n");exit(0); }}//OperateStatus EvaluateExpression(){ //算术表达式求值 char c,x,theta,prec; //c是每次读取的字符,x是存放脱括号后的多余的括号,theta是运算符,prec是c的前一个字符 float a,b,result;//a、b是每次从运算数栈中取出的要进行运算的数,result存放最终结果 float cc,flag,ii,minus=1; //cc存放由字符串转化而来的浮点数,flag用于标记是否已读取过小数点, //ii存放小数部分需要缩小的倍数,minus用于记录该数前是否有负号 SqStack1 OPTR; SqStack2 OPND; InitStack(OPTR);InitStack(OPND); Push(OPTR,’=’); prec=’=’;scanf("%c",&c); while(c!=’=’||GetTop(OPTR)!=’=’){ cc=0;flag=0;ii=10; if(c==’-’&&(prec==’=’||prec==’(’)){minus=-1;prec=c;scanf("%c",&c);} //若某“-”前面是“=”(第一个符号就是“-”)或“(”,则此为负号,不是减号 else if(!InOP(c)){ while(!InOP(c)){ if(c》=48&&c《=57){ if(flag==0)cc=cc*10+c-48;//小数点之前 else if(flag==1){cc=cc+(c-48)/ii;ii*=10;}//小数点之后 else {printf("小数点错误!\n");exit(0);}//小数点有错 } else if(c==’.’)flag++;//读到小数点 else {printf("表达式错误!\n");exit(0);} prec=c;scanf("%c",&c); } cc*=minus;minus=1; Push(OPND,cc); }//不是运算符则进OPND栈 else switch(Precede(GetTop(OPTR),c)){ case ’《’:Push(OPTR,c);prec=c;scanf("%c",&c);break;//栈顶元素优先级低 case ’=’:Pop(OPTR,x);prec=c;scanf("%c",&c);break;//脱括号并接收下一字符 case ’》’://退栈并将运算结果入栈 Pop(OPTR,theta); Pop(OPND,b);Pop(OPND,a); Push(OPND,Operate(a,theta,b)); break; } } result=GetTop(OPND); printf("%f\n",result); //DestroyStack(OPTR); //DestroyStack(OPND); return OK;}//EvaluateExpression void main(){ printf(" **********************\n"); printf(" * 欢迎使用计算器! *\n"); printf(" **********************\n"); printf("请输入表达式,以“=”结束:\n"); printf("(支持实数间的加(+)、减(-)、乘(*)、除(/)、乘方(^)、单目减(-)运算)\n"); EvaluateExpression(); exit (0);}
求C语言课程设计报告 程序已经写好了 就是报告不知道怎么写 T-T
课程设计说明书规范要求说明书是体现和总结课程设计成果的载体,一般不应少于3000字。1、说明书基本格式说明书手写或打印均可。手写要用统一的课程设计用纸,用黑或蓝黑墨水书写工整;打印时统一使用word文档,正文采用小4号宋体,A4开纸,页边距均为20mm,行间距采用18磅,装订线留5mm。正文各级标题编号的示例如下图所示。一级标题:小三号,宋体加粗,居左,18磅行距,段后0.5行,段前为0。二级标题:四号,黑体,居左,18磅行距,段后为0.5,段前0行。三级标题:小四号,黑体,居左,18磅行距,段后为0.5,段前0行。正文内容起首空两格。2、说明书结构及要求(1)封面,包括题目、系(部)、班级、学生姓名、学号、指导教师及时间(年、月、日)等项。(2)摘要(仅对论文),摘要是论文内容的简短陈述。关键词应为反映论文主题内内容的通用技术词汇,一般为3--4个左右,一定要在摘要中出现。(3)目录,要求层次清晰,给出标题及页次。其最后一项是无序号的“参考文献”。(4)正文,正文应按照目录所定的顺序依次撰写,要求计算准确,论述清楚、简练、通顺,插图清晰,书写整洁。文中图、表及公式应规范地绘制和书写。(5)参考文献,参考文献必须是学生在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。要求参考《毕业设计工作规程》。(6)课程设计资料的装订,课程设计按以下顺序装订成册:封面、课程设计任务书、成绩评定表、目录、摘要、正文、设计体会及今后的改进意见、参考文献、图纸。
求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析
C语言课程设计任务书 一、题目: 学生成绩管理 二、目的与要求 1. 目的: (1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 2. 要求 基本要求: 1. 要求利用C语言面向过程的编程思想来完成系统的设计; 2. 突出C语言的函数特征,以多个函数实现每一个子功能; 3. 画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握C语言对文件的各种操作。 创新要求: 在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同 三、信息描述 输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求: 1)排序用一个函数实现。 2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。 3)按实验报告电子模板格式填写实验内容。 四、功能描述 1. 学生基本信息及成绩所选科目成绩的录入。 2. 基本信息的查询(分系、班级;分科目)与修改。 3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); 4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分); 5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息) 五、解决方案 1. 分析程序的功能要求,划分程序功能模块。 2. 画出系统流程图。 3. 代码的编写。定义数据结构和各个功能子函数。 4. 程序的功能调试。 5. 完成系统总结报告以及使用说明书 六、进度安排 此次课程设计时间为两周,分四个阶段完成: 1. 分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。 2. 编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。 3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。 4. 考核阶段。 #include 《stdio.h》 #include 《stdlib.h》 #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/ { char stu_id; /*学生学号;*/ float score; /*三门课成绩;*/ float total; /*总成绩;*/ float aver; /*平均成绩;*/ }; /*排序用一个函数来实现*/ void SortScore(student *stu,int n) { student stud; for(int i = 0; i 《 n-1; i++) for(int j = i+1 ; j 《 n; j++) { if(stu.total) { stud = stu; stu; stu = stud; } } } int main( ) { student stu; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/ /*输入这十个学生的相关信息*/ for(int i = 0; i《STU_NUM; i++) { printf("请输入第%d个学生的学号:",i+1); scanf("%s",&stu.stu_id); printf("输入第%d个学生的数学成绩:",i+1); scanf("%f",&stu); printf("输入第%d个学生的英语成绩:",i+1); scanf("%f",&stu); printf("输入第%d个学生的计算机成绩:",i+1); scanf("%f",&stu); stu; stu.total/3; } printf("\n"); SortScore(stu,STU_NUM);/*调用排序函数*/ /*输出排序后的各学生的成绩*/ for(i = 0 ; i 《 STU_NUM; i++) { printf("序号: %d\t",i); printf("学号:%s\t",stu.stu_id); printf("数学:%f\t",stu); printf("英语:%f\t",stu); printf("计算机:%f\t",stu); printf("平均成绩:%f\t",stu.aver); printf("总分:%f\t",stu.total); printf("\n\n"); } return 0; } 注:(源程序中主要标识符含义说明) #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/ { char stu_id; /*学生学号;*/ float score; /*三门课成绩;*/ float total; /*总成绩;*/ float aver; /*平均成绩;*/ } 实验结果: 输入 :(只输入后面的数字,前面的文字是自己产生的)。 请输入第1个学生的学号:001 输入第1个学生的数学成绩:1 输入第1个学生的英语成绩:1 输入第1个学生的计算机成绩:1 请输入第2个学生的学号:002 输入第2个学生的数学成绩:2 输入第2个学生的英语成绩:2 输入第2个学生的计算机成绩:2 请输入第3个学生的学号:003 输入第3个学生的数学成绩:3 输入第3个学生的英语成绩:3 输入第3个学生的计算机成绩:3 请输入第4个学生的学号:004 输入第4个学生的数学成绩:4 输入第4个学生的英语成绩:4 输入第4个学生的计算机成绩:4 请输入第5个学生的学号:005 输入第5个学生的数学成绩:5 输入第5个学生的英语成绩:5 输入第5个学生的计算机成绩:5 请输入第6个学生的学号:006 输入第6个学生的数学成绩:6 输入第6个学生的英语成绩:6 输入第6个学生的计算机成绩:6 请输入第7个学生的学号:007 输入第7个学生的数学成绩:7 输入第7个学生的英语成绩:7 输入第7个学生的计算机成绩:7 请输入第8个学生的学号:008 输入第8个学生的数学成绩:8 输入第8个学生的英语成绩:8 输入第8个学生的计算机成绩:8 请输入第9个学生的学号:009 输入第9个学生的数学成绩:9 输入第9个学生的英语成绩:9 输入第9个学生的计算机成绩:9 请输入第10个学生的学号:010 输入第10个学生的数学成绩:10 输入第10个学生的英语成绩:10 输入第10个学生的计算机成绩:10 输出: 序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000 平均成绩:10.000000 总分:30.000000 序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000 平均成绩:9.000000 总分:27.000000 序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000 平均成绩:8.000000 总分:24.000000 序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000 平均成绩:7.000000 总分:21.000000 序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000 平均成绩:6.000000 总分:18.000000 序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000 平均成绩:5.000000 总分:15.000000 序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000 平均成绩:4.000000 总分:12.000000 序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000 平均成绩:3.000000 总分:9.000000 序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000 平均成绩:2.000000 总分:6.000000 序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000 平均成绩:1.000000 总分:3.000000 七、撰写课程设计报告或课程设计总结 课程设计报告要求: 总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 C语言常见错误 书写标识符时,忽略了大小写字母的区别 main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。 3.将字符常量与字符串常量混淆。 char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a’和‘\’,而把它赋给一个字符变量是不行的。 4.忽略了“=”与“==”的区别。 在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then … 但C语言中,“=”是赋值运算符,“==”是关系运算符。如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。 5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 { z=x+y; t=z/100; printf("%f",t); } 对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。 6.多加分号。 对于一个复合语句,如: { z=x+y; t=z/100; printf("%f",t); }; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 又如: if (a%3==0); I++; 本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。 再如: for (I=0;I《5;I++); {scanf("%d",&x); printf("%d",x);} 本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。 7.输入变量时忘记加地址运算符“&”。 int a,b; scanf("%d%d",a,b); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。 8.输入数据的方式与要求不符。①scanf("%d%d",&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。 ②scanf("%d,%d",&a,&b); C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的: 3,4 此时不用逗号而用空格或其它字符是不对的。 3 4 3:4 又如: scanf("a=%d,b=%d",&a,&b); 输入应如以下形式: a=3,b=4 9.输入字符的格式与要求不一致。 在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。 scanf("%c%c%c",&c1,&c2,&c3); 如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。 10.输入输出的数据类型与所用格式说明符不一致。 例如,a已定义为整型,b定义为实型 a=3;b=4.5; printf("%f%d\n",a,b); 编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。 11.输入数据时,企图规定精度。 scanf("%7.2f",&a); 这样做是不合法的,输入数据时不能规定精度。 12.switch语句中漏写break语句。 例如:根据考试成绩的等级打印出百分制数段。 switch(grade) { case ’A’:printf("85~100\n"); case ’B’:printf("70~84\n"); case ’C’:printf("60~69\n"); case ’D’:printf("《60\n"); default:printf("error\n"); 由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如 case ’A’:printf("85~100\n");break; 13.忽视了while和do-while语句在细节上的区别。 (1)main() {int a=0,I; scanf("%d",&I); while(I《=10) {a=a+I; I++; } printf("%d",a); } (2)main() {int a=0,I; scanf("%d",&I); do {a=a+I; I++; }while(I《=10); printf("%d",a); } 可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I》10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。 14.定义数组时误用变量。 int n; scanf("%d",&n); int a; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。 15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。 main() ; printf("%d",a); } C语言规定:定义时用a是不存在的。 16.初始化数组时,未使用静态存储。 int a=; 这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为: static int a=; 17.在不应加地址运算符&的位置加了地址运算符。 scanf("%s",&str); C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为: scanf("%s",str); 18.同时定义了形参和函数中的局部变量。 int max(x,y) int x,y,z; {z=x》y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为: int max(x,y) int x,y; {int z; z=x》y?x:y; return(z); } C语言心得体会 通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。 这次实训是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。 通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。 计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。 八、参考资料 :《C语言程序设计教程》
学生成绩记录薄 c语言 课程设计报告
C语言程序设计报告课题名称:学生成绩管理1 系统概述:本程序为一个学生成绩管理系统,对学生的成绩进行管理,学生的信息包括学号,姓名,学期,三门课程的成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.2 数据结构设计: (1)结构体; (2)数组的设计:运用指针代替数组,使用指针来建立线性表,使程序更加简洁,可读性更强.3 各函数的设计:函数原型:void InitList(SqLinkList &L);功能: 创建一个空的线性链表;入口参数:L为要创建的线性链表;出口参数:创建链表的L.head为空,L.length为0;返回值: 无; 函数原型:void EmptyLinkList(SqLinkList &L);功能: 清空整个线性链表;入口参数:L为要清空的链表名称;出口参数:若清空成功则链表长度L.length为0;返回值: 无; 函数原型:int ScanE(ElemType &e);功能: 输入学生信息;入口参数:e为要输入信息的学生名称;出口参数:e.num保存学号,e.name保存姓名,e.team保存所在学期,e.s1,e.s2,e.s3分别保存三门课程的成绩;返回值: 输入合法返回1,否则返回0;错误处理:若学号、姓名等输入不合法会有提示及重输; 函数原型:Status SqLinkListAppend(SqLinkList &L,ElemType e);功能: 追加一个结点到线性链表中;入口参数:e为所追加的结点名称,L为e所追加到的线性链表的名称;出口参数:若追加成功,则e为头结点,链表长度L.length增1;返回值: 若追加成功返回1; 函数原型:Link SearchNode(SqLinkList L,int NUM);功能: 查找学号为NUM的学生;入口参数:查找的链表名称L,学号NUM;出口参数:若找到结点指针p指向该结点,否则指向空结点;返回值: 结点指针p; 函数原型:void SearchTeam(SqLinkList L,int team);功能: 查找学期为team的所有记录并输出其信息;入口参数:查找的链表名称L,要查找的学期team;出口参数:无;返回值: 无; 函数原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);功能: 查找所有有挂科记录的学生并输出其信息;入口参数:查找的链表名称L,要查找的各门学科成绩s1,s2,s3;出口参数:无;返回值: 无; 函数原型:void SqLinkListSearch(SqLinkList L);功能: 对链表进行分类查找;入口参数:要查找的链表名称L;出口参数:无;返回值: 无; 函数原型: void inputData(SqLinkList &L);功能: 输入数据,并追加一个结点;入口参数: L为要追加结点的链表名称;出口参数: 无;返回值: 无; 函数原型:void SqLinkListTraverse(SqLinkList L);功能: 输出链表中所有学生成绩列表;入口参数:L为要输出信息的链表名称;出口参数:无;返回值: 无; 函数原型:void PrintE(ElemType e);功能: 输出一个结点的所有信息;入口参数:要输出的结点名称e;出口参数:无;返回值: 无;4 使用程序的说明:本程序为一个学生成绩管理系统。对学生的成绩信息进行管理,学生的信息包括学号、姓名、学期、三门课程的成绩、平均成绩、名次。本管理系统实现学生的学号、姓名、学期、每门课程的成绩的录入,并自动按平均分排名,使用时按屏幕上的提示,输入使用代码.如下图所示: 例如:输入代码数字”1”,程序执行”输入学生成绩或已存在的学生成绩进行修改”这条小程序.输入学生个人信息后,如下图所示: 如此分别输入相应的程序代码,就执行相应的程序段. 如下的程序是按学号进行成绩排名: 当输入”6”时,执行相应的程序,即汇总一共输入学生的人数: 5 总结和体会:通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。团结就是力量是我这次最真切的感受。6 程序代码: void InitList(SqLinkList &L) { // 构造一个空的线性表L;L.head = 0; //头指针为空;L.length = 0; //长度初始为0;} void EmptyLinkList(SqLinkList &L){ //入口参数为整个线性表的数据,功能为清空线性表;Node *p;if(!L.head)printf("系统中不存在记录。\n"); //头指针为空时没有学生录入;else { while (L.head){ //每个循环将下一结点赋值给头指针,并释放本结点空间,直至线性表清空; p=L.head; L.head=p-》next; free(p); } //end while;L.length=0; //长度为0;printf("该管理系统学生信息已清空。\n");}//end else;} int ScanE(ElemType &e){ //输入一个学生的成绩数据结点。返回0为无效结点数据,1为有效结点数据;printf("\n学号:");scanf("%d",&e.num);if(e.num==0){ //学号为0输入不合法,重新输入; printf("学号输入不合法.\n"); return 0; }printf("\n姓名:");scanf("%s",&e.name);printf("\n学期:");scanf("%d",&e.team);while(e.team》12){ //系统只记录小于12的学期数; printf("输入的学期不能大于12,请重新输入:"); scanf("%d",&e.team);}printf("\n成绩A:");scanf("%f",&e.s1);printf("\n成绩B:");scanf("%f",&e.s2);printf("\n成绩C:");scanf("%f",&e.s3);return OK;} Status SqLinkListAppend(SqLinkList &L,ElemType e){ //追加一个结点到线性表中;Node *p;p=SearchNode(L,e.num); //查找学号为e.num的记录并将其地址赋给指针p; if (p==0){ //若不存在添加学号相同的结点,追加一个结点; p=(Node *)malloc(sizeof(Node)); if (!p) return ERROR; memcpy(&(p-》data),&e,sizeof(ElemType)); p-》next=L.head ; L.head=p; //追加的一个结点为首结点; L.length++; //表长度加1;}else { //如果该学号记录已存在,则进行修改操作;memcpy(&(p-》data),&e,sizeof(ElemType));printf("该学生记录已经存在,已完成修改操作。\n"); }return OK;} Link SearchNode(SqLinkList L,int NUM){ //查找学生记录,该学生的学号为NUM;Node *p;p=L.head; //p先指在头结点;while (p&& p-》data.num !=NUM ) p=p-》next; //如果该学生的学号不为NUM则查找下一个结点;return p;} void SearchTeam(SqLinkList L,int team){ //按学期查找并输出所有该学期存在的记录;Node *p;p=L.head;int n,sum=0; //sum记录该学期的学生总人数;printf("请输入您要查询的学生的学期:");scanf("%d",&n); printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");while(p&&p-》next){ //如果p结点和它的下一结点不为空,且该结点的学期等于要查找学期,则格式输出所有该学期学生信息;if(p-》data.team==n){PrintE(p-》data);sum++; //查找到一个该学期的学生记录计数加1; } p=p-》next; //转向下一结点;} //end while;if(p-》data.team==n){ //如果p的下一结点为空,且本结点学期为n,则格式输出该结点信息;sum++;PrintE(p-》data);}if(sum==0)printf("没有这学期的记录。\n");if(sum)printf("该学期共有%d人的记录.\n",sum);} void SearchUnpass(SqLinkList L,float s1,float s2,float s3){ //查找并输出有挂科的学生信息;Node *p;p=L.head;int sum=0; //sum计数挂科总人数,初始为0;printf("以下是有一门以上不及格科目的学生的成绩:\n"); printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n"); while(p&&p-》next){ //如果p及其下一结点为真,且该结点有一门以上科目分数低于60则输出该结点成绩并使sum计数加1; if((p-》data.s1《60)||(p-》data.s2《60)||(p-》data.s3《60)) { PrintE(p-》data); sum++; } //end if; p=p-》next; //转到下一结点; } //end while; if((p-》data.s1《60)||(p-》data.s2《60)||(p-》data.s3《60)){ //查看最后一个结点,若有挂科,sum加1并格式输出结点信息; sum++; PrintE(p-》data); } if(sum==0)printf("没有不及格的记录。\n"); if(sum)printf("共有%d人的挂科记录.\n",sum);} void SqLinkListSearch(SqLinkList L){ //分类查找学生记录;Node *p;p=L.head;int n,reg; //reg为查询方式的指令; printf("1--按学号查询\n2--按学期查询\n3--挂科学生信息列表\n");printf("请您输入查询方式:");scanf("%d",:registered:);if(L.length){if(reg》3)printf("对不起没有您要求的选项。\n"); //若reg》3则输入不合法;else if(reg==1){ //reg==1按学号查询;printf("请输入您要查询的学生的学号:");scanf("%d",&n);while(p&&p-》next&& p-》data.num !=n) p=p-》next; //当p和他下一结点为真时且结点数据不为要查找数据时转向下一结点; if(p-》data.num==n){ //找到所要查询结点,格式输出;printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");PrintE(p-》data); }else printf("没有您要查找的学号。\n");} //end reg==1 if ;else if(reg==2)SearchTeam(L,p-》data.team); //reg==2,调用SearchTeam函数按学期查询并输出;else if(reg==3)SearchUnpass(L,p-》data.s1,p-》data.s2,p-》data.s3); //reg==3,调用SearchUnpass函数,输出全部有挂科记录的学生信息;}//end if;else printf("系统中无记录.\n");} void inputData(SqLinkList &L){ //请求输入学生成绩,则追加一个结点并输入;ElemType e;if (ScanE(e)) SqLinkListAppend(L,e); //输入数据,追加一个结点;} void SqLinkListTraverse(SqLinkList L){ //所有学生信息列表输出;Node *p;char c;p=L.head;if(p) //非空表;{printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");for (p=L.head ;p;p=p-》next )PrintE(p-》data); //从第一个结点开始输出所有信息直到结点为空; }else printf("系统中无记录。\n"); //空表;c=getchar();} void PrintE(ElemType e){ //输出各科成绩和平均成绩;printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);//格式输出学生的学号、姓名、学期、A、B、C三门成绩以及平均成绩;}
本文相关文章:
换届大会主持稿(我要主持一个我们学校校学生会的换届大会,急求一份主持稿,主要是开场白及结束语中间要不要说些什么)
2024年5月21日 18:30
更多文章:
MBA论文如何写 MBA论文写作要求?mba毕业论文选题方向
2024年8月27日 18:00
一头怪牛,两条圆腿骑它肚上,抓它双角猜是什么物品?一条怪牛身长四脚肥头肥耳到处乱走猜一动物
2024年7月6日 23:50