VC 链表做的学生管理系统

最近在学链表,做了一个简单的学生管理系统,希望多多指教.

 

#include <iostream>
using namespace std;
#include<string>

class Student
{
public:
 int Number;//学生编号
 string Name;//学生姓名
 float Math;//学生成绩
 Student *next;
};

Student *Head;
/**********************************
*   建立链表
**********************************/
Student *create()
{
 Student *p1,*p2;
 p1=new Student;
 Head=p1;
 p2=p1;

 cout<<"请输入学生编号(输入0退出)"<<endl;
 cin>>p1->Number;
 if(p1->Number!=0)
 {
  cout<<"请输入学生姓名"<<endl;
  cin>>p1->Name;
  cout<<"请输入学生成绩"<<endl;
  cin>>p1->Math;
 }
 else
 {
  p2->next=NULL;
  p2=NULL;
  p1=NULL;
  Head=NULL;
  return Head;
 }
 while (p1->Name!="")
 {
  p2=p1;
  p1=new Student;
  cout<<"请输入学生编号(输入0退出)"<<endl;
  cin>>p1->Number;
  if(p1->Number!=0)
  {
   cout<<"请输入学生姓名"<<endl;
   cin>>p1->Name;
   cout<<"请输入学生成绩"<<endl;
   cin>>p1->Math;
  }
  p2->next=p1;
 }
 delete p1;
 p2->next=NULL;
 return Head;
}
/**********************************
*   显示链表
**********************************/
void show(Student *head)
{
 cout<<endl;
 cout<<"学生信息如下:"<<endl;
 while(head)
 {
  cout<<head->Name<<"的编号是:\t"<<head->Number;
  cout<<"\t成绩是:\t"<<head->Math<<endl;
  head=head->next;
 }
}
/*********************************
*   删除链表
*********************************/
void del(Student *head,int num)
{
 Student *l;//保存前一个节点
 if (head->Number==num)
 {
  l=head;
  Head=l->next;
  delete l;
  cout<<"删除头结点操作成功"<<endl;
  return;
 }
 while(head)
 {
  if (head->next->Number==num)
  {
   l=head->next;
   head->next=l->next;
   delete l;
   cout<<"删除操作成功"<<endl;
   return;
  }
  if(head->next==NULL)
  {
   cout<<"您要删除的编号不存在"<<endl;
   return;
  }
  head=head->next;
 }
  cout<<"无效编号"<<endl;
}
/********************************.
*   插入链表
*********************************/
void insert(Student *head,int num,string  name,float math)
{
 Student *list=new Student;
 Student *temp=NULL;

 list->Number=num;
 list->Name=name;
 list->Math=math;

 if(num<head->Number)
 {
  list->next=head;
  Head=list;
 }
 while((num>head->Number)&&(head->next!=NULL))
 {
  temp=head;
  head=head->next;
 }
 if (num>head->Number)
 {
  head->next=list;
 }
 else
 {
  temp->next=list;
  list->next=head;
 }
}
string na;
int main()
{
 cout<<"\t\t\t\t学生管理系统"<<endl;
 
 int state;//状态
 const int Create=0;
 const int Show =1;
 const int Del=2;
 const int Insert=3;
 
 while(true)
 {
  cout<<"请选择操作(0是创建信息,1是显示信息,2是删除信息,3是插入信息)"<<endl;
  cin>>state;//选择状态
  cout<<endl;
 switch(state)
 {
 case Create:
  Head=create();
  break;
 case Show:
  show(Head);
  break;
 case Del:
  int delnum;
  cout<<"请输入要删除的编号"<<endl;
  cin>>delnum;
  del(Head,delnum);
  break;
 case Insert:
  int n;
  float m;
  cout<<"请输入学生编号"<<endl;
  cin>>n;
  cout<<"请输入学生姓名"<<endl;
  cin>>na;
  cout<<"请输入学生成绩"<<endl;
  cin>>m;
  insert(Head,n,na,m);
  break;
 default:
  cout<<"无效输入 请重新输入"<<endl;
  break;
 }
 }
 return 0;
}

 

1.设计内容:学生管理系统 使用下面数据,用C++设计一个简单学籍管理系统实现基本的功能。 学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 … …. .. … ……….. 学生成绩基本信息文件(B.TXT)及其内容: 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 … …. ………. .. .. … 功能要求及说明: (1)数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%。 实得学分的计算: 综合成绩在60以上(含60 ),应得学分=课程学分 综合成绩在60以下 ,应得学分=0 (2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询: 输入一个学号或姓名(可实现选择),查此生的基本信息并显示输。 B:成绩查询: 输入一个学号时,查询此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx … … … … ……… … … 共修:xx科,实得总学分为: xxx (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。 (4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据
学生管理系统(★★★) 使用下面数据,用C设计一个简单学籍管理系统实现基本的功能。 学生基本信息文件(A.TXT)由以下内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 … …. .. … ……….. 学生成绩基本信息文件(B.TXT)有以下内容: 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 … …. ………. .. .. … 功能要求及说明: (1)数据录入及插入功能: 对A..TXT和B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。并且最后也可插入学生数据。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% . 实得学分的计算: 采用等级学分制. 综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80% 综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60% 综合成绩在60以下 ,应得学分=学分*0% (2)显示功能:要求可显示原A、B文件中的内容,并且插入信息后还可显示新内容。 (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息,并显示输结果。 (4) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值