#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>
#include <cstring>
using namespace std;
class Student;
class StuNode
{
public:
Student* head;
Student* tail;
int num;
};
class Student
{
private:
int num;
char name[10];
char major[10];
char clas[10];
int math_sc;
int English_sc;
int C_sc;
public:
friend class StuFun;
Student* creat_stu();
Student* next;
};
class StuFun:public Student
{
public:
int Add_info(StuNode* list,Student* node);
int find_mod(StuNode* list,int flag);
int aver_jg_yx(StuNode* list);
int All_aver_max_min(StuNode* list);
int pm(StuNode* list);
int deleteStu(StuNode* list);
int show(StuNode* list);
int Free_Node(StuNode* list);
int Read_File(StuNode* list);
};
StuNode* creat_node(StuNode* list)
{
if(list)
return NULL;
//list=(StuNode*)malloc(sizeof(class StuNode));
list = new StuNode;
list->head=NULL;
list->tail=NULL;
list->num=0;
return list;
}
Student* Student::creat_stu()
{
Student* node = new Student;
if(!node)
return NULL;
cout<<"\t学号:";
cin>>node->num;
cout<<"\t姓名:";
cin>>node->name;
cout<<"\t系别:";
cin>>node->major;
cout<<"\t班级:";
cin>>node->clas;
cout<<"\t高数分数:";
cin>>node->math_sc;
cout<<"\t英语分数:";
cin>>node->English_sc;
cout<<"\tC++分数:";
cin>>node->C_sc;
node->next=NULL;
return node;
}
int StuFun::Add_info(StuNode* list,Student* node) //输入1调用
{
if(!list||!node)
return -1;
if(!list->head)
{
list->head = node;
list->tail = node;
}
else
{
list->tail->next = node;
list->tail=node;
}
list->num++;
return 0;
}
int StuFun::find_mod(StuNode* list,int flag) //查询和修改学生信息 输入2,3调用
{
int n,mat=0,English=0,Csc=0;
char cla[10],maj[10],name[10];
Student *node=list->head,*find=NULL;
if(flag==0) //查询学生信息
{
cout<<"\t*************************************\n";
cout<<"\t***** 1,按系别查询! ******\n";
cout<<"\t***** 2,按班级查询! ******\n";
cout<<"\t***** 3,按高数成绩查询! ******\n";
cout<<"\t***** 4,按英语成绩查询! ******\n";
cout<<"\t***** 5,按C语言成绩查询! ******\n";
cout<<"\t***** 6,按学生姓名查询! ******\n";
cout<<"\t*************************************\n\n";
cout<<"请输入选项[ ]\b\b";
cin>>n;
if(!list)
return -1;
switch(n)
{
case 1:cout<<"\t请输入您要查询学生的系别:";
cin>>maj;break;
case 2:cout<<"\t请输入您要查询学生的班级:";
cin>>cla;break;
case 3:cout<<"\t请输入您要查询学生的高数成绩:";
cin>>mat;break;
case 4:cout<<"\t请输入您要查询学生的英语成绩:";
cin>>English;break;
case 5:cout<<"\t请输入您要查询学生的C语言成绩:";
cin>>Csc;break;
case 6:cout<<"\t请输入您要查询学生的C语言成绩:";
cin>>name;break;
default:cout<<"\t输入错误!\n";
}
cout<<"\n\t学号\t姓名\t系别\t班级\t高数\t英语\tC语言\n\n";
}
if(flag==1) //修改学生信息
{
cout<<"\t请输入你要修改学生姓名:";
cin>>name;
}
while(node)
{
switch(n)
{
case 1:if(!strcmp(node->major , maj))
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
case 2:if(!strcmp(node->clas , cla))
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
case 3:if(node->math_sc == mat)
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
case 4:if(node->English_sc == English)
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
case 5:if(node->C_sc == Csc)
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
case 6:if(!strcmp(node->name , name))
cout<<"\t"<<node->num<<"\t"<<node->name<<"\t"<<node->major<<"\t"<<node->clas<<
"\t"<<node->math_sc<<"\t"<<node->English_sc<<"\t"<<node->C_sc<<endl;
break;
}
if(flag==1) //修改学生信息
{
if(!strcmp(node->name, name))
{
cout<<"\t\t学号:";
cin>>node->num;
cout<<"\t\t姓名:";
cin>>node->name;
cout<<"\t\t系别:";
cin>>node->major;
cout<<"\t\t班级:";
cin>>node->clas;
cout<<"\t\t高数分数:";
cin>>node->math_sc;
cout<<"\t\t英语分数:";
cin>>node->English_sc;
cout<<"\t\tC++分数:";
cin>>node->C_sc;
break;
}
}
find = node;
node = node->next;
}
getchar();
return 0;
}
int StuFun::aver_jg_yx(StuNode* list) //对学生信息进行分析
{
Student* node=list->head;
char major_name[10],class_name[10];
float sum_math=0,sum_El=0,sum_C=0,aver_math,aver_El,aver_C,flag,m=0;
float jg_math,jg_El,jg_C,yx_math,yx_El,yx_C,n=0.0,n1=0.0,n2=0.0,n3=0.0,n4=0.0,n5=0.0,n6=0.0;;
//求单科平均分,及格率和优秀率
cout<<"\t*****************************************\n";
cout<<"\t**** 1,按系对学生信息进行分析! ****\n";
cout<<"\t**** 2,按班对学生信息进行分析! ****\n";
cout<<"\t*****************************************\n\n";
cout<<"\t请输入选项[ ]\b\b";
cin>>flag;
if(flag == 1) //按系对学生信息进行分析!
{
cout<<"\t请输入系别名称:";
cin>>major_name;
m = strcmp( node->major,major_name );
}
if(flag == 2) //按班对学生信息进行分析!
{
cout<<"\t请输入班级名称:";
cin>>class_name;
m = strcmp( node->clas,class_name );
}
while(node)
{
if(!m)
{
sum_math += node->math_sc;
sum_El += node->English_sc;
sum_C += node->C_sc;
if(node->math_sc >=60) //统计单科及格和优秀人数
{
n1++;
if(node->math_sc >=90)
n4++;
}
if(node->English_sc >=60)
{
n2++;
if(node->English_sc >=90)
n5++;
}
if(node->C_sc >=60)
{
n3++;
if(node->C_sc >=90)
n6++;
}
n++;
}
node = node->next;
}
aver_math=sum_math/n;
aver_El=sum_El/n;
aver_C=sum_C
csdnGuoYuying
- 粉丝: 198
- 资源: 111
最新资源
- 使用群晖NAS搭建虚拟机
- 基于minifly的学习源码-本人耗时五年完善的稳定源码移植于minifly上,不带操作系统,直接操作寄存器,代码简洁明了,算法基于数学公式,便于学习数学知识
- 基于motorcad设计的外转子发电机,磁钢采用FB6B铁氧体 ,不等匝绕组,输出功率2.3KW 定子外径156 3200RPM,18极27槽永磁同步发电机(PMSG)设计案例.
- 电力电子、电机驱动、数字滤波器matlab simulink仿真模型实现及相关算法的C代码实现 配置C2000 DSP ADC DAC PWM定时器 中断等模块,提供simulink与DSP的联合仿
- 视觉系统程序,新能源电池检测 1、支持4个相机 2、实现Profinet网卡通信 3、实现日志功能 4、实现图像存储功能 5、实现电芯有无判断、电芯和端板涂胶检测
- 基于51单片机的电子时钟设计
- 西门子smart200与汇川变频器 Modbus RTU控制程序 步科触摸屏程序 振捣控制系统 汇川变频器手册
- C#上位机与西门子plc通信,实现伺服控制与数字量控制 提供C#源代码,plc测试程序
- 45.<资源>番茄钟3.0 无代码 C#例子 WPF例子
- stm32f103的Bootloader IAP串口升级stm32f103的Bootloader IAP串口升级st m32固件的学习资料,成熟产品方案已经用在批量产品上,资料包括上位机(电脑端)运行
- 基于Spark的电商用户行为分析系统-源码+课设论文(本科期末课程设计).zip
- Qt C++pdf阅读器源码 上下翻页 精美工具栏 支持ofd格式 1. 仿WPS界面 2. 预览PDF文件 3. 支持PDF预览放大,缩小 4. 支持目录预览查看 5. 支持目录点击跳转页查
- RDM(radis桌面工具)
- 西门子s7 200smart与3台台达VFD-M变频器通讯目标:用触摸屏和西门子smart 控制3台台达变频器通讯 器件:西门子s7 200 smart PLC,3台台达VFD-M变频器,昆仑通态触摸
- 基于51单片机的电子密码锁设计
- Qt5工业上位机源码 工业电子称 无线扫码器 串口的使用 Qt5.14可运行 Qt5工业上位机应用! 一套完整工程! 工业电子称使用, 无线扫码枪的使用, 串口的使用 使用Qt5.14 用QtCrea
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈