作业6-学生成绩录入
组长:丁新宇;
本组成员:刘晓明,司明周,方振华,赵资阳;
贡献得分分配:丁新宇20%,刘晓明20%,司明周20%,方振华20%,赵资阳20%;
语言:c++;
编译环境:codeblock;
必做一 : 学生成绩录入系统功能需求:
1.添加、修改、删除学生信息;
2.按学号查询学生数据;
3.录入、修改学生成绩;
4.按成绩或学号排序
必做三: WBS图像:
必做四: 任务分配:
1.丁新宇,设计程序的整体数据结构,各个函数的功能要求;
2.刘晓明,用户界面设计;
3.司明周,学生信息的输入,查找;
4.方振华,学生信息的修改,删除;
5.赵资阳,对学生以总成绩或学号为基准进行排序 。
#include <iostream> #include <stdlib.h> #include <conio.h> #include <cstring> #define M 50 /********************************全局变量***************************/ using namespace std; typedef struct { long id; /*学号*/ char name[20]; /* 姓名 */ char sex[10]; int math; /* 数学成绩 */ int english; int c_program; int total; }STUDENTS; STUDENTS stu[M]; /* 定义学生结构体变量 */ int num=-1; /* num+1:当前学生个数*/ /* ////////////////////////函数声明////////////////////////// */ /* ////////主功能模块///////// */ void page_title(); /* 主菜单 */ void student_new(); /* 录入学生 */ void student_edit(); /* 修改学生信息 */ void student_del(); /* 删除学生信息 */ void score_search(); /* 根据学号查询学生信息 */ void id_sort(); /* 通过学号递增排序输出 */ void score_sort( ); /* 按成绩递减排序输出 */ void show(int s); /* 显示学生信息 */ /* ////////子功能模块////////// */ int find(long id); /* 通过学号查询数组下标 */ void show_one( int n); /* 显示一个学生信息 */ void input_one(int n); /* 输入一个学生信息 */ void count(int n); /* 计算总成绩 */ void into_menu(); /* 从功能模块进入主菜单 */ void left(); /* 保存退出 */ void page_head1(); void page_head2(); /* ////////////////////主函数/////////////////////// */ int main() { while(1) { page_title(); } } /* ////////////////////主菜单/////////////////////////// */ void page_title() { char c; system("cls"); /* 清屏 */ cout<<"\n\n>>>>>>>>>>>>> 学 生 成 绩 管 理 系 统 <<<<<<<<<<<<<\n\n"; cout<<"\t1 录入学生成绩记录\n\n"; cout<<"\t2 显示学生成绩记录\n\n"; cout<<"\t3 修改学生成绩记录\n\n"; cout<<"\t4 删除学生成绩记录\n\n"; cout<<"\t5 按学号查询学生记录\n\n"; cout<<"\t6 按学号显示学生记录\n\n"; cout<<"\t7 按总成绩递减输出\n\n"; cout<<"\t0 退出\n\n"; cout<<"***************************************************\n"; cout<<" 请用数字键0-8选择操作\n\n"; c=getch(); system("cls"); switch(c) { case '1' : student_new();break; /* 录入学生基本信息 */ case '2' : show(0);break; /* 显示所有记录 */ case '3' : student_edit();break; /* 修改记录 */ case '4' : student_del();break; /* 删除记录 */ case '5' : score_search();break; /* 查询记录 */ case '6' : id_sort();break; /* 按学号排序显示 */ case '7' : score_sort();break; /* 按成绩递减排序显示 */ case '0' : left(); /* 退出 */ } } void student_new() { int n=0; cout<<"\n请输入学生的个数: "; cin>>n; /*输入选择项 */ /* 将输入的字符串转化为整型数*/ while(!(n>0 && n<=M)) { cout<<"\n请重新输入学生个数: "; cin>>n; /*输入选择项*/ /*将输入的字符串转化为整型数*/ } cout<<endl; page_head1(); while(n--) { num++; input_one(num); count(num); } } void student_del() { long id; char c; int n; while(1) { cout<<"请输入你要删除学生的学号:"; cin>>id; cout<<endl; n=find(id); if(n!=-1) break; else system("cls"); } page_head2(); show_one(n); cout<<"\n 请确认删除吗?请输入Y或者N"; c=getch(); if('Y'==c || 'y'==c) { stu[n].id=stu[num].id; stu[n].math=stu[num].math; stu[n].english=stu[num].english; stu[n].total=stu[num].total; strcpy(stu[n].name,stu[num].name); strcpy(stu[n].sex,stu[num].sex); num--; } } void student_edit() { long id; int n; while(1) { cout<<"请输入你要修改学生的学号:"; cin>>id; cout<<endl; n=find(id); if(n!=-1) break; else system("cls"); } page_head2(); show_one(n); cout<<"\n请输入新的信息:\n"; page_head1(); cin>>stu[n].id>>stu[n].name>>stu[n].sex>>stu[n].math>>stu[n].english>>stu[n].c_program; count(n); } void score_search() { long id; int n; cout<<("请输入你要查询学生的学号:"); cin>>id; cout<<endl; n=find(id); if(n!=-1) { page_head2(); show_one(n); } else cout<<"不存在该学号学生信息!!"; into_menu(); } void id_sort( ) { int i=0; int n; long min=stu[0].id; for(i=1;i<=num;i++) { if(stu[i].id <min) min=stu[i].id; } page_head2(); for(i=0;i<=num;) { n=find(min++); if(n!=-1) { i++; show_one(n); } } into_menu(); /* 进入主菜单 */ } void score_sort( ) { int i,j,k,max,t; int index[M]; for(j=0;j<num+1;j++) { index[j]=j; } for(i=0;i<num;i++) { max=index[i];k=i; for(j=i+1;j<num+1;j++) { t=index[j]; if(stu[t].total>stu[max].total) { max=t; k=j; } } t=index[k];index[k]=index[i];index[i]=t; } page_head2(); for(i=0;i<num+1;i++) { k=index[i]; show_one(k); } into_menu(); } void show(int s) { int i,j; page_head2(); for(i=0;i<num+1;i++) { if(-1==s) j=num-i; else j=i; show_one(j); } into_menu(); /* 进入主菜单 */ } int find(long id) { int n; for(n=0;n<=num;n++) { if( stu[n].id==id ) { return n; } } return -1; } void input_one(int n) { cin>>stu[n].id>>stu[n].name>>stu[n].sex>>stu[n].math>>stu[n].english>>stu[n].c_program; cout<<"--------------------------------------------------------------\n"; } void show_one(int n) { cout<<stu[n].id<<'\t'<<stu[n].name<<'\t'<<'\t'<<stu[n].sex<<'\t'; cout<<stu[n].math<<'\t'<<stu[n].english<<'\t'<<stu[n].c_program<<'\t'<<stu[n].total<<endl; cout<<"----------------------------------------------------------------------\n"; } void count(int n) { stu[n].total=stu[n].math+stu[n].english+stu[n].c_program; } void left() { exit(0); } void into_menu() { cout<<"\n请按任意键进入主菜单"; getch(); } void page_head2() { cout<<"**********************************************************************\n"; cout<<"学号\t\t姓名\t\t性别\t数学\t英语\tC语言\t总成绩\n"; cout<<"**********************************************************************\n"; } void page_head1() { cout<<"**************************************************************\n"; cout<<"学号\t\t姓名\t\t性别\t数学\t英语\tC语言\n"; cout<<"**************************************************************\n"; }