/*
*烟台大学计算机与控制工程学院
/*
*Copyright (c) 2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:lulu.cpp
*作者:芦亚茹
*完成日期:2015年12月31日
*版本号:v1.o
*
*问题描述:学生信息管理系统
*/#include <iostream>
#include <cstring>
#include <algorithm>
#include<conio.h>
#include "xinxi.h"
using namespace std;
int main()
{
Dis();
int n;
List s;
while( cin>>n)
{
switch(n)//主界面中的各按键选择
{
case 1:
//system("cls");
s.CreateList();
system("cls");
Dis();
break;
case 2:
s.LocateElem();
system("pause");
system("cls");
Dis();
break;
case 3:
s.Listchange();
Dis();
break;
case 4:
s.ListDelete();
system("pause");
system("cls");
Dis();
break;
case 5:
s.ListInsert();
system("pause");
system("cls");
Dis();
break;
case 6:
s.DispList();
system("pause");
system("cls");
Dis();
break;
case 7:
system("cls");
cout<<endl<<endl<<endl;
cout<<" 谢谢使用"<<endl;
cout<<" 再见"<<endl<<endl<<endl;
return 0;
break;
case 8:
cout<<endl<<endl;
cout<<" 这个程序做起来真累"<<endl;
cout<<endl<<endl;
cout<<" 老师"<<endl;
cout<<" 浓浓师生情"<<endl;
system("pause");
system("cls");
Dis();
break;
default:
system("cls");
cout<<"输入错误!请重新输入:"<<endl;
break;
}
}
return 0;
}
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
using namespace std;
typedef struct student
{
int num;
char name[20];
char sex;
int age;
char zhuanye[20];
int tel;
student *next;
} ElemType;
class List
{
private:
ElemType *head; //链表头指针
public:
void CreateList(); //建立
void DispList(); //显示
void ListInsert(); //插入
void LocateElem(); //查找
void Listchange(); //修改
void ListDelete(); //删除
List()
{
head=NULL;
}
};
/************************
功能描述:建立学生信息函数
输入参数:要录入的学生学号以及信息
输出参数:无
其他说明:无
*************************/
void List::CreateList()//建立,录入学生信息
{
ElemType *head1,*p;
cout<<"请输入学生信息以”0“结束输入"<<endl;
head=head1=new ElemType;
while(cin>>head1->num&&head1->num)
{
cin>>head1->name>>head1->sex>>head1->age>>head1->zhuanye>>head1->tel;
p=new ElemType;
head1->next=p;
head1=p;
}
head1->next=NULL;
}
/************************
功能描述:浏览学生信息函数
输入参数:无
输出参数:全部学生信息
其他说明:无
*************************/
void List::DispList()
{
ElemType *head1;
head1=head;
while(head1->next!=NULL)
{
cout<<"————————————————————————"<<endl;
cout<<"学 号: "<<head1->num<<endl;
cout<<"姓 名: "<<head1->name<<endl;
cout<<"性 别: "<<head1->sex<<endl;
cout<<"年 龄: "<<head1->age<<endl;
cout<<"专 业: "<<head1->zhuanye<<endl;
cout<<"电 话: "<<head1->tel<<endl;
head1=head1->next;
}
}
void List::ListDelete() //删除某个学生
{
int D_num;
ElemType *p1,*p2;
cout<<"请输入要删除的学生的学号,以0结束删除操作:"<<endl;
while(cin>>D_num&&D_num!=0)
{
p1=head;
bool f=false; //寻找成功的标志
while(D_num!=p1->num&&p1!=NULL)
{
p2=p1;
p1=p1->next;
}
if(D_num==p1->num)
{
f=true;
if(p1==head)head=p1->next; //删除头结点
else p2->next=p1->next;
cout<<"删除成功!"<<endl;
}
if(!f)
{
cout<<"查无此人,或该学生信息已被删除!"<<endl;
}
cout<<"请输入要删除的学生的学号,以0结束删除操作:"<<endl;
}
}
/************************
功能描述:插入学生信息函数
输入参数:要插入的学生学号以及信息
输出参数:插入后的信息
其他说明:无
*************************/
void List::ListInsert()
{
ElemType *p0,*p1,*p2;
cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
p1=head;
p0=new ElemType;
while(cin>>p0->num&&p0->num)
{
cout<<"请输入该学生的其他信息"<<endl;
cout<<"姓 名:";
cin>>p0->name;
cout<<"性 别:";
cin>>p0->sex;
cout<<"年 龄:";
cin>>p0->age;
cout<<"专 业: ";
cin>>p0->zhuanye;
cout<<"电 话: ";
cin>>p0->tel;
while(p0->num>p1->num&&p1->next->num!=0)//p1指向倒数第二个节点
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1)head=p0;//插在表头
else p2->next=p0;//插在表中间
p0->next=p1;
cout<<"该学生信息已录入"<<endl;
cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
p0=new ElemType;
}
else//插在表尾
{
p0->next=p1->next;
p1->next=p0;
//cout<<p1->next->num<<"************"<<endl;
cout<<"该学生信息已录入"<<endl;
cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
p0=new ElemType;
}
}
}
/************************
功能描述:查找学生信息函数
输入参数:要查找的学生学号
输出参数:查找后的信息
其他说明:无
*************************/
void List::LocateElem()
{
int b;
ElemType *p;
while(1)
{
bool f=false;
cout<<"请输入要查找的学号以”0“结束查找:"<<endl;
cin>>b;
if(b==0)
break;
p=head;
while(p!=NULL)
{
if(b==p->num)
{
cout<<"____________________"<<endl;
cout<<"学 号: "<<p->num<<endl;
cout<<"姓 名: "<<p->name<<endl;
cout<<"性 别: "<<p->sex<<endl;
cout<<"年 龄: "<<p->age<<endl;
cout<<"专 业: "<<p->zhuanye<<endl;
cout<<"电 话: "<<p->tel<<endl;
f=true;
break;
}
else
{
p=p->next;
}
}
if(!f)
{
cout<<"查找失败,此学生不存在!"<<endl;
}
}
}
/************************
功能描述:修改学生信息函数
输入参数:要修改的学生学号以及信息
输出参数:修改后的信息
其他说明:无
*************************/
void List::Listchange()
{
int C_num;
ElemType *p;
while(1)
{
cout<<"请输入一个要修改学生信息,否则输入”0“结束修改"<<endl;
cin>>C_num;
if(C_num==0)
break;
p=head;
bool f=false;
while(p->next!=NULL)
{
if(C_num==p->num)//所输入学号与原有学号相同时,开始修改学生信息
{
f=true;
cout<<"请重新输入学生信息:"<<endl;
cout<<"姓 名:";
cin>>p->name;
cout<<"性 别:";
cin>>p->sex;
cout<<"年 龄:";
cin>>p->age;
cout<<"专 业: ";
cin>>p->zhuanye;
cout<<"电 话: ";
cin>>p->tel;
//cin>>p->num>>p->name>>p->sex>>p->age>>p->zhuanye>>p->tel;
break;
}
else
{
p=p->next;
}
}
if(!f)//如果未查找到要修改的学生信息,可选择插入该学生信息
{
cout<<"未查找到此学生信息,是否插入该学生信息?"<<endl;
cout<<"1.是 2.否"<<endl;
int m;
cin>>m;
if(m==1)//p指向 0(即最后一个) 节点
{
//找到倒数第二个节点,
p=head;
while(p->next->num!=0)
p=p->next;
//p指向倒数第二个节点
ElemType *p1=new ElemType;
p1->next=p->next;
p->next=p1;
cout<<"请输入该学生的其他信息:"<<endl;
p1->num=C_num;
cout<<"姓 名:";
cin>>p1->name;
cout<<"性 别:";
cin>>p1->sex;
cout<<"年 龄:";
cin>>p1->age;
cout<<"专 业: ";
cin>>p1->zhuanye;
cout<<"电 话: ";
cin>>p1->tel;
break;
}
}
}
}
/************************
功能描述:主菜单函数
输入参数:要选择的功能按键
输出参数:进入相对应的功能
其他说明:无
*************************/
void Dis()
{
cout<<endl<<endl<<endl;
cout<<" ◇◇◇◇◇◇◇欢迎使用学生管理系统◇◇◇◇◇◇◇"<<endl;
cout<<" 1.创建学生信息 "<<endl;
cout<<" 2.查找学生信息 "<<endl;
cout<<" 3.修改学生信息 "<<endl;
cout<<" 4.删除学生信息 "<<endl;
cout<<" 5.插入学生信息 "<<endl;
cout<<" 6.显示所有学生信息 "<<endl;
cout<<" 7.退出 "<<endl;
cout<<" 8.关于 "<<endl;
cout<<"请输入您要选择的服务项目:";
}
#endif // HEAD_H_INCLUDED
部分运行结果:
a
本次课程设计实现了一个学生信息管理系统,涵盖了增删改查等基本功能,旨在提升编程和数据库操作能力。部分运行结果显示系统运行正常。

被折叠的 条评论
为什么被折叠?



