课程设计实训报告范文

2023-07-16

课程设计实训报告范文第1篇

一、基于策略销售沙盘的营销实训课程设计目标

将策略销售沙盘 (物理沙盘、电子沙盘) 与教师导入案例相结合, 模拟真实的销售竞争环境。通过学生分组和组内学生角色分配, 形成对抗的销售队伍和队伍内角色, 让学生在销售对抗中逐步掌握营销实训 (销售模块) 的核心技能, 切实提高营销专业学生操作技能、团队协调公关的整体素质。具体来说达到以下三个目标:一是形成统一的销售沟通语言;二是掌握销售计划制定要点和步骤;三是掌握营销 (销售) 项目不同阶段, 策略调整的方法。

二、基于策略销售沙盘的营销实训课程设计的内容

(一) 营销 (销售) 沙盘模拟实训规则

本部分实训主要让学生掌握策略销售沙盘使用规则, 明白案例背景与角色介绍, 落实裎学生分组, 这是整个实训课推进的基础。本部分实训内容主要有四个部分组成。一是营销 (销售) 背景案例学习。主要通过案例导入课程, 说明营销 (销售) 策略重要性;二是营销 (销售) 策略要素学习。主要掌握营销 (销售) 对象的反馈方式;三是营销 (销售) 沙盘的支持度与分值的使用规则;四是;五是初始化策略销售数据。通过读第一阶段案例, 在策略销售物理与电子沙盘上输入营销项目的初始数据。

(二) 营销 (销售) 模拟实训:现状分析

本部分实训内容, 重点让学生掌握营销 (销售) 项目面临形势的研判方法, 为营销 (销售) 计划的开展打下坚实基础。主要内容包括四内容:一是以根据第一阶段的背景案例数据, 分析营销对象的实际需求是什么, 明确营销 (销售) 目标;二是明确营销 (销售) 项目面临的营销竞争对手和竞争形势;三是明确营销 (销售) 项目中客户关键人及其特点, 掌握第一阶段关键人在特定营销 (销售) 项目中的重要作用, 制定相应的营销 (销售) 策略;四是根据第二阶段营销案例背景, 分析项目中各角色的态度, 确定关键人, 填写策略销售物理及电子沙盘。

(三) 营销 (销售) 模拟实训项目:对象分析

本部分实训内容, 重点让学生如何营销 (销售) 对象, 尤其是关键人的态度及其对我们的支持度, 掌握营销对象的真实需求, 从而制定营销项目中关键人的应对策略, 营销资源的使用策略。主要内容有五部分。一是确定关键人对我们态度;二是明确关键人的对项目的影响力;三是确定营销对象的购买心理;四是根据第三阶段的案例背景, 制定项目关键人应对策略, 营销资源使用策略, 填写策略销售物理及电子沙盘。

(四) 营销 (销售) 模拟实训项目:布局与实施

本部分实训内容, 要学生掌握转变影响营销项目成败的关键人态度的方法, 掌握不同情况下如何调配营销 (销售) 支持资源, 更好完成营销计划。主要内容有:一是如何应对关键人态度的变化。掌握如何使消极或自满的关键人变得积极;二是营销支持资源有效使用。包括为什么使用特定资源, 与资源的沟通, 资源使用的成本限制;三如何面对竞争。掌握面对营销竞争对手的一般策略有哪些;四是根据四阶段案例情况, 综合分析项目状况, 填写策略销售物理与电子沙盘。

(五) 营销 (销售) 模拟实训项目:营销策略点评

本部分实训内容, 重点评营销 (销售) 实训模拟项目四个阶段, 不同小组最终的营销 (销售) 策略优点与不足、营销策略有效性、营销效果差距成因等, 各小组形成实训报告。

三、营销 (销售) 模拟实训教学中的注意事项

(一) 营销实训教学环境的设置

营销实训分小组进行, 每个小组是一个营销团队。营销团队要完成头脑风暴、会议讨论等, 传统的教室无法满足实训教学需要。教学环境要设置成圆桌形式, 一般要具备6-8张会议圆桌, 相互独立, 同时, 也能满足团队交流的需要。

(二) 营销实训教师角色转变

营销 (销售) 实训教师在期中扮演引导师的角色, 主要负责介绍策略销售沙盘使用规则, 引导解读各阶段背景案例, 点评实训结果。重点启发学生从多角度分析背景案例, 充分发挥学生的能动性, 制定各具特色的执行性强的销售策略。

(三) 营销实训过程要循序渐进

营销 (销售) 实训过程是分阶段进行, 不同阶段有不同的案例背景。在每一阶段, 每个实训营销 (销售) 策略制定之后, 教师要引导实训小组充分讨论, 并结合本阶段案例背景对各小组营销策略进行点评, 不断强化学生掌握动态制定营销策略的方法, 实际掌握学生对各策略制定方法的掌握程度。根据上一阶段策略制定情况, 进入实训课程的下一阶段的背景案例。

(四) 实训小组分组对抗

营销 (销售) 小组一般分组保持在6-8组, 分组对抗制定营销策略。对抗的小组拥有不同的技术、资金、人员等资源。在同一个案例背景下, 分别制定营销 (销售) 策略, 最终由策略销售沙盘系统评分, 得出营销策略实施结果。因此, 小组之间的对抗对关系, 而非简单的学习。

摘要:销售技能是营销专业学生重要能力。本文以策略销售沙盘为营销实训载体, 通过销售项目背景案例与沙盘相结合, 让学生掌握统一的销售语言。文章设计了营销实训目标和内容, 并对营销实训中的注意事项进行了总结。

课程设计实训报告范文第2篇

《静态网站建设》 实 训 报 告

题目:

专业:班级:学号:姓名:成绩:指导教师:

完成日期:年月日

- 1 - 1

目录

一、 课程设计目的 .................... 1

二、 课程设计题目描述和要求 ..................... 1

三、 课程设计报告内容 ................... 1

3.1总体功能介绍 ............................... 1

3.2总体框架结构设计 .............................. 2

3.3页面设计 ......................... 2

3.4总体测试与发布 ........................... 2

四、 结论 ...................... 2

五、 结束语 ......................... 3

六、 主要参考资料 ....................

3一、课程设计目的

本课程是一门计算机科学与技术及相关专业实践性环节。以HTML和CSS为基础,全面介绍与网页设计制作有关的知识,向学生阐明Web基本工作机制,并使学生具有一般网页制作的能力。与此同时,通过对Web页制作技术和制作工具的学习,使学生对网页设计中所涉及的相关知识有一个全面的了解。通过本课程的学习,使学生全面了解网站建设与网页设计的基本概念、基本理论及业务运作模式,了解网站建设与网页设计的特点及工作过程,掌握网站的建立及网页设计制作的方法,能够完成一般性网站的建设,因此要求利用网页设计方法,设计一个网站,提高综合应用所学知识的能力,积累 Web 程序的编程经验,提高编程与调试能力,培养独立学习、吸取他人的经验、探讨技术的习惯和团队协作能力。

二、课程设计题目描述和要求

每个设计人员设计制作利用DIV+CSS网页布局方法制作的任意类型的网站(主题不限),制作网站所需的相关文字资料、图片资料等可以到相关类型的网站上进行采集或自行采集。

要求:根据上面指定的网站开发项目内容进行开发设计,网站栏目设置、网站要表达的具体内容和网站的风格根据小组确定的课题进行设计;要求根据网站设计规范和常用网制作页技术进行设计;设计的网站要求结构合理,版面美观大方,颜色合理,风格一致,并运用适当的动态网页技术进行修饰。

三、课程设计报告内容

3.1总体功能介绍

制作该网站的时代背景?该网站主要的功能是什么?可以实现哪些用途?主要使用的技术是什么?利用了哪些语言实现哪些效果……

3.2总体框架结构设计

该网站有多少个模块?层次关系是什么样子的?并且可以绘制一个流程图来进行进一步说明。

3.3页面设计

3.3.1首页(页面、设计思路、主要代码)

1.进行截图;

2.对设计思路进行说明。

3.将主要代码复制粘贴。

3.3.2各子页(页面、设计思路、主要代码)

1.进行截图;

2.对设计思路进行说明。

3.将主要代码复制粘贴。

3.4总体测试与发布

使用的测试方法是什么?

测试中遇到的问题以及解决的方法。

四、结论

写法要求:

1、概括地说明所进行工作的情况和价值,分析其优点和特色,指出创新所在,性能达到何种水平,并应指出其中存在的问题和今后的改进方向,特别是对工作中遇到的重要问题要着重指出,并提出自己的见解。篇幅不宜过长。

2、结论要简单、明确。在措辞上应严密,容易被人领会。应实事求是地介绍自己的工作成果,忌言过其实,在无充分把握时,应留有余地。

五、结束语

要求:在文章结尾处,通常以简短的文字,对设计过程中自己的收获,及工作过程中曾给自己以直接帮助的人员,例如指导老师、答疑老师及其他人员,表示自己的谢意。这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应有的品质。

六、主要参考资料

[1]吴东伟等,《网页设计三剑客》,北京,清华大学出版社,2004年

[2]李宏,张敏,《网页设计与制作》,北京,化学工业出版社,2006年

[3]李桂杰,《网页设计与制作》,大连,大连理工大学出版社,2008年

[4]李英俊,《网页设计与制作》,大连,大连理工大学出版社,2010年

课程设计实训报告范文第3篇

2014—2015学年第1学期

学 院: 计算机学院 专业班级: 软件工程5班 学 号: 130202051006 学生姓名: 陈洪阳 指导教师: 戴俊雅

成 绩:

时 间:

2015年 1月5日

实践1.猜数游戏 题目概述:

编程先由计算机“想”一个1~100 之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10 次,如果猜了10 次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。

程序设计概要与分析:

在源程序的开头中包含stdlib和time库函数,这样我们就可以调用srand()和rand()函数,其中调用srand()提供一个种子,它是一个unsigned int类型,取值范围是0~65535,然后调用rand(),根据提供给srand()的种子值返回一个随机数,我们用rand()%100就把随机决定的数值范围确定在1~100之间,然后定义一个num,记录这个随机产生的随机数,定义input,来储存用户输入的猜数值,用times来记录猜的次数,用do while循环来执行用户猜的次数有10次,用if else条件语句来判断用户是否猜中,或猜得太大、太小,用一个while循环来做总嵌套,设置n的值一开始不为零,while循环的条件是当n的值不等于0,最后用户就可以修改n的值来决定是否退出。

程序代码:

#include #include #include

int main() {

int n=1; while(n!=0) {

srand((unsigned)time(NULL)); int num,input; int times=0; num=(rand()%100)+1; printf("在1~100间猜一个数 "); scanf("%d",&input); do{

if(input==num){

} else if(input>num){

} else if(input

}

}

} printf("你猜的数太小了,请再猜一个 "); scanf("%d",&input); times++; }while(times<9); if(times>=9)printf("你已经猜了10次都猜不中,你输了 "); printf("继续下一轮新的猜数请按1,退出请按0 "); scanf("%d",&n); return 0; 运行结果示例:

选择继续下一轮新的猜数,猜了10次都没猜中

心得体会:

要懂得如何生成一个随机数,并且要确定它的范围在1~100之间,同时我们还要用do while循环体把猜数的次数控制在10次,每当我们输入猜想的数时就要做出判断,看看是否猜中,或者猜得太大或太小,输出提示信息。也懂得了通过修改while判断循环里面的条件,使得循环体里面的程序受我们修改的条件控制,可以继续循环执行或者不再继续执行。

实践2.成绩排名次 题目概述:

某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30 人参加考 试,学号可以用输入的序号代替。考试后要求: (1)计算每个学生的总分和平均分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分; (4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

程序设计与概要:

定义存储学生信息的结构体,包括学生编号,姓名,各科成绩,总分,平均分还有名次。该结构体命名为student,然后定义结构体数组student s[],首先输入准备录入学生信息的人数,用amount来记录人数,用一个for循环,从0~amount-1,依次输入每个学生的各种信息,如学号,姓名,数学、英语和物理成绩。用grade[]数组来存这三科的成绩,如grade[0]存储数学成绩,grade[1]存储英语成绩。输入之后,再用一个for循环把每个同学的总分求出来,总分再除去3求出该名同学的平均分。按总分成绩由高到低排出名次,用两个for循环嵌套,第一个循环从0~amount,表示从第一个同学开始拿出来比较,第二个循环从1~amount,表示除了之前取出的同学以外的每一个同学,如果前一位同学的总分小于后一个同学的话,就交换两人的信息,第二个循环比较之后,便会把总分最高的同学的信息储存在第一个,然后我们设置排名rank的值为1,rank++,进行筛选第二名的,之后对应地把rank的值设给学生的总分排名

打印学生信息,输出表格的基本框架后,用一个for循环,依次输出每个学生的信息,最后还有根据学号查询学生信息,用户输入要查询的学生学号,在for循环里面依次比较,如果找到学号与用户输入相同的,便输出该名学生的信息。

程序代码:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title();

void list(student s[]); int main() { input(s); int i=0; for(i=0;i

//要求1 计算总分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; } //要求2 按总成绩排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } //要求3 打印名次表

title(); list(s); //要求4 查询

int number; printf("请输入你要查询学生的学号: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; }

void input(student s[]) { printf("输入班上参加期末考试的人数(不大于30人)"); scanf("%d",&amount); printf("请依次输入他们的学号,姓名,数学成绩,英语成绩和物理成绩 "); for(int i=0;i

printf("第%d位同学的学号,姓名,数学成绩,英语成绩和物理成绩 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } }

void title() {

printf(" 学生成绩表 ");

printf("----------------------------- ");

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { //n表示人数

int i;//rank=1; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

运行结果示例:

确定录入人数之后,依次输入每个学生的信息

打印出名次表:

输入学生的学号,查询学生信息:

心得体会:

懂得了用结构体将不同的数据类型结合在一起,然后定义结构体数组,使得每个数组中的成员都具有不同的数据类型变量。而且同属于一个数据类型,也可以定义数组来表示相同的类型但是有多个不同值,比如成绩这个变量。也懂得了用for循环语句求总分,用for循环语句将数组从头到尾输出。

实践3.单科成绩统计 题目概述:

学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过 30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实

现下列功能:(1)统计不及格人数并打印不及格学生名单;

(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下: 分段 人数 图形 <60 3(10%)*** 60‐69 8(…) ******** 70‐79 7(…) ******* 80‐89 8(…) ******** >=90 4(…) ****

程序设计与概要:

定义一个结构体stu,里面有学生的姓名和成绩,然后定义一个s[]数组存放每个学生的姓名和成绩,输入函数中用一个for循环来依次输入每个学生的姓名,还有输入成绩,用if条件语句判断输入的成绩是否为负数,如果是就退出整个输入函数,同时,我们还用if条件语句来判断输入的成绩处于哪个分数阶段,定义n

1、n

2、等整形变量来存储各个分数段的总人数,变量num来存放输入的学生共有多少人,变量sum是将每个学生的成绩都加在一起,最后用sum/num就等于全班该门成绩的平均分,我们用一个for循环语句,判断每个学生的成绩是否小于60分,如果是就输出他的姓名,这样就可以打印出不及格学生的名单了。同样的,用一个for循环语句,判断每个学生的成绩是否大于等于平均分,如果是就变量count+1,用来记录成绩大于或等于平均分的学生人数,同时可将成绩大于平均分的同学姓名输出,这样就打印出了成绩在大于等于平均分的学生名单了。最后是输出分数段,用前面记录各个分数段人数的n值除以总人数再乘以100%就得出比例,每一个分数段都用一句for循环语句,根据n值的大小输入对应数目的*。

程序代码:

#include #include #define M 30 struct stu { char name[20]; int score; }; stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0; int count=0; void input(stu s[]); void getnotpass(stu s[]);

void getavg(stu s[]); void percent(stu s[]); int main() { /*stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0;*/ input(s); getnotpass(s); getavg(s); percent(s); return 0; } void input(stu s[]) { for(i=0;i

printf("请输入第%d个学生的姓名和成绩 ",i+1);

scanf("%s%d",&s[i].name,&s[i].score);

if(s[i].score<0)

break;

if(s[i].score>=0&&s[i].score<60)

n1++;

if(s[i].score>=60&&s[i].score<70)

n2++;

if(s[i].score>=70&&s[i].score<80)

n3++;

if(s[i].score>=80&&s[i].score<90)

n4++;

if(s[i].score>90)

n5++;

num++;

sum+=s[i].score; } printf("学生信息录入完毕 "); } void getnotpass(stu s[]) { printf("不及格人数为:%d ",n1); printf("不及格人员名单如下: "); for(i=0;i

if(s[i].score>=0&&s[i].score<60)

printf("%s ",s[i].name); } printf(" "); ave=sum/num; } void getavg(stu s[]) { for(i=0;i

if(s[i].score>=ave)count++; } printf("成绩在全班平均分及平均分之上的学生人数为:%d ",count); printf("成绩在全班平均分及平均分之上的学生名单如下: "); for(i=0;i

if(s[i].score>=ave)

printf("%s ",s[i].name); } printf(" "); } void percent(stu s[]) { printf("各分数段的学生人数及所占的百分比如下: "); printf("分段 人数 图形 "); printf("<60 %d(%.0f%%) ",n1,(float)n1/(float)num*100); for(i=0;i=90 %d(%.0f%%) ",n5,(float)n5/(float)num*100); for(i=0;i

运行结果示例:

依次输入每个学生的姓名和成绩,当输入成绩为负时,便退出整个输入:

统计不及格人数还有打印不及格学生名单:

统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单:

以直方图方式统计各分数段的学生人数及所占的百分比:

心得体会:

懂得了在for循环体内用if条件判断语句判断输入的值为负值时退出循环体。用变量计数器把符合要求的计数起来,最后可以得出符合要求的值共有多少个,也懂得了用for循环从所有值里进行筛选符合条件的值出来,更懂得了在求百分比时候要强制类型转换,把int类型的计算结果给转换为float单精度类型。

实践4.函数与文件训练 题目概述:

将实践练习2 中的第2题利用函数的思想进行修改,并将学生的成绩等信息输出到文件中。要求函数参数中

包含结构体数组或指针。输出到ASCII 文件的信息包括每个学生的学号、三门成绩和名次,每人一行。

程序设计与概要:由于我的实践2中就已经用了函数,所以我只需要把学生的成绩等信息输出到文件中。用FILE *fp,fp就代表我们要对其操作的文件,用open函数,根据文件的所在位置还有文件名,打开文件,并对应要求进行只写的操作,如源代码中fp=fopen("f: st udent.txt","w"),w代表写入操作,char一个c[]数组,存放对应项的名称,用fputs函数把数组里面的字符串写入到文件里面去,用一个for循环,循环调用fprintf函数,把每个学生的学号,各科成绩和排名都写入到文件当中去,最后关闭文件即可。

程序代码:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title(); void list(student s[]); int save();//输出到文件中 int main() { input(s); int i=0; for(i=0;i

//要求1 计算总分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; }

//要求2 按总成绩排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } save(); //要求3 打印名次表

title(); list(s); //要求4 查询

int number; printf("请输入你要查询学生的学号: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("学号 姓名 数学 英语 C语言 总分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; } void input(student s[]) { printf("输入班上参加期末考试的人数(不大于30人)"); scanf("%d",&amount); printf("请依次输入他们的学号,姓名,数学成绩,英语成绩和物理成绩 ");

for(int i=0;i

printf("第%d位同学的学号,姓名,数学成绩,英语成绩和物理成绩 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } } int save() {

FILE *fp; fp=fopen("f:student.txt","w"); if(!fp) {

printf("can not open file! ");

exit(1); } char c[]="学号 数学 物理 英语 排名 "; fputs(c,fp); for(int i=0;i

fprintf(fp,"%u %d %d %d %d ",s[i].num,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].rank); } fclose(fp); } void title() {

printf(" 学生成绩表 ");

printf("----------------------------- ");

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { int i; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

运行结果示例:

首先输入准备录入的学生人数,然后依次输入每个学生的信息:

打印出按总成绩排序后的学生信息表,以及根据学号查询:

在f盘中找到文件并打开:

心得体会:

懂得了用如何运用文件,把向程序中输入的数据全部输出到文件中去。用FILE *fp,fp就代表我们要对其操作的文件,用open函数,根据文件的所在位置还有文件名,打开文件,并对应要求进行只写的操作,如源代码中fp=fopen("f: st udent.txt","w"),w代表写入操作,char一个c[]数组,存放对应项的名称,用fputs函数把数组里面的字符串写入到文件里面去,用一个for循环,循环调用fprintf函数,把每个学生的学号,各科成绩和排名都写入到文件当中去,最后关闭文件即可。

实践5. 实践4(1)(2) 题目概述:

每位学生信息包括:学号、姓名、性别、学院、10 门成绩。共有不超过100 位同学的信息存放在ASCII 文件StudentInfo.txt 中;不超过10 个学院的信息存放在CodeInfo.txt 中,性别代码存放在SexInfo.txt 中,均为代码和其对应的名称。要求:

1. 定义至少包含以上学生信息和学院代码的结构体类型和指针(或数组)变量。 2. 函数实现从文件中输入信息到定义的数据中。

程序设计与概要:

定义一个结构体,名为student,里面的内容有学生的学号,姓名,性别,还有那个学院,以及10门成绩,构造结构体数组,student stu[100],用于存储100名学生的信息。定义读取文件中内容的函数,FILE *fp代表文件,调用fopen函数,通过文件所在位置以及文件名打开特定的文件,r表示只对文件进行读取,接着调用fscanf函数,把第一个位置的数据赋给学生的学号,用while循环体,循环的条件是调用feof判断文件是否读取结束,如果没有则返回0,用!feof()来让没读取结束的文件继续读取,接着再把同一行后面的数据分别赋给学生的姓名,性别代码和所属学院代码,再用一个for循环,把同一行后面10个数据分别赋给学生的10门成绩。一行读取完毕后,意味着已经读取完一个学生的所有个人信息,定义一个I值来存储已经读取学生的人数,每读完一人就i+1,再读取下一行的第一个数据赋给下一个学生作为他的学号。通过while循环把文件中的全部信息读取出来赋给所有学生,函数最后返回的是读取学生的人数i。定义结构体名为sxy,用于存储性别代码和代码对应的性别,可以在后面输出的时候,把对应的性别代码转变为用中文表示性别。定义一个结构体名为scode,用于存储学院代码和代码对应的学院名称,可以在最后输出的时候,把学院代码对应的学院名称输出。再定义一个输出函数,通过for循环,从0~i-1,把i个学生的全部信息输出,所以我们在主函数里面先调用读取文件中内容的函数之后再调用输出函数即可。

程序代码:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); struct student { int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; float ave;

}; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k; n=readData("f:StudentInfo.txt",stu); m=readDataxy("f:SexInfo.txt",s1); k=readDataco("f:CodeInfo.txt",s2); if(n==-1||n==0)

return 0; if(m==-1||m==0)

return 0; if(k==-1||k==0)

return 0; printStudent(stu,s1,s2,n,m,k);

system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; fp=fopen(filename,"r"); if(!fp) {

printf("error1");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件还没结束 返回1表示结束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

fscanf(fp,"%d",&stu[i].scores[j]);

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); }

return i; } void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 学生信息统计 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } }

运行结果示例:

心得体会:

懂得了从文件中输入信息到定义的数据中。就是要先构造与文件信息中相对应的结构体数组,然后用打开文件,需要知道文件的具体位置还有文件名,”r”就是表示只采取读取操作,用while循环,循环条件的判断标准就是用feof来判断文件是否读取到文件尾部,用fscanf把每个数据赋给对应的变量。其中最难解决的就是一开始学生文件里面的信息,学生性别用代号表示,学生所在学院也用代码显示,这样一来我们把文件中的信息赋给定义好的结构体

数组之后,用for循环把结构体数组一个一个输出后,显示的是性别代码和学院代码,我们要把代码都改为相对应的值,所以我们同样定义性别的结构体数组,学院的结构体数据,之后用for循环把性别数组里面的代号和学生数组中的性别代码想比较,用strcpy函数,相同的就把代码对应的性别赋给学生数组里面定义好的性别字符数组。同理的,学院代码相对同的就把代码对应的学院名称赋给学生数组里面定义好的学院字符数组。

实践6.实践4(3)(4)(5) 题目概述:

每位学生信息包括:学号、姓名、性别、学院、10 门成绩。共有不超过100 位同学的信息存放在ASCII 文件StudentInfo.txt 中;不超过10 个学院的信息存放在CodeInfo.txt 中,性别代码存放在SexInfo.txt 中,均为代码和其对应的名称。要求:

3. 函数实现排序(1):学生平均成绩的降序排序,并输出所有信息到显示屏。 4. 函数实现排序(2):学生姓名的升序排序,并输出所有信息到显示器。

5. 函数实现查询(1):根据学号查询学生信息,并输出该生信息,并输出所有信息到显示器。

程序设计与概要:

同上个实践一样构造结构体名为student,用来存储学生的信息,如学生姓名,性别代号,学号,学院代号和成绩等。构造结构体名为sxy用来存储性别代号和性别名称,构造结构体名为scode用来存储学院代号和学院名称。用三个不同的函数来实现读取三个不同文件中的内容,把文件里面的内容放到以上构造的三个结构体里面去,定义输出函数,用for循环把每个学生的性别代号同sxy结构体数组中的代号对应,把代号对应的性别名称赋给每个学生的性别sex属性值中,把每个学生的学院代号同scode结构体数组中的代号对应,把代号对应的学院名称赋给每个学生的学院sdept属性值中,最后再用一个for循环把从第一个学生到最后一个学生的全部信息输出。实现要求3中的根据学生平均成绩的降序排序,要求在从文件中读取成绩之后要计算出总分然后再除以10门成绩得出平均分,然后定义一个函数,用双重for循环,把第一个学生同其他学生比较平均分,如果比下一个同学的平均分低就交换两个的位置,否则就继续与下一个同学比较,直到第一层的for循环结束退出为止。再用for循环把排序后的学生信息从第一位到最后一位输出即可。实现要求4中的根据学生姓名的升序排序,要求也是用双重for循环,用函数strcmp比较两个学生的姓名,把第一个学生的姓名同下一个同学比较,如何比下一个同学大,就交两个学生的位置,否则就继续与下一个同学比较,直到第二层的for循环结束,意味一个同学的位置确定,继续第一层for循环的下一个同学,直到第一个层的for循环结束,就意味所有同学比较完毕,再用for循环语句把从第一个位置的同学到最后一个位置的同学,把他们的信息输出。实现要求5的查询要求,需要我们从键盘上输入要查询的学生的学号,然后用for循环从我们的学生结构体数组中遍历一遍,如果有找到学号同输入的学号相同的学生,便把他的所有信息输出,否则则输出不存在该名学生。

程序代码:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); void search(struct student *stu,int n); void sortbyname(struct student *stu,int n); void sortbyave(struct student *stu,int n); struct student

{ int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; double ave; }; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k,b; while(1) {

system("cls");

printf("1.显示学生信息 ");

printf("2.姓名升序排序 ");

printf("3.平均成绩降序 ");

printf("4.学号查询学生信息 ");

printf("0.退出 ");

printf(" 输入需要查询的序号:");

scanf_s("%d",&b);

switch(b)

{

case 1:

n=readData("f:StudentInfo.txt",stu);

m=readDataxy("f:SexInfo.txt",s1);

k=readDataco("f:CodeInfo.txt",s2);

if(n==-1||n==0)

return 0;

if(m==-1||m==0)

return 0;

if(k==-1||k==0)

return 0;

printStudent(stu,s1,s2,n,m,k);

break;

case 2:

sortbyname(stu,n);

break;

case 3:

printf("按平均成绩降序排序如下:");

sortbyave(stu,n);

printStudent(stu,s1,s2,n,m,k);

break;

case 4:

search(stu,n);

break;

case 0:

return 0;

} system("pause"); } system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; double sum; fp=fopen(filename,"r"); if(!fp) {

printf("error");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件还没结束 返回1表示结束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

{

fscanf(fp,"%d",&stu[i].scores[j]);

sum=stu[i].scores[j];

}

stu[i].ave=sum/10;

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); } return i;

} void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 学生信息统计 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } } void search(struct student *stu,int n) { int m,col=0; printf("请输入你要查询学生的学号: "); scanf("%d",&m); for(int i=0;i

if(stu[i].id==m)

{

col=1;

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

} } if(col==0) printf("不存在该名学生信息 "); } void sortbyname(struct student *stu,int n) { student temp; for(int i=0;i

for(int j=0;j

{

if(strcmp(stu[i].name,stu[j].name)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

} } printf("按姓名的升序排序如下! "); for(int i=0;i

printf("%8d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

printf(" "); } } void sortbyave(struct student *stu,int n) { int i,j,flag; student s; for (j=0;j

flag=0;

for (i=0;i

{

if (stu[i].ave

{

s=stu[i];

stu[i]=stu[i+1];

stu[i+1]=s;

flag=1;

}

}

if(flag==0) break; } }

运行结果示例: 开始的菜单界面:

输入1便会显示文件中所有学生的信息:

输入2便会实现学生姓名升序排序,且把排序后的学生所有信息输出:

输入3便会实现学生平均成绩降序排序,且把排序后的学生所有信息输出:

输入4便会实现根据学号查询学生信息:

心得体会:

懂得了运用双重for循环比较全体成员,如题目中所要求的姓名升序排序还有平均成绩降序,比较平均成绩可以用值的大小进行比较,但是比较姓名的大小就要用strcmp函数进行比较,如果有需要交换位置的,就定义一个同类型的中间值,作为交换的协助者,帮助完成两个值的交换,完成整个过程之后,把交换完成后的全体成员从头到尾用for循环输出即可。

参考文献:

课程设计实训报告范文第4篇

专业:信息与计算科学班级:

报告人姓名:学号课程教师:实验指导教师:

实验地点:

完成起止日期:

[正文]

一、课程设计概述(目的、任务、参考资料)

1.项目的目的

根据研究生管理部门的要求,面向针对研究生和导师这一特殊的群体,针对教务信息数据混乱的情况,利用电脑信息化的优势,为理学院研究生系统建立研究生教务管理系统,使研究生管理中的各项实际业务工作切实的映射在系统内部,为学院提供一个方便的、快捷的、一体化的集成信息化环境。

2. 项目的任务

根据研究生教务管理中的具体需求,该项目的任务可分为7个模块进行

设计划分,每个模块都要完成具体的任务

 任务一:基础平台

任务:建立导航登陆界面,使用户能用密码登陆页面,了解信息,下载表格文件,获得具体操作权限。

 任务二:学籍管理

任务:研究生登路后,可进行基本信息查询、成绩查询、修改密码的功能操作;管理员则可进行修改用户信息、创建账户、数据上传或下载的操作

 任务三:智能排课:

任务:包括完成自动排课、手动调整、选课管理、课表查询及打印等更能

 任务四:导师管理

任务:建业数据库,使研究生和导师、管理员可以查询导师的基本信息,并且管理员可以对数据等做出修改和调整。

 任务五:教学教务管理

任务:该部分主要针对管理员展开建设。管理员的职责是以管理、统计、修改数据信息为主。建议以基本信息维护、入学、毕业信息管理、任课安排和考试安排为主要功能的模块。

 任务六:科研管理

任务:主要完成的任务是,研究生能够顺利提交科研项目,管理员能无误的将项目挂在网页上

 任务七:评优管理

任务:管理员能将通过审核的名单公示在网页上。

3. 项目的参考资料

[1] 《LoadRunner使用手册》

北京长江软件有限公司编制

[2] 《软件测试:第二版》

Paul C.Jorgensen著/机械工业出版社

[3]《ASP.NET网站开发》(丁昊凯、许静雯、谢黎文编著 出版社:电子工业出版社)

[4]《数据库系统概论(第四版)》(作者:萨师煊王珊出版社:高等教育出版社)

[5]《软件工程导论(第五版)》(作者:张海藩出版社:清华大学出版社)

二、采用的主要技术与方法

1. 项目采用的主要技术:

 技术路线:

基于微软ASP.NET框架及应用环境,遵循Web Service和XML技术、 B/S模式,采用三层结构开发

 系统平台:

Windows 2003 Server SP1(以上包括SP1)

MS Sql Server 2005

IIS 6.0及以上

 开发工具:

Microsoft Visual Studio .NET 2005

PhotoShop 7.0

CorelDraw 12

Dream Weaver 8.0

 开发语言

C# 2.0

ASP.NET 2.0(3.0)

XML/XSL

JavaScript

 测试软件

LoadRunner

三、实现步骤与在实现项目中我获得的主要成果

1. 项目的实现步骤

1) 首先,小组成员根据研究生管理部门提供的资料,针对研究生的具

体要求,讨论研究后编写需求分析文档,将项目软件分为7个模块,并完成初步的界面设计;

2) 之后,在需求文档的基础上,针对研究生、导师以及管理员的不同

需求,根据模块进行设计文档的编写,并着手进行软件的设计以及

完善界面设计。

3) 在完善需求文档和设计文档之后,小组成员制作PPT,并通过审核。

4) 在完成项目前期工作之后,小组中的软件编写成员依据软件工程的

原则开始进行具体的软件编程,另外的部分成员则进行测试计划文

档及测试设计文档的编写。并在之后的几天中对其进行整理修改以

完善文档。

5) 在软件基本完成之后,小组成员分工进行软件的测试,完成测试结

果。针对测试中发现的问题,讨论并对软件进行修改。

6) 最后,对项目进行总结,编写总结报告。

2. 我获得的主要成果:

由于我在软件编程方面比较薄弱,在完成项目的过程中,我主要负责的是文档的编写以及项目的测试方面的工作。包括如下部分:

 研究生教务管理系统需求分析书中,第四部分需求规格以及第五部分项

目具体的功能规格;

 研究生教务管理系统软件设计文档的大体框架以及其中的第一部分引言

以及第二部分系统设计概述;

 研究生教务管理系统客户端测试计划(全部);

 研究生教务管理系统客户端测试设计的大体框架以及第一部分引言、第

二部分测试设计;

 研究生教务管理系统用户使用手册(除第三部分运行环境)

四、个人小结

主要困难:

 在项目进行的初期,虽然我们对用户的需求有大致的了解,并有参照模版,

但由于本科生教务管理系统和研究生教务管理系统的具体项目上有着某些差异,这要求我们要注重了解其中的区别,并对模版进行分析及修改。在对需求文档进行编写时,文字表述不足的弱点很轻易的就显示出来,这要求我们对网络教学上给出的资料及范例进行详细的阅读,才能写好需求文档;在接下来的文档编写时也有同样的问题。

 在项目进行的中期,即软件的设计阶段。在了解具体需求之后,编写设计

文档困难不大,但是由于编程能力的强弱问题,小组成员不可能完全都进行编程,虽然这是小组分工后可以解决盖的问题,但是由于软件编程能力的缺乏,会造成在小组讨论和文档书写上出现代沟,所以个人认为,小组成员拥有对程序编成有一定的了解是有必要的。

 在项目的测试后面阶段,即软件的测试阶段。初次接触具体测试的我们,

对新的软件不了解,导致产生一定的困难,这要求我们对LoadRunner软件自主的进行学习并掌握如何运用该软件进行项目的测试。

课程设计实训报告范文第5篇

本科生课程设计(实践)任务书、设计报告

(大学计算机基础)

题 目 理想世界 学生姓名 李杰 指导教师 邵自然 学 院 湘雅医学院 临床医学与医学技术

专业班级 1105班

学生学号

2211110512

计算机基础教学实验中心

年 月 日

课程设计实践报告 理想世界 李杰

我选的主题是理想世界,我的思想是从图片来展现理想世界的样子,用图片表达我想说的内容。

设计的步骤:从以上两个方面入手,目录作为主页,主页内容是理想世界中frontpage的一些介绍,并且引入一些优美的图片,再一个个的建立超链接。在引入一些解决手段,创建连接理想世界。在理想世界这个链接中从图片来展现理想世界的样子,用图片表达我想说的内容。,也可以用一些flash动画,还可以使用word链接一些图片。在理想世界这个链接中,也可使用word链接一些先驱的行动,与我们自己的所处的世界对比,ppt制作幻灯片来演示一些有效提示,让我的理想世界最好的展现给大家。

采取的方法与手段:用Frontpage制作网页,通过链接使word文档、Powerpoint幻灯片、Flash动画得以展示。在网页制作中,可以通过添加图片来使页面更加美丽,在word文档中可以展示艺术字、建立文本。通过powerpoint可以把某些保护环境的行动展示。Flash动画是以链接的方法来参与展示。在需要一些资料的时候,可在网络上寻找,由于不是文件,这时就可以通过复制粘贴操作来获取资料。

遇到的问题:(1).在网页制作中,刚开始的时候连网页的表格布局都弄不出来,不知道该如何制作,从哪些方面入手。解决方法:先看了几遍课本,然后跟着课本的步骤上机实践,但是发现制作过程还是太慢,而且不熟悉frontpage网页制作工具,因此,开始几次的实践都是在慢慢熟悉该工具。直到熟悉该工具后才开始去制作。在word文档制作中,因为以前在中学的时候用过该工具,现在还有一些印象,所以经过一系列重温操作后,word文档的制作就熟悉了。在Powerpoint幻灯片制作中,因为是第一次接触和使用,许多功能和手段都不知道,较难制作出符合人意的幻灯片。通过多次实验操作来了解和熟悉它,然后就可以使用了。(2)在flash动画制作过程中,虽然老师上课讲过制作过程,但还是遇到了难题:制作的动画中,元件不随引导层而动,而是在关键帧之间走直线,这

个问题导致了我做不出动画,我只好一次次的尝试去做,最后成功做出来。有时还有一些小技巧,都是从同学手中问过来的。在设置背景图片时,会发现图片太小的话,背景就会变成多张重复的图片拼在一起,后来经过向同学询问后,使用图片编辑器对背景大小做了调整,使得背景和网页内容能够很好地融合在一起。二,网页制作好后浏览时图片显示不出来,改文件名或者换了文件夹储存都会导致图片无法显示,后来经过询问学习之后,才知道原因即任何图片的显示都是依靠路径来寻找来源,要设成相对路径有利于在其他机子上打开。在设置主题之前插好图片。三,刚开始做PPT时,不知道怎么插进去背景音乐和让它连续播放,后来经过多次实践后,发现可以在效果中设置这些。四,刚开始不会弄超链接,然后经过向同学询问后才明白,在选定对象之后点击右键,超链接,再选中连接的对象就可以了

总结:首先我们应该学会独立思考和自我解决问题的能力,因为实践和理论毕竟不同,在实践中会遇到一些我们不了解的东西,这时候应该先自己摸索,实在不行就去向同学和老师询问,一定要仔细阅读课本,巩固理论知识。否则很盲目,自信心也会受到打击2,做计算机作业有时候也是一种享受,因为你会为你自己的一点点进步一点点成功而高兴,增加生活情趣、3,做作业时要坚持不懈,不能在半途放弃。中途可能会遇到一些挫折,要记住“世界上没有谁能随随便便成功”,只有经历过多次失败,才能寻找到解决问题的最好方法。4,在制作网页的过程中,我的思想和人格也得到了升华,对大自然和地球的认识又提升到了一个另一个高度,令我受益匪浅。在全制作过程中,所有的难题都是有解决方法的,不要放弃制作机会,有难题可以去问别的同学或老师,也可以自己多次实践来找到解决方法。我在制作过程中大部分都是自己摸索的,这样不仅加强了自己对工具的熟悉度,同时也加强了对键盘的熟悉,我认为当我们自己去制作的时候,不管好坏都有助于自己,做得好,自己更有信心,鼓励下次还能做得更好,做的不好,还可以找出错误,提醒自己在什么地方应该注意,在什么地方可以改正。这样就可以更好的去改错。有时候可以去看一看别人的作品,看一下别人是怎么做的,想一想哪里值得借鉴,如果是自己,怎么做会更好。这样,在看的时

候可以加强对工具的熟悉,了解一些技巧,增加自己的见识。

上一篇:食品分析实训总结下一篇:电商运营实训总结