佛山科学技术学院.docx
- 文档编号:4404449
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:14
- 大小:46KB
佛山科学技术学院.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;j if(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函数,当输入对应的数字,就进入对应的程序里,运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 佛山 科学技术 学院