文献检索课程设计报告范文

2024-07-31

文献检索课程设计报告范文第1篇

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循环输出即可。

参考文献:

文献检索课程设计报告范文第2篇

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

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

实验地点:

完成起止日期:

[正文]

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

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软件自主的进行学习并掌握如何运用该软件进行项目的测试。

文献检索课程设计报告范文第3篇

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

(大学计算机基础)

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

专业班级 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,在制作网页的过程中,我的思想和人格也得到了升华,对大自然和地球的认识又提升到了一个另一个高度,令我受益匪浅。在全制作过程中,所有的难题都是有解决方法的,不要放弃制作机会,有难题可以去问别的同学或老师,也可以自己多次实践来找到解决方法。我在制作过程中大部分都是自己摸索的,这样不仅加强了自己对工具的熟悉度,同时也加强了对键盘的熟悉,我认为当我们自己去制作的时候,不管好坏都有助于自己,做得好,自己更有信心,鼓励下次还能做得更好,做的不好,还可以找出错误,提醒自己在什么地方应该注意,在什么地方可以改正。这样就可以更好的去改错。有时候可以去看一看别人的作品,看一下别人是怎么做的,想一想哪里值得借鉴,如果是自己,怎么做会更好。这样,在看的时

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

文献检索课程设计报告范文第4篇

下面就学习过程中的问题,谈谈我的思考。

一、关于本课程。物流方案设计是针对具体案例而做的,首先,必须了解物流方案的基本概念;物流方案设计的内容、成果形式;掌握物流方案设计的基本原则和要求;物流方案设计的程序和步骤。其次,了解不同类型的物流方案及其特点,掌握不同类型物流方案设计的基本内容、要点和流程。再次,以实际案例为载体,掌握物流方案设计的要领及基本内容。接着,掌握物流方案的技术可行性及成本、效益分析方法,能自行对实际的物流方案进行评价。最后具备物流方案报告的撰写能力,能解决实际的物流问题。

二、关于听课。现在的课程都是利用PPT教学,信息量极大,如果不事先预习,光靠上课凑两只耳朵听,完全没效果。所以,在听课的时候务必认真,必要的情况下还要做笔记。遇到没听懂的地方,课下一定要通过问老师或者查阅资料文献弄明白。

三、关于收集资料。本课程的讲授使我明白,参考资料的形式多种多样,文献、视频、年报等等。收集的途径也很多,各大网站、图书馆、同学之间信息共享等。收集完成以后要注意,不能盲目相信收集来的资料,一定要抱着一颗怀疑的心态,亲自考证。

四、关于团队。要想成功,首先,必须要有一个“靠谱”的团队。此次案例过程中,我和本班同学临时匆忙组成了一个小组。由于大多人上课时候没有认真听讲,每次讨论都收效甚微,做起案例相当费力。其次,真正的团队离不开合作。一个团队,每个人都必不可少,只有每个人各司其职,通力合作,才能获得最后的胜利。这就需要组长做好分工、督促等工作。最后,要学会沟通,团队是一个整体,成员之间要学会沟通,对于不明白的问题要相互讨论,大家才能共同进步。

最后,谈谈通过学习课程以及撰写方案的收获。

一、拓宽了知识面。虽然这是物流方案设计,用到的知识也很多是我们物流专业的专业知识,但是在我们进行方案的设计的过程中,我们同样会涉及到很多其他方面的知识。比如:财务会计、电子商务、管理学等等。所以为了把方案做的更加完整,做的更好,我们对这些知识有所涉猎。

二、认识到了掌握基本功的重要性。要做出一份很完美的方案,完美基础知识的掌握是关键。只有掌握了基础知识,我们才能够有资本去创作、去设计。基本功的形成不是一蹴而就的,贵在长期的练习与积累。

三、学习到了一些计算机知识。熟悉和学到了Matlab软件的基本操作,运用Matlab软件编程,避免了在选址计算中采用一般的方法的繁复计算。同时学到了一些word编辑的技巧。

四、思考了一些人生。在这个方案设计的漫长过程中,经过了数次的失败,经过了数次的修改,更需要的是一种能吃苦耐劳的毅力和团结友爱的合作精神。我相信“坚持就是胜利”这句名言。只有坚持到最后,才有机会获得胜利,否则留给我们的只有无法弥补的遗憾。在生活中,我们也应当本着一种锲而不舍的信念,坚持到终点。就和当初我选择这么课程的初衷一样,虽然满腔热血,但却中途而废,悔恨终身哦。

文献检索课程设计报告范文第5篇

一、政治思想

在政治思想方面忠诚于党的教育事业,能认真贯彻执行党的教育方针。严格遵守幼儿园的各项规章制度,认真学习《幼儿园教育指导纲要》,爱岗敬业,对班级工作认真负责,用心理解领导和年级组长分配的各项任务。对幼儿有爱心,对家长主动热情,与同事友好相处,时时处处以一个教师的身份严格要求自己。

二、业务学习

用心参加园内组织的各种业务学习和教研活动,珍惜外出学习机会,认真学习老师专家的组织教学活动和讲座,并作记录,写听课评析,吸取经验并运用到自己的日常教学过程中来。我还认真阅读《早期教育》、《现代教育》、《365幼教》等等幼教专业书籍,游览幼教网站,领略其中的精华,吸取别人的经验。本人在本学期报名参加学前教育专业的本科远程教育学习,利用双休日和晚上休息的时间在网上学习,努力提高自身的文化水平和业务素质,争取做一名合格的幼儿教师。

三、教育保育开学初,我根据本班幼儿的实际状况、《幼儿园教育工作计划》、《幼儿园教育指导纲要》认真制定了本班的班务计划,设计好每月的主题活动,精心安排好每周活动,组织好每日的教学活动。在教学过程中注重渗透整合理念,运用多种教学手段发展幼儿的综合素质。在组织好教学活动的同时,保证的幼儿的游戏活动和户外活动时间,每月根据制定好的游戏计划开展各类游戏活动。在班级中开展了图书角、手工区、益智区、建构区等区域游戏,并不断的更新丰富游戏材料。为了配合主题教育和节日活动的开展,我用心创设环境条件,布置装饰室内外的空间和墙面。每月撰写说课稿和教育随笔,以提高自身的保教水平。在保育工作中,每一天安要求做好各项卫生保健工作,并注重培养幼儿的良好的午睡习惯和个人卫生习惯。在班级中开展了值日生工作,以提高幼儿的群众服务意识和服务潜力。坚持每一天让幼儿记录天气,学习根据天气的变化添减衣物。

四、家长工作认真填写《家园联系册》,及时向家长反映幼儿在园的状况。利用一切机会与家长交流幼儿在家、在园的表现状况,与家长共同讨论教育孩子的方法,认真听取家长提出的各种要求和意见。利用各种机会将家长请到幼儿园来与幼儿共同活动:“三八”妇女节请家长来园与幼儿共同做手工;“六一”儿童节请家长观看幼儿的舞蹈表演;开展“幼小衔接”主题活动时,请家长来园开家长会,听取小学教师有关入小学事宜的讲解。这样透过各种与家长的联谊活动既增进了家长与幼儿、老师的感情,又让家长了解了幼儿园的教育教学工作,受到了家长们的一致欢迎。

文献检索课程设计报告范文第6篇

机械创新实践课程设计任务书

机械工程系机制07班学生编号. 课程设计课题:“辉煌金塔”机器人方案设计

一、课程设计工作日自2010 年1 月11 日至2009年1月22日

二、同组学生:

三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时间、主

要参考资料等):

目的和意义:由全国大学生机器人电视大赛的“辉煌金塔”主题,要求根据比赛主题与规则和有关要求进行机器人方案设计,设计出相应的机构来完成特定功能的动作。需要将机械原理课程的基础理论知识、基本设计方法应用于“辉煌金塔”机器人方案设计中,提出机械系统的几种运动方案,并对各种运动方案进行对比分析和评价选择,要求设计方案有创意,完成功能有新意。

基本要求:

(1) 掌握机构的选型与设计的知识,机械运动方案设计的内容。

(2) 设计该机械系统的几种运动方案,对各运动方案进行对比分析和方案选择;

(3) 对选定方案进行详细设计、分析和相应的评价。

(4) 确定各机构中各构件的几何尺寸,绘制机器人设计方案机构运动简图(A3图纸)。

(5) 编写设计说明书一份。

要求1月22日前完成,提交设计说明书、设计图纸,进行答辩验收。

参考资料:

收集查阅有关机器人知识,全国大学生机器人电视大赛有关内容与规则等资料,机器人技术的有关资料文献。参考的有关文献:

(1) 申永胜.机械原理.清华大学出版社.

(2) 孙桓,陈作模. 机械原理.北京:高等教育出版社

(3) 张春林. 机械创新设计. 北京:机械工业出版社

(4) 姜琪. 机构构型与应用. 北京:机械工业出版社

上一篇:我喜欢的小动物小白兔范文下一篇:卫生院中医药实施方案范文