/*
*Copyright(c)2017,烟台大学计算机学院
*All right reserved.
*文件名:main.cpp sqqueue.h sqqueue.cpp
*作者:黄士胜
*完成日期:2017年12月19日
*版本号:v1.0
*
*问题描述: 设计一个学生成绩查询系统
*/
采用了多文件组织对此项目进行编写。
主函数代码如下:
#include "huang.h"
#include
#include
#include
#include
using namespace std;
int main()
{
LinkList L;
int order,flag=1,confirm=1;
char a[50];
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<>order;
switch(order)
{
case 1: L.CreatList();break;
case 2: L.Display();;break;
case 3: L.InsertList();break;
case 4: L.DeleteList();;break;
case 5: L.Find();break;
case 6: L.ListSize();break;
case 7: L.BubbleSortList();break;
case 8: L.Count();break;
case 9: L.Count1();break;
case 10: flag=0;break;
}
cout<>a;
if(!strcmp(a,"Y")||!strcmp(a,"y"))
{
cout<<"欢迎下次再使用本系统,谢谢!"<
huang.cpp代码如下
#include "huang.h"
#include
#include
#include
#include
using namespace std;
LinkList::LinkList()//链表的初始化
{
head=(LNode *)malloc(sizeof(LNode));
head->next=NULL;
length=0;
}
//判断用户是否建立了链表,如果是,则返回值为1,反之为0
bool LinkList::IsCreate()
{
if(length==0)
return 0;
return 1;
}
//数据长度
void LinkList::ListSize()
{
if(!IsCreate())
{
cout<<"您还没有建表,请先建表!"<>n;
LNode *p=head;//头插法建立链表
length=n;
for(int i=n;i>0;i--)
{
LNode *p=(LNode *)malloc(sizeof(LNode));
cout<<"请输入学号: ";cin>>p->num;
cout<<"请输入姓名: ";cin>>p->name;
cout<<"请输入年龄: ";cin>>p->age;
cout<<"请输入数学成绩: ";cin>>p->Score;
cout<<"请输入语文成绩: ";cin>>p->Ce;
cout<<"请输入英语成绩: ";cin>>p->Eh;
p->all=p->Score+p->Ce+p->Eh;
p->next=head->next;//指向头节点的指针指向指针指向的下一个节点
head->next=p;
}
cout<<"********************************************************************************"<>num;
LNode *p=head->next;
while(p&&strcmp(p->num,num)!=0)
{
p=p->next;
}
if(!p)cout<<"无法查找到所要查找的学生成绩!"<name<age<Score<Ce<Eh<>num;
LNode *p=head;
while(p->next&&strcmp(p->next->num,num)!=0)
{
p->next=p->next->next;
}
if(!(p->next))
cout<<"找不到所要删除的内容,操作失败!";
else//找到后将当前节点的前一个节点的next指针指向当前节点的下一个节点,并且释放当前节点
{
length--;
LNode *q=p->next;
p->next=p->next->next;
free(q);
}
cout<<"********************************************************************************"<next;
while(p)
{
cout<<"学号: "<num<name<age<Score<Ce<Eh<next;
}
cout<<"********************************************************************************"<>n;
if(n<1||n>length+1)cout<<"插入的位置不正确,操作失败!"<next;
i++;
}
cout<<"请输入学号: ";cin>>q->num;
cout<<"请输入姓名: ";cin>>q->name;
cout<<"请输入年龄: ";cin>>q->age;
cout<<"请输入数学成绩: ";cin>>q->Score;
cout<<"请输入语文成绩: ";cin>>q->Ce;
cout<<"请输入英语成绩: ";cin>>q->Eh;
/*先将要插入的节点的next指针指向找到的节点的下一个节点,
再将找到的节点的next指针指向要插入的节点*/
q->next=p->next;
p->next=q;
length++;
cout<<"********************************************************************************"<next;
LNode *_node=head->next;
char temp1[N],temp2[N];
int temp3;
float temp4;
float temp5;
float temp6;
for(;_temp->next;_temp=_temp->next)
{
for(_node=head->next;_node->next;_node=_node->next)
{
if(_node->Score<_node->next->Score)
{
strcpy(temp1,_node->num);
strcpy(_node->num,_node->next->num);
strcpy(_node->next->num,temp1);
strcpy(temp2,_node->name);
strcpy(_node->name,_node->next->name);
strcpy(_node->next->name,temp2);
temp3=_node->age;
_node->age=_node->next->age;
_node->next->age=temp3;
temp4=_node->Score;
_node->Score=_node->next->Score;
_node->next->Score=temp4;
temp5=_node->Ce;
_node->Ce=_node->next->Ce;
_node->next->Ce=temp5;
temp6=_node->Eh;
_node->Eh=_node->next->Eh;
_node->next->Eh=temp6;
}
}
}
}
}
//统计不及格人数模块
void LinkList::Count()
{
if(!IsCreate())
{
cout<<"您还没有建表,请先建表!"<next;
int count=0;//设置一个计数变量count并赋初值为0
while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数
{
if(p->Score<60) count++;
p=p->next;
}
cout<<"这"<next;
int count=0;//设置一个计数变量count并赋初值为0
while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数
{
if(p->Ce<60) count++;
p=p->next;
}
cout<<"这"<next;
int count=0;//设置一个计数变量count并赋初值为0
while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数
{
if(p->Eh<60) count++;
p=p->next;
}
cout<<"这"<next;
int count=0;//设置一个计数变量count并赋初值为0
while(p)//若当前节点的Score的值小于240,则count加1,直到整个链表查找完后,count的值就是不及格的人数
{
if(p->all>240) count++;
p=p->next;
}
cout<<"这"<
huang.h:
#define N 50
typedef struct LNode//数据节点定义
{
char num[N];//学号
char name[N];//姓名
int age;//年龄
float Score;//数学成绩
float Ce; // 语文成绩
float Eh; //英语成绩
float all; //总成绩
LNode *next;
}LNode;
class LinkList//链表类
{
private://将节点封装为私有变量
LNode *head;
int length;
public:
void menu();
LinkList();//构造函数
bool IsCreate();//判断是否建立链表
void ListSize();//求链表长度
void CreatList(); //建立链表
void InsertList();//插入
void DeleteList();//删除
void Find(); //查找
void Display(); //显示数据
void BubbleSortList();//链表的冒泡排序法
void Count();//统计成绩不及格的人数
void Count1();
};
逐步运行结果如下:
主页面的运行结果如图:
项目一演示:
项目二展示:对三位学生进行显示:
对项目四进行演示:
列表中有二个学生信息:
对学号一进行删除:
对项目三进行演示:
插入学号为12的同学:
显示学号为12的同学的信息:
对项目五进行展示:
项目八 与 项目九 截图如下:
对项目十进行演示: