/*
*Copyright(c)2017,烟台大学计算机学院
*All right reserved.
*文件名:main.cpp sqqueue.h sqqueue.cpp
*作者:黄士胜
*完成日期:2017年12月19日
*版本号:v1.0
*
*问题描述: 设计一个学生成绩查询系统     */  

采用了多文件组织对此项目进行编写。

主函数代码如下:

#include "huang.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;int main()
{LinkList L;int order,flag=1,confirm=1;char a[50];cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃    ☆☆☆☆☆欢迎进入高中生成绩查询系统☆☆☆☆☆        ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;while(confirm){while(flag){cout<<   "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃     (1)学生成绩整理          (6)学生成绩显示             ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃     (2)学生成绩输出          (7)学生成绩排序             ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃     (3)添加学生成绩          (8)显示不及格人数           ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃     (4)学生成绩删除          (9)统计学生是否达到优秀线   ┃"<<endl;cout<<   "┃                                                          ┃"<<endl;cout<<   "┃     (5)学生成绩查询          (10)退出系统                ┃"<<endl;cout<<   "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;cout<<"请输入您的选择"<<endl;cin>>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<<endl;}
question:   cout<<"您确定要退出吗?(Y/N): ";cin>>a;if(!strcmp(a,"Y")||!strcmp(a,"y")){cout<<"欢迎下次再使用本系统,谢谢!"<<endl;confirm=0;}else if(!strcmp(a,"N")||!strcmp(a,"n"))flag=1;else{cout<<"您输入的命令不正确,请重新输入!"<<endl;goto question;}}system("pause");return 0;
}

huang.cpp代码如下

#include "huang.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
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<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{cout<<"共存储了"<<length<<"个学生的数据信息."<<endl;cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}}/*运行建立链表的程序时,先预先判断是否建立了链表,
如果建立了链表,则返回主菜单;如果没有建表,则建立链表*/
void LinkList::CreatList()
{if(IsCreate()){cout<<"已经建立链表!"<<endl<<"请按任意键继续. . . "<<endl;getch();}else{int n;cout<<"请输入要输入成绩的学生个数: ";cin>>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<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}
}
//查找成绩
void LinkList::Find()
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else /*利用while循环从头结点开始,循环查找各个节点,直到找到为止,若查找循环结束后仍然未找到,则提示输出“无法查找到所要查找的学生信息!”*/{char num[N];cout<<"请输入学号: ";cin>>num;LNode *p=head->next;while(p&&strcmp(p->num,num)!=0){p=p->next;}if(!p)cout<<"无法查找到所要查找的学生成绩!"<<endl;else{cout<<"姓名: "<<p->name<<endl;cout<<"年龄: "<<p->age<<endl;cout<<"数学成绩: "<<p->Score<<endl;cout<<"语文成绩: "<<p->Ce<<endl;cout<<"英语成绩: "<<p->Eh<<endl;}cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}
}
//删除成绩
void LinkList::DeleteList()
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else//利用while循环从头结点开始,循环查找各个节点{char num[N];cout<<"请输入所要删除的学生的学号:";cin>>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<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}
}
//显示学生成绩
void LinkList::Display()
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else//利用链表的循环查找方式从头结点的下一个节点依次输出数据{cout<<"所有学生的成绩如下:"<<endl;cout<<"共有"<<length<<"个学生的成绩"<<endl;LNode *p=head->next;while(p){cout<<"学号: "<<p->num<<endl;cout<<"姓名: "<<p->name<<endl;cout<<"年龄: "<<p->age<<endl;cout<<"数学成绩: "<<p->Score<<endl<<endl;cout<<"语文成绩: "<<p->Ce<<endl<<endl;cout<<"英语成绩: "<<p->Eh<<endl<<endl;p=p->next;}cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}
}
//插入成绩
void LinkList::InsertList()
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{int n,i=1;cout<<"请输入要插入的位置: ";cin>>n;if(n<1||n>length+1)cout<<"插入的位置不正确,操作失败!"<<endl;else//利用while循环从头结点开始,循环查找各个节点{LNode *q,*p=head;q=(LNode *)malloc(sizeof(LNode));while(i<n){p=p->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<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}}
}
//成绩排序
void LinkList::BubbleSortList()   //  链表冒泡排序
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else//定义两个节点,比较后如果要交换,则把节点的顺序部分交换,而节点的位置并没有改变{LNode *_temp=head->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<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{LNode *p=head->next;int count=0;//设置一个计数变量count并赋初值为0while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数{if(p->Score<60) count++;p=p->next;}cout<<"这"<<length<<"名学生中有"<<count<<"名学生数学成绩不及格."<<endl;cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{LNode *p=head->next;int count=0;//设置一个计数变量count并赋初值为0while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数{if(p->Ce<60) count++;p=p->next;}cout<<"这"<<length<<"名学生中有"<<count<<"名学生语文成绩不及格."<<endl;cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{LNode *p=head->next;int count=0;//设置一个计数变量count并赋初值为0while(p)//若当前节点的Score的值小于60,则count加1,直到整个链表查找完后,count的值就是不及格的人数{if(p->Eh<60) count++;p=p->next;}cout<<"这"<<length<<"名学生中有"<<count<<"名学生英语成绩不及格."<<endl;cout<<"********************************************************************************"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}
}
void LinkList::menu()
{cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃    ☆☆☆☆☆欢迎进入高中生成绩查询系统☆☆☆☆☆        ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┃                                                          ┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;}
void LinkList::Count1()
{if(!IsCreate()){cout<<"您还没有建表,请先建表!"<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}else{LNode *p=head->next;int count=0;//设置一个计数变量count并赋初值为0while(p)//若当前节点的Score的值小于240,则count加1,直到整个链表查找完后,count的值就是不及格的人数{if(p->all>240) count++;p=p->next;}cout<<"这"<<length<<"名学生中有"<<count<<"名学生总成绩达到了优秀."<<endl;cout<<"请按任意键继续. . ."<<endl;getch();}}

头文件代码如下

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的同学的信息:



对项目五进行展示:


项目八 与 项目九 截图如下:




  


对项目十进行演示:





期末课程设计—学生成绩查询系统相关推荐

  1. java web期末课程设计 学生成绩管理系统(mysql,jstl+el,Javabean)+增删改查,session域+servlet(基础易理解)

    学生成绩管理系统 一.实验目的 为了更好的学习理解JavaWeb,创建了此系统.此系统可以帮助学习Java web基础,特别是javaweb入门,此系统使用大部分Java web基础知识.Java w ...

  2. ★C语言期末课程设计★——学生成绩管理系统(完整项目+源代码+详细注释)

    学生成绩管理系统 目录 学生成绩管理系统 一.描述 二.设计目的 三.系统分析

  3. javaweb课程设计(简单的学生成绩查询系统)

    学生成绩查询系统 基于JDBC,c3p0数据库连接池,使用sqlserver作为数据库管理,使用三层架构的简单的学生成绩查询系统. //代码仓库见文末 登录界面 密码错误登陆拦截 主界面(教师) 设置 ...

  4. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc

    c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...

  5. MFC课程设计 --学生成绩管理系统

    MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论. 实验目的 使用MFC类库编制应用程 ...

  6. android学生成绩查询代码,android学生成绩查询系统.pdf

    android学生成绩查询系统 嵌入式系统课程设计报告 学生成绩查询系统手机端 I 摘要 在 世纪的今天,互联网已深入世界的各个角落.而WAP技术的发展和无线业务的成 21 熟,为人们获取各种信息提供 ...

  7. c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统

    <c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...

  8. Java综合实践——学生成绩查询系统

    数组是最常用的一种数据结构,利用它可以解决很多较复杂的问题.通过一个"学生成绩查询系统"的设计,提高运用数组和编写较大规模代码的综合能力. "学生成绩查询系统" ...

  9. 学生成绩查询系统(php+mysql)

    学生成绩查询系统(php+mysql)(毕业论文10479字以上,共25页,程序代码,MySQL数据库) 下载全套代码 [项目包含内容]                                ...

最新文章

  1. 起底在线教育行业的技术霸主
  2. 【Android游戏开发十八】解放手指,利用传感器开发游戏!
  3. 【转】6 个技巧,提升 C++11 的 vector 性能
  4. mysql 高可用工具_MySQL Utilities 高可用工具体验
  5. 转仁兄:Binary search and its variation
  6. get mysql options_mysql命令的选项options
  7. webpack系列-plugin
  8. 第一个正式的python版本_LeetCode | 0278. First Bad Version第一个错误的版本【Python】...
  9. vue 项目中 自定义过滤器 全局使用 filter
  10. python刷今日头条访问量_python爬虫实战:刷某博客站点的访问量(转)
  11. 关于“DEP数据执行保护”的解决方案
  12. DTAS尺寸公差分析软件-三维尺寸公差分析软件尺寸链计算软件
  13. 我灰是啥意思是什么_色彩老师说我的静物脏乱花灰是啥意思?
  14. DevOps教程:DevOps 生命周期
  15. 中止执行后超过2年_申请执行超过2年时效,法院还处理吗?
  16. 独立游戏资源宝库,Unity AssetStore上最受欢迎的免费资源
  17. MOBA摄像机表现及交互式操作
  18. python新建文件夹代码_Python文件夹与文件的操作实现代码
  19. 免费ssh连接工具FinalShell
  20. java EE初阶 —进程与线程的区别

热门文章

  1. Kotlin 教程(一):走进 Kotlin 的世界
  2. Matlab-RGB-颜色对照表(0-1之间取值)
  3. ROSNOTE : 自动拍照
  4. 推荐 :数据可视化专家的七个秘密
  5. 如何选择适合自己的进销存系统软件?
  6. (详细)安装nvidia专有驱动并且正确配置,arch linux + lightdm + deepin desktop
  7. 在Label mx标签制作软件中普通打印机也可以打标签
  8. C语言:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
  9. rapid php,Rapid PHP 2018
  10. 中级软件设计师知识总结