作业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";
}



浙公网安备 33010602011771号