佛山科学技术学院.docx
《佛山科学技术学院.docx》由会员分享,可在线阅读,更多相关《佛山科学技术学院.docx(14页珍藏版)》请在冰点文库上搜索。
佛山科学技术学院
佛山科学技术学院
实验报告
实验名称小型学生信息管理系统
实验项目编写一个小型学生信息管理系统
专业班级06电子信息工程姓名邱培聪学号2006924322
指导教师郭伟刚成绩日期
一、试验目的
本实验为学生提供了一个既动手又动脑,上机实践的机会。
学生通过分析和解决该实验,将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的能力。
二、实验内容
编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。
系统功能模块如下图:
具体要求为:
1.建立学生信息,每个学生的信息应包括:
学号、姓名、性别、班级、至少3门课程的成绩;
2.数据输入:
输入学生的各项信息;
3.数据修改:
根据输入学生的学号可以选择修改该学生的信息;
4.数据处理:
可以选择处理方式为:
排序、查询、统计。
其中:
a)排序:
按选择按平均分排序
b)查询:
根据学号查询成绩
c)统计:
可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生;
5.数据输出:
输出学生的相应结果信息;
6.退出:
退出整个学生信息管理系统。
三、程序组织结构图、函数调用关系图
主函数……LEAP……选择:
case1:
myget();break;
case2:
myproc();break;
case3:
myedit();break;{函数myorder()函数mysum()函数myseek()
函数num1()函数ave1()}
case4:
myput();break;
case5:
break;
default:
printf("输入有误");
四、程序清单
#include
#include
#include
#include
inttemp;
structstudent//
{
charnum[10];//
charname[10];//
charsex[4];//
charmyclass[20];//
intcj1,cj2,cj3;//
floatave;
}stu[100];
voidmyget()//输入
{//FILE*P;
charx='y';inti=0;
while
(1)
{printf("\n\t数据输入:
\n");
printf("\t学号:
");scanf("%s",stu[i].num);
printf("\t姓名:
");scanf("%s",stu[i].name);
printf("\t性别:
");scanf("%s",stu[i].sex);
printf("\t班级:
");scanf("%s",stu[i].myclass);
printf("\t成绩1:
");scanf("%d",&stu[i].cj1);
printf("\t成绩2:
");scanf("%d",&stu[i].cj2);
printf("\t成绩3:
");scanf("%d",&stu[i].cj3);
stu[i].ave=float((stu[i].cj1+stu[i].cj2+stu[i].cj3)/3.0);
i++;temp=i;
//if(p=(fopen(123.txt,"w")==0)
//{printf("");exit(0);}
//fread(
printf("学生个数为%d",temp);
printf("\t是否继续输入(Y/N)");
cin>>x;
if(x=='n'||x=='N')
break;}
}
voidmyproc()//修改
{inti;charx='y';charj[10];
for(i=0;i{cout<<"总的数据如下:
"<printf("学号姓名性别班级成绩1成绩2成绩3\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("\n");
printf("------------------------------------------------------------------------\n");
}
cout<<"请输入一个学号:
"<cin>>j;
while
(1)
{
for(i=0;i{
if((strcmp(j,stu[i].num)==0))//比较
{cout<<"这个学号的同学原来的数据:
"<printf("学号姓名性别班级成绩1成绩2成绩3\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("\n");
printf("------------------------------------------------------------------------\n");
printf("\n\t数据修改:
\n");
printf("\t姓名:
");scanf("%s",stu[i].name);
printf("\t性别:
");scanf("%s",stu[i].sex);
printf("\t班级:
");scanf("%s",stu[i].myclass);
printf("\t成绩1:
");scanf("%d",&stu[i].cj1);
printf("\t成绩2:
");scanf("%d",&stu[i].cj2);
printf("\t成绩3:
");cin>>stu[i].cj3;
}
}
printf("\t是否继续修改Y/N)");
cin>>x;
if(x=='n'||x=='N')
break;
cout<<"请输入一个学号:
"<cin>>j;
}
}
//
voidave1()
{
inti,j;
studentstud;
for(i=0;i<=temp-2;i++)
{
for(j=0;j<=temp-2-i;j++)
if(stu[j].ave>stu[j+1].ave)
{
stud=stu[j+1];stu[j+1]=stu[j];stu[j]=stud;
}
/*printf("\t学号:
");printf("%s",stu[i].num);
printf("\t姓名:
");printf("%s",stu[i].name);
printf("\t性别:
");printf("%s",stu[i].sex);
printf("\t班级:
");printf("%s",stu[i].myclass);
printf("\t成绩1:
");printf("%d",stu[i].cj1);
printf("\t成绩2:
");printf("%d",stu[i].cj2);
printf("\t成绩3:
");printf("%d",stu[i].cj3);
*/
}
cout<<"按平均分大小排序如下:
"<for(i=0;i{
printf("学号姓名性别班级成绩1成绩2成绩3成绩\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("%-8f",stu[i].ave);
printf("\n");
printf("------------------------------------------------------------------------\n");
}
}
voidnum1()
{inti,j,k;
studentstud;
for(i=0;i{
k=i;
for(j=1+i;jif(strcmp(stu[k].num,stu[j].num)>0)
k=j;
if(k!
=i)
{
stud=stu[i];stu[i]=stu[k];stu[k]=stud;
}
}
cout<<"按学号大小排序如下:
"<for(i=0;i{
printf("学号姓名性别班级成绩1成绩2成绩3\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("\n");
printf("------------------------------------------------------------------------\n");
}
}
voidmyorder()////排序
{
longx;
while
(1)
{printf("\t|-----------------------------|\n");
printf("\t|学生信息管理系统|\n");
printf("\t|-----------------------------|\n");
printf("\t|1.按学号排序|\n");
printf("\t|2.按成绩排序|\n");
printf("\t|3.退出|\n");
printf("\t|-----------------------------|\n");
printf("\n\t请选择编号:
");
printf("\n\t");
cin>>x;
switch(x)
{case1:
num1();break;
case2:
ave1();break;
case3:
break;
default:
printf("输入有误");
}
if((x)==3)break;
printf("\n");
}
}
//查找
voidmyseek()
{charx,min[10];
inti;
cout<<"请输入一个学号:
"<scanf("%s",min);
while
(1)
{
for(i=0;i{
if(strcmp(min,stu[i].num)==0)
{cout<<"此学生的数据如下:
"<printf("学号姓名性别班级成绩1成绩2成绩3\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("\n");
printf("------------------------------------------------------------------------\n");
}
}
printf("\t是否继续查找(Y/N)");
cin>>x;
if(x=='n'||x=='N')
break;
cout<<"请输入一个学号:
"<scanf("%s",min);
}
}
voidmysum()
{inti;
for(i=0;i{printf("\t第%d学生的平均分",i+1);printf("%f",stu[i].ave);}
}
voidmyedit()//处理
{
intx;
while
(1)
{
printf("\t|-----------------------------|\n");
printf("\t||\n");
printf("\t|-----------------------------|\n");
printf("\t|1.数据排序|\n");
printf("\t|2.数据查询|\n");
printf("\t|3.数据统计|\n");
printf("\t|4.退出|\n");
printf("\t|-----------------------------|\n");
printf("\n\t请选择编号:
");
printf("\n\t");
cin>>x;
switch(x)
{case1:
myorder();break;
case2:
myseek();break;
case3:
mysum();break;
case4:
break;
default:
printf("输入有误");
}
if(x==4)break;
printf("\n");
}
}
voidmyput()
{
inti;
for(i=0;i{printf("\n\t总的数据输出:
\n");
printf("学号姓名性别班级成绩1成绩2成绩3\n");
printf("------------------------------------------------------------------------\n");
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%-10s",stu[i].sex);
printf("%-11s",stu[i].myclass);
printf("%-8d",stu[i].cj1);
printf("%-8d",stu[i].cj2);
printf("%-8d",stu[i].cj3);
printf("\n");
printf("------------------------------------------------------------------------\n");
}
}
voidmain()
{
longx;
while
(1)
{printf("\t|-----------------------------|\n");
printf("\t|学生信息管理系统|\n");
printf("\t|-----------------------------|\n");
printf("\t|1.数据输入|\n");
printf("\t|2.数据修改|\n");
printf("\t|3.数据处理|\n");
printf("\t|4.数据输出|\n");
printf("\t|5.退出|\n");
printf("\t|-----------------------------|\n");
printf("\n\t请选择编号:
");
printf("\n\t");
cin>>x;
switch(x)
{case1:
myget();break;
case2:
myproc();break;
case3:
myedit();break;
case4:
myput();break;
case5:
break;
default:
printf("输入有误");
}
if((x)==5)break;
printf("\n");
}
}
五、运行结果
六、实验总结(调试分析和体会)
这个程序比较大,首先应想好整体的布局,例如
由此,我们可以得到主函数包含的内容;
然后先编辑好各个调用函数,有些在调用函数里喊要嵌入几个调用函数,这就需要我们耐心的编写,尤其是有些函数,在前面的作业里有一模一样的,可以直接用过来;
最后,再想主函数的调用,在我的程序里,用了switch函数,当输入对应的数字,就进入对应的程序里,运行。