C语言实训报告学生成绩管理系统文档格式.docx
《C语言实训报告学生成绩管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实训报告学生成绩管理系统文档格式.docx(52页珍藏版)》请在冰豆网上搜索。
4.1项目设计要求...........................................................15
4.2项目设计思路...........................................................15
4.3程序流程...............................................................16
4.3程序代码...............................................................17
4.5运行结果...............................................................21
5项目五名称:
学生成绩排序文件管理
5.1项目设计要求...........................................................22
5.2项目设计思路...........................................................22
5.3程序流程...............................................................23
5.3程序代码...............................................................24
5.5运行结果...............................................................27
6项目六名称:
设计和编写学生成绩管理系统的系统主菜单
6.1项目设计要求...........................................................28
6.2项目设计思路...........................................................28
6.3程序流程...............................................................29
6.3程序代码...............................................................30
6.5运行结果...............................................................32
7项目七名称:
学生成绩管理项目实现
7.1项目设计要求...........................................................33
7.2项目设计思路...........................................................33
7.3程序流程...............................................................34
7.3程序代码...............................................................35
7.5运行结果...............................................................45
8课程设计总结.............................................................49
9参考文献.................................................................50
1.1项目设计要求
(1)熟悉变量、数组定义、使用、输入、输出等基本操作;
(2)进行选择、循环结构程序设计练习;
(3)掌握冒泡法排序的算法。
1.2项目设计思路
(1)定义一个数组a[11],用以存放学生的成绩;
(2)从键盘输入10个学生及成绩;
(3)采用冒泡法,将学生成绩按照从高到低进行排序;
(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;
(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
1.3程序流程
输入10个学生成绩
i=0to9
Scanf(“%d”,a&
[i])
用冒泡法排序
j=0to9
i=0to9-j
intt=0;
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
1.4程序代码
#include<
stdio.h>
#defineN11
voidmain()
{
inta[11],i,j,t,x;
printf("
pleaseinputsort:
\n"
);
/*输入数组*/
for(i=0;
i<
10;
i++)
scanf("
%d"
&
a[i]);
thearryis:
%3d"
a[i]);
for(j=0;
j<
9;
j++)/*用起泡法进行排序*/
{
9-j;
if(a[i]<
a[i+1])
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
thenewarryis:
/*输出新排好顺序的数列*/
for(i=0;
printf("
pleaseinputanumber:
/*插入一个数*/
x);
if(x<
a[9])/*对新形成的数组进行排序*/
a[10]=x;
else
x)
for(j=9;
j>
=i;
j--)
a[j+1]=a[j];
a[i]=x;
break;
=10;
N/2;
i++)/*反顺序排放数组*/
a[i]=a[N-i-1];
a[N-i-1]=t;
newarryis:
i++)/*输出反序数组*/
}
1.5运行结果:
按条件实现学生成绩排名项目一:
2.1项目设计要求
(1)复习数组,选择、循环结构程序设计;
(2)掌握函数的定义、调用、声明,以及参数的两种传递方式。
2.2项目设计思路
(1)在函数中进行10个学生成绩从高到低排名sort(inta[10]);
(2)改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名;
(3)改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式;
(4)根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。
(a:
ascending升,d:
descending降)
(5)尝试用三种方法排序:
冒泡法、选择法,插入法排序。
2.3程序流程
2.3程序代码
intn,a[1000];
charstyle;
intinput(inta[]);
//声明输出函数
charmode();
//声明模式函数
voidsort(inta[],intn,charstyle);
//声明排序函数
n=input(a);
//调用输入函数
style=mode();
//调用模式函数
sort(a,n,style);
//调用排序函数
getch();
intinput(inta[])//定义输入函数
inti,n;
请输入学生的个数(小于999):
//确定学生个数n
n);
请输入%d个学生的成绩:
n);
n;
i++)//输入n个学生成绩
输入的%d个学生成绩为:
i++)//输出输入的n个学生成绩
%5d"
if((i+1)%10==0)
printf("
returnn;
//返回学生个数
charmode()//定义模式函数
charstyle;
modeselect:
****************************\n"
*模式选择(A/D)*\n"
*A)升序排列*\n"
*D)降序排列*\n"
getchar();
%c"
style);
//选择模式
if(style=='
a'
||style=='
A'
)
returnstyle;
//如果为A/a就返回模式选择
elseif(style=='
d'
D'
)
//如果为D/d就返回模式选择
else
gotomodeselect;
//如果不是选项,就重新选择
voidsort(inta[],intn,charstyle)//定义排序函数
||style=='
)//如果为升序排序
{//使用选择法排序
inti,j,t,min;
=n-2;
{
min=i;
for(j=i+1;
=n-1;
j++)
{
if(a[min]>
a[j])
{
min=j;
}
}
t=a[i];
a[i]=a[min];
a[min]=t;
}
选择法升序排序结果:
//输出排序后的结果
{
if((i+1)%10==0)
printf("
}
}
else//如果为降序排序
{//使用选择法排序
inti,j,t,max;
max=i;
if(a[max]<
max=j;
a[i]=a[max];
a[max]=t;
降序排序结果:
//输出排序后的结果
}
2.5运行结果
3项目三:
数组优化学生成绩排名项目一:
3.1项目设计要求
(1)熟悉变量的指针和指向变量的的指针变量的概念和使用;
(2)熟悉数组的指针和指向数组的的指针变量的概念和使用。
3.2项目设计思路
(1)定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现;
(2)将数组stu[10]的内容输出到屏幕上,要求用指针实现;
(3)将成绩数组按照从高到低进行排序,要求用指针实现;
(4)将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单;
(5)采用指针方法,输入字符串“studentscore”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)。
3.3程序流程
3.4程序代码
main()
int*p,i,a[10],j,k,t;
请输入数据:
p=a;
//将数组的首地址赋给P
p++);
//依次输入数据
输出数组:
//将数组的首地址赋给P
{
%d"
*p);
//用指针的方式输出数据
p++;
p=a;
for(i=0;
k=i;
//用选择法排序
for(j=i+1;
if(*(p+j)>
*(p+k))k=j;
if(k!
=i)
t=*(p+i);
*(p+i)=*(p+k);
*(p+k)=t;
输出排序后的数组:
for(p=a,i=0;
3.5运行结果
4项目四:
学生成绩单制作项目一:
4.1项目设计要求
(1)掌握结构体变量及数组的定义、赋值、初始化、输入、输出;
(2)结构体数组的操作。
4.2项目设计思路
(1)定义一个结构体数组,存放10个学生的学号,姓名,math、Chinese、English三门课的成绩;
(2)从键盘输入10个学生的以上内容;
(3)输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩;
(4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;
(5)将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:
numbernamemathChineseEnglishaverage
103tom909010095
101alice90807080
4.3程序流程
4.4程序代码
structstudent
charnumber[10];
charname[20];
intmatch;
intchinese;
intenglish;
floataverage,;
}student[10],h;
inti,j,max,t;
floatmax1;
请输入学生的姓名、学号和成绩:
姓名:
"
%s"
student[i].name);
学号:
student[i].number);
数学:
student[i].match);
语文:
student[i].chinese);
英语:
student[i].english);
该学生的平均成绩是:
student[i].average=(student[i].match+student[i].chinese+student[i].english)/3.0;
%5.1f\n"
student[i].average);
输出数学成绩最高的学生资料:
max=student[0].match;
if(max<
student[i].match)
max=student[i].match;
t=i;
}
%s\n姓名:
%s%\n数学成绩:
%5d\n"
student[t].number,student[t].name,student[t].match);
输出平均成绩最高的学生的成绩:
max1=student[0].average;
if(max1<
student[i].average)
max1=student[i].average;
%s\n数学成绩:
%d\n"
10-j;
if(student[i].average<
=student[i+1].average)
h=student[i];
student[i]=student[i+1];
student[i+1]=h;
numbernamematchchineseEnglishaverage\n"
i++)printf("
%-7s%-10s%-8d%-10d%-12d%-7.1f\n"
student[i].number,student[i].name,student[i].match,student[i].chinese,student[i].english,student[i].average);
4.5运行结果
5项目五:
5.1项目设计要求
(1)掌握文件指针的概念和运用;
(2)掌握文件的相关操作:
打开、读、写、关闭;
(3)掌握文件的定位操作。
5.2项目设计思路
(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;
(2)从键盘输入10个学生的以上内容,存入文件