当前位置:首页 » 课程大全 » 课程设计基础

课程设计基础

发布时间: 2020-11-28 20:09:45

❶ 计算机软件技术基础课程设计

一.选择排序

1. 基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2. 排序过程:
【示例】:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 〔38 65 97 76 49 27 49]
第二趟排序后 13 27 〔65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [49 97 65 76]
第五趟排序后 13 27 38 49 49 [97 97 76]
第六趟排序后 13 27 38 49 49 76 [76 97]
第七趟排序后 13 27 38 49 49 76 76 [ 97]
最后排序结果 13 27 38 49 49 76 76 97

3.
void selectionSort(Type* arr,long len)
{
long i=0,j=0;/*iterator value*/
long maxPos;
assertF(arr!=NULL,"In InsertSort sort,arr is NULL\n");
for(i=len-1;i>=1;i--)
{
maxPos=i;
for(j=0;j<i;j++)
if(arr[maxPos]<arr[j])maxPos=j;
if(maxPos!=i)swapArrData(arr,maxPos,i);
}
}

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.

二.直接插入排序

插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

直接插入排序

直接插入排序(Straight Insertion Sort):将一个记录插入到排好序的有序表中,从而得到一个新的、记录数增1的有序表。
直接插入排序算法

哨兵(监视哨)有两个作用:一是作为临变量存放R[i](当前要进行比较的关键字)的副本;二是在查找循环中用来监视下标变量j是否越界。

当文件的初始状态不同时,直接插入排序所耗费的时间是有很大差异的。最好情况是文件初态为正序,此时算法的时间复杂度为O(n),最坏情况是文件初态为反序,相应的时间复杂度为O(n2),算法的平均时间复杂度是O(n2)。算法的辅助空间复杂度是O(1),是一个就地排序。
直接插入排序是稳定的排序方法。

三. 冒泡排序

[算法思想]:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

[算法]:
void BubbleSort(SeqList R) {
//R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序
int i,j;
Boolean exchange; //交换标志
for(i=1;i<n;i++){ //最多做n-1趟排序
exchange=FALSE; //本趟排序开始前,交换标志应为假
for(j=n-1;j>=i;j--) //对当前无序区R[i..n]自下向上扫描
if(R[j+1].key<R[j].key){//交换记录
R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //发生了交换,故将交换标志置为真
}
if(!exchange) return;//本趟排序未发生交换,提前终止算法
} //endfor(外循环)
} //BubbleSort

详细内容,附图:
http://hi..com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/2177742ea4a265544ec22621.html

❷ 200分 求<<C++课程设计基础>>课程设计任务书 !!!!!

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MUNMAX 5
struct studentInfo{ //结构类型定义
int num;
float basic;
float spe;
float choose;
float peop;
float lib;
};
struct stuType{
studentInfo stu[MUNMAX];
int num;
};
void DisplayMenu();

int choiceItem();
int f(int);
void putone(struct stuType* as,int num);
void sum(struct stuType *p);
void Init(struct stuType*);
void PrintInfo(struct stuType);
void Print_aInfo(struct stuType,int);
void Input_aInfo(struct studentInfo*);
void Input_allInfo(struct stuType*,int num);
int Search(struct stuType);
void modify(struct stuType*);
void main()
{

struct stuType student;
int choice,index,a;
system(\"color 4e\");
Init(&student);

do{

choice=choiceItem();
switch (choice){
case 0:printf(\"\\n再见!\");break;
case 1:Input_allInfo(&student,MUNMAX);break;
case 2:putone(&student,f(a)); break;
case 3rintInfo(student);break;
case 4:modify(&student);break;
case 5:if ((index=Search(student))!=-1)
Print_aInfo(student,index);
else printf(\"\\n不存在这个学生.\");
break;
case 6:Init(&student);break;
case 7:sum(&student);break;
}
}while(choice);
}

void DisplayMenu() //显示菜单
{
COORD coordScreen = { 25, 3 };

HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon, coordScreen);
printf(\"========= MENU =========\\n\");
printf(\"\\n (1) 通过键盘输入全部学生的学分;\");
printf(\"\\n (2) 通过键盘修改某位学生的学分;\");
printf(\"\\n (3) 显示该班所有学生学分完成情况;\");
printf(\"\\n (4) 全部课程的学分高低进行排序;\");
printf(\"\\n (5) 给定学号,显示该学生学分完成情况;\");
printf(\"\\n (6) 初始化程序;\");
printf(\"\\n (7) 一些统计信息;\");
printf(\"\\n (0) 退出系统;\");
printf(\"\\nchoice,please:\");
}

int choiceItem() //菜单选择
{
int choice;
do{
DisplayMenu();
scanf(\"%d\",&choice);

}while(choice<0||choice>7);
return choice;
}
int f(int a)
{
do
{
printf("请输入要修改学生的学号(1-5):");
scanf("%d",&a);
}while(a-1<0||a-1>4);
return a-1;
}
void Init(struct stuType* s) //初始化
{
s->num=0;
}

void Print_aInfo(struct stuType s,int index) //输出一个学生的信息
{
printf("\n学号:%d\n基础课学分:%-6.1f\n专业课学分:%-6.1f\n选修课学分:%-6.1f\n人文类课程学分:%-6.1f\n实验性课程学分:%-6.1f\n ",s.stu[index].num,s.stu[index].basic,s.stu[index].spe,s.stu[index].choose,s.stu[index].peop,s.stu[index].lib);

}

void PrintInfo(struct stuType s) //输出所有学生的信息
{

if (s.num==0) {
printf("\n无学生信息.");
return;
}
for (int i=0;i<s.num;i++){
printf("\n学号:%d\n基础课学分:%-6.1f\n专业课学分:%-6.1f\n选修课学分:%-6.1f\n人文类课程学分:%-6.1f\n实验性课程学分:%-6.1f\n ",s.stu[i].num,s.stu[i].basic,s.stu[i].spe,s.stu[i].choose,s.stu[i].peop,s.stu[i].lib);

}
}
void putone(struct stuType* as,int num)//修改一个学生信息
{
Input_aInfo(&as->stu[num]);
}

void Input_aInfo(struct studentInfo* as) //输入一个学生的信息
{
do
{
printf("请输入学生的学号:");
scanf("%d",&as->num);
}while(as->num<1||as->num>5);
printf("请输入学生的基础课成绩:");
scanf("%f",&as->basic);
printf("请输入学生的专业课成绩:");
scanf("%f",&as->spe);
printf("请输入学生的选修课成绩:");
scanf("%f",&as->choose);
printf("请输入学生的人文课成绩:");
scanf("%f",&as->peop);
printf("请输入学生的实验课成绩:");
scanf("%f",&as->lib);
printf("\n");
}

void Input_allInfo(struct stuType* s,int num) //输入多个学生的信息
{
printf("\n请输入 %d 组信息.\n",num);
for (int i=0;i<num;i++){
if (s->num==MUNMAX){
printf("\n已经输入过成绩,不能重复输入,只能按2更改原始数据!");
break;
}
Input_aInfo(&s->stu[s->num++]);
}
}

int Search(struct stuType stu) //查找
{
int num;
do
{
printf("\n输入学生学号(1-5):");
scanf("%d",&num);
}while(num<1||num>5);
for (int i=0;i<stu.num;i++)
if (stu.stu[i].num==num)
return i;
return -1;
}

void modify(struct stuType *p) //排序
{int i,j;float temp;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
{if(p->stu[j].basic>p->stu[j+1].basic){
temp=p->stu[j].basic;
p->stu[j].basic=p->stu[j+1].basic;
p->stu[j+1].basic=temp;}
if(p->stu[j].spe>p->stu[j+1].spe){
temp=p->stu[j].spe;
p->stu[j].spe=p->stu[j+1].spe;
p->stu[j+1].spe=temp;}
if(p->stu[j].choose>p->stu[j+1].choose){
temp=p->stu[j].choose;
p->stu[j].choose=p->stu[j+1].choose;
p->stu[j+1].choose=temp;}
if(p->stu[j].peop>p->stu[j+1].peop){
temp=p->stu[j].peop;
p->stu[j].peop=p->stu[j+1].peop;
p->stu[j+1].peop=temp;}
if(p->stu[j].lib>p->stu[j+1].lib){
temp=p->stu[j].lib;
p->stu[j].lib=p->stu[j+1].lib;
p->stu[j+1].lib=temp;}
}

printf("全部课程成绩的排序结果为:\n基础课:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].basic);
printf("\n专业课:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].spe);
printf("\n选修课:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].choose);
printf("\n人文课:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].peop);
printf("\n实验课:");
for(i=0;i<5;i++)
printf("%-6.1f",p->stu[i].lib);
}
void sum(struct stuType *p)
{int i,b1=0,b2=0,s1=0,s2=0,c1=0,c2=0,p1=0,p2=0,l1=0,l2=0;
for(i=0;i<4;i++)
{if(p->stu[i].basic>=90.0)
b1++;
if(p->stu[i].basic<50.0)
b2++;
if(p->stu[i].spe>=90.0)
s1++;
if(p->stu[i].spe<50.0)
s2++;
if(p->stu[i].choose>=90.0)
c1++;
if(p->stu[i].choose<24.0)
c2++;
if(p->stu[i].peop>=90.0)
p1++;
if(p->stu[i].peop<8.0)
p2++;
if(p->stu[i].lib>=90.0)
l1++;
if(p->stu[i].lib<20.0)
l2++;
}
printf("\n基础课程90学分以上的有%d个,不及格的有%d个",b1,b2);
printf("\n专业课程90学分以上的有%d个,不及格的有%d个",s1,s2);
printf("\n选修课程90学分以上的有%d个,不及格的有%d个",c1,c2);
printf("\n人文课程90学分以上的有%d个,不及格的有%d个",p1,p2);
printf("\n实验课程90学分以上的有%d个,不及格的有%d个",l1,l2);

❸ 机械设计制造基础课程设计应该包含哪些内容

主干学科:力学、机械工程。
主要课程:工程力学、机械设计基础、电工与电子技术、微型计算机原理及应用、机械工程材料、制造技术基础。
编辑本段机械制造与自动化就业领域
(1)机械制造工艺与设备;
(2)数控编程与加工;
(3)机械设计与制造;
(4)机械电子工程;
(5)机械设备与管理;
(6)金属材料与热处理。
专业培养目标
本专业培养具备机械制造基础知识与应用能力,能在工业生产第一线从事机械制造领域内的设计制造、科技开发、应用研究、运行管理和经营销售等方面工作的高级工程技术人才。
专业培养要求
本专业学生主要学习机械制造的基础理论,学习微电子技术、计算机技术和信息处理技术的基本知识,受到现代机械工程师的基本训练,具有进行机械产品设计、制造及设备控制、生产组织管理的基本能力。
常识
毕业生应具备的知识和能力
1. 具有较扎实的自然科学基础、较好的人文、艺术和社会科学基础及正确运用本国语言、文字的表达能力;
2.较系统地掌握本专业领域宽广的技术理论基础知识,主要包括力学、机械学、电工与电子技术、机械工程材料、机械设计工程学、机械制造基础、自动化基础、市场经济及企业管理等基础知识;
3.具有本专业必需的制图、计算、实验、测试、文献检索和基本工艺操作等基本技能;
4.具有本专业领域内某个专业方向所必要的专业知识,了解其科学前沿及发展趋势;
5.具有初步的科学研究、科技开发及组织管理能力;
6.具有较强的自学能力和创新意识。

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919