数据结构 学生信息管理系统
来源:互联网 发布:淘宝省钱机器人有诈吗 编辑:程序博客网 时间:2024/05/21 18:37
吴玉然
学生信息管理系统
main.cpp
#include "list.h"#include <iostream>#include <stdio.h>#include <cstdlib>#include<fstream>using namespace std;void xinjian(Listtype &L,Data data){ cout<<"新建学生信息输入"<<endl; do { //循环添加结点数据 cout<<"Please enter the student id:"; cin>>data.num; cout<<"Please enter the student name:"; cin>>data.name; cout<<"Please enter the student age ( if the age entry is 0, you can end the entry ):"; cin>>data.age; cout<<endl; if(data.age) { //若年龄不为0 if(!Adddata(&L,data)) { cout<<"Failure!"<<endl; break; } } else break; }while(1); cout<<"长度为:"<<GetLength(&L); cout<<"添加成功!"<<endl; system("pause"); return;}void Add(Listtype &L,int i,Data data){ cout<<"插入学生信息输入"<<endl; cout<<"请输入要插入位置:"<<endl; cin>>i; cout<<"请输入学生学号:"; cin>>data.num; cout<<"请输入学生姓名:"; cin>>data.name; cout<<"请输入学生年龄:"; cin>>data.age; cout<<"插入前长度为:"<<GetLength(&L); Insertdata(&L,i,data); cout<<"插入后长度为:"<<GetLength(&L); cout<<"插入成功!"<<endl; system("pause"); return;}void Delete(Listtype &L,int i,int j,Data data){ cout<<"删除从第i位置起的j个学生数据:"<<endl; cout<<"请输入i的值:"; cin>>i; cout<<endl; cout<<"请输入j的值:"; cin>>j; cout<<endl; IjDelete(&L,i,j); cout<<"删除成功!"<<endl; system("pause"); return;}void Show(Listtype &L){ cout<<"以下为所有学生的信息:"<<endl; Show(&L); cout<<endl; system("pause"); return;}void Save(Listtype &L,Data data) //保存文件函数{ cout<<"保存已输入数据中......"<<endl; Savefile(&L,data); system("pause"); return;}void xiugai(Listtype &L,int i,int j,Data data) //学生信息修改函数{ system("cls"); //清屏 int choice2; do { cout<<"\n********************************************************************************\n"<<endl; cout<<" 学生信息修改"<<endl; cout<<"\n"<<endl; cout<<" 1.新建 2.增添"<<endl; cout<<" 3.删除 4.显示"<<endl; cout<<" 5.保存 0.返回"<<endl; cout<<"\n"<<endl; cout<<"\n"<<endl; cout<<"\n********************************************************************************\n"<<endl; cout<<"\n"<<endl; cout<<"\n 请输入您的选择(1 or 2 or 3 or 4 or 0):"; cin>>choice2; switch(choice2) { case 1:xinjian(L,data);break; //进入新建学生信息操作的函数 case 2:Add(L,i,data);break; //进入增添学生信息操作的函数 case 3:Delete(L,i,j,data);break; //进入删除学生信息操作的函数 case 4:Show(L);break; //进入显示学生信息操作的函数 case 5:Save(L,data);break; //进入保存文件的函数 case 0:cout<<endl<<"返回上一菜单!"<<endl;break; //返回上一菜单,即初始菜单界面 default:cout<<"无此选项!请重试!"<<endl;break; //若输入异常,显示异常操作,提示错误! } }while(choice2!=0);}void Icha(Listtype &L,int i,Data *&xian) //按位置查找函数{ cout<<"长度为:"<<GetLength(&L); cout<<"请输入要查找的学生的位置:"; cin>>i; xian=DataGet(&L,i); cout<<"姓名:"<<xian->name<<endl; cout<<"学号:"<<xian->num<<endl; cout<<"年龄:"<<xian->age<<endl; system("pause"); return;}void chaxun(Listtype &L,int i,Data data,Data *&xian) //学生信息查询函数{ system("cls"); cout<<"\n********************************************************************************\n"<<endl; cout<<" 学生信息查询"<<endl; cout<<endl; cout<<" 1、按位置查询 0、返回"<<endl; cout<<endl; cout<<"\n********************************************************************************\n"<<endl; int choice3=0; cout<<" 请输入您的选择(1 or 2 or 3 or 0):"; cin>>choice3; switch(choice3) { case 1:Icha(L,i,xian);break; //进入按位置查询的函数 case 0:cout<<endl<<"返回上一菜单!"<<endl;break; //返回上一菜单,即初始菜单界面 default:cout<<"无此选项!请重试!"<<endl;break; //若输入异常,显示异常操作,提示错误! }}int main() //主函数{ int i=0; int j=0; Listtype L; Data data; Data *xian; ChuShiHua(&L); system("cls"); //清屏 int choice1; do //进入初始菜单界面 { cout<<"\n*********************************************************************************"<<endl; cout<<"\n**************************** *************************************"<<endl; cout<<" *学生信息查询系统 \n"<<endl; cout<<"\n"<<endl; cout<<"\n"<<endl; cout<<"\n************************** 1、学生信息管理 ***********************************"<<endl; cout<<"\n************************** 2、学生信息查询 ***********************************"<<endl; cout<<"\n*************************** 0、退出系统 ***********************************"<<endl; cout<<"\n"<<endl; cout<<"\n*********************************************************************************"<<endl; cout<<"\n 请输入您的选择(1 or 2 or 0):"; cin>>choice1; switch(choice1) { case 1:xiugai(L,i,j,data);break; //进入学生信息修改菜单界面 case 2:chaxun(L,i,data,xian);break; //进入学生信息查询菜单界面 case 0:cout<<"\n您已安全退出系统."<<endl;break; //退出系统,即结束此函数 default:cout<<"\n没有此选项.请重选."<<endl;break; //若输入异常,显示异常操作,提示错误! } }while(choice1!=0); cout<<"\n------------------------------欢迎您下次再使用!---------------------------------"<<endl; return 0; return 0;}
List.cpp
#include "List.h"#include <iostream>#include <cstdlib>#include <string>#include<fstream>using namespace std;/**************************************************************************功能描述:本函数是给顺序表进行初始化赋值,主要是给顺序表的长度 Length赋初值为0输入参数:Listtype类型的指针变量L输出参数:无返回值:无其他说明:无***************************************************************************/void ChuShiHua(Listtype*L) //顺序表的初始化函数{ L->Length=0;}/**************************************************************************功能描述:本函数可以的到顺序表的长度,即返回Length的值输入参数:Listtype类型的指针变量L输出参数:无返回值:Length值其他说明:无***************************************************************************/int GetLength(Listtype*L) //计算顺序表的长度{ return(L->Length);}/**************************************************************************功能描述:本函数是按照位置查找已经录入的学生信息,若输入的i值不 在有效内,输出错误信息;输入正确则返回要查询的地址输入参数:Listtype类型的指针变量L,int类型的变量i输出参数:错误信息返回值:0或者查询的地址其他说明:无***************************************************************************/Data *DataGet(Listtype*L,int i) //按照位置查找学生位置{ if(i<1||i>MAXLEN) { cout<<"位置输入错误!"<<endl; return 0; } else { return &(L->listData[i]); }}/**************************************************************************功能描述:本函数是按照名字查询录入的学生信息,输入要查找的姓名, 若找到与之匹配的,便返回其地址输入参数:Listtype类型的指针变量L,string类型的变量name输出参数:无返回值:0或者要查找的地址其他说明:无***************************************************************************/Data *NameGet(Listtype *L,string name) //按照姓名查找学生位置{ int n; for(n=1;n<=L->Length;n++) { cout<<n; if(L->listData[n].name==name) { return &(L->listData[n]); break; } else return 0; }}/**************************************************************************功能描述:本函数是按照学号查询录入的学生信息,输入要查找的学号, 若找到与之匹配的,便返回其地址输入参数:Listtype类型的指针变量L,string类型的变量num输出参数:无返回值:0或者要查找的地址其他说明:无***************************************************************************/Data *NumGet(Listtype *L,string num) //按照学号查找学生位置{ int n; for(n=1;n<=L->Length;n++) { cout<<n; if(L->listData[n].num==num) { return &(L->listData[n]); break; } else return 0; }}/**************************************************************************功能描述:本函数是在已经录入的学生信息里插入一条新的学生信息,判断 若顺序表满则不能继续存储,输入的i不在有效范围输出错误信息, 输入正确则插入成功输入参数:Listtype类型的指针变量L,int类型的变量i,Data类型的变量data输出参数:错误信息返回值:0或者1其他说明:无***************************************************************************/int Insertdata(Listtype*L,int i,Data data) //插入学生信息{ int j; if(L->Length>=MAXLEN) { cout<<"储存已满,不能添加!"<<endl; return 1; } if(i<1||i>MAXLEN) { cout<<"插入序号错误!"<<endl; return 1; } else { for(j=L->Length;j>=i;j--) L->listData[j+1]=L->listData[j]; L->listData[i]=data; L->Length++; return 0; }}/**************************************************************************功能描述:本函数是删除指定位置的学生的信息,输入的i不在有效范围输出 错误信息,输入正确则删除成功。输入参数:Listtype类型的指针变量L,int类型的变量i输出参数:错误信息返回值:0或者1其他说明:无***************************************************************************/int Deletedata(Listtype*L,int i) //删除学生信息{ int j; if(i<1||i>MAXLEN) { cout<<"输入删除节点错误!"<<endl; return 1; } else { for(j=i;j<L->Length;j++) L->listData[j]=L->listData[j+1]; L->Length--; return 0; }}/**************************************************************************功能描述:本函数是删除指定位置的学生的信息,输入的i,k不在有效范围输出 错误信息,输入正确则删除成功。输入参数:Listtype类型的指针变量L,int类型的变量i,int类型的变量k输出参数:无返回值:0或者1其他说明:无***************************************************************************/int IjDelete(Listtype*L,int i,int k) //删除顺序表中从第i个学生起的j个学生{ if(i<1||k<0||i+k>L->Length+1) return 1; else { int j; int count; for(count=1;count<=k;count++) { for(j=i;j<i+k;j++) { L->listData[j]=L->listData[j+1]; } L->Length--; } return 0; }}/**************************************************************************功能描述:本函数显示出所有的录入的学生的信息,按照制定格式输出到 电脑屏幕上输入参数:Listtype类型的指针变量L输出参数:无返回值:无其他说明:无***************************************************************************/void Show(Listtype*L) //显示所有的学生信息{ int i; for(i=1;i<=L->Length;i++) { cout<<"学号:"<<L->listData[i].num; cout<<"姓名:"<<L->listData[i].name; cout<<"年龄:"<<L->listData[i].age; cout<<endl; }}/**************************************************************************功能描述:本函数能够连续添加学生信息,判断若线性表到达最大值, 输出提示信息输入参数:Listtype类型的指针变量L,Data类型的变量data输出参数:提示信息返回值:0或者1其他说明:无***************************************************************************/int Adddata(Listtype*L,Data data) //新建学生信息{ if(L->Length>MAXLEN) { cout<<"存储已满,不能再添加学生!"<<endl; return 0; } else { L->listData[++L->Length]=data; return 1; }}/**************************************************************************功能描述:本函数能把所有的录入信息保存进入文件中,如果打开失败输出 错误信息,打开成功按照指定格式保存入文件输入参数:Listtype类型的指针变量L输出参数:无返回值:无其他说明:无***************************************************************************/void Savefile(Listtype *L,Data data) //保存文件{ ofstream out("学生.txt",ios::out); if(!out) { cout<<"打开失败!"<<endl; return; } cout<<"打开成功!"<<endl; for(int i=1;i<=L->Length;i++) { out<<"以下为所有学生信息:"<<endl; out<<"学生姓名:"<<L->listData[i].name<<" "<<"学生学号:"<<L->listData[i].num<<" "<<"学生年龄:"<<L->listData[i].age<<" " <<endl; } cout<<"写入成功!"<<endl; out.close();}List.h
#ifndef LIST_H#define LIST_H#include <string>using namespace std;#define MAXLEN 100 //定义顺序表的最大长度struct Data{ //定义顺序表结点类型 string num; //节点关键字 string name; int age;};struct Listtype{ //定义顺序表结构 Data listData[MAXLEN+1]; //结构体中嵌套结构体 int Length;};void ChuShiHua(Listtype*L); //顺序表的初始化函数int GetLength(Listtype*L); //计算顺序表的长度Data *DataGet(Listtype*L,int i); //按照位置查找节点Data *NameGet(Listtype*L,string name); //按照姓名查找节点Data *NumGet(Listtype*L,string num); //按照学号查找节点int Insertdata(Listtype*L,int i,Data data); //插入节点int Deletedata(Listtype*L,int i); //删除节点int IjDelete(Listtype*L,int i,int k); //删除顺序表中从第i个学生起的k个学生void Show(Listtype*L); //显示所有的节点int Adddata(Listtype*L,Data data); //追加节点void Savefile(Listtype *L,Data data); //保存文件#endif // LIST_H
阅读全文
0 0
- 数据结构 学生信息管理系统
- 数据结构课程设计---学生信息管理系统
- 数据结构课程设计-学生信息管理系统
- 数据结构课程设计学生信息管理系统
- 数据结构课程设计-------学生信息管理系统
- 数据结构课程设计--学生信息管理系统
- 数据结构课程设计论文--学生信息管理系统
- 数据结构课程设计—学生信息管理系统
- 数据结构课程设计【学生信息管理系统(烟大版)】
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计之学生信息管理系统
- 数据结构实训之学生信息管理系统
- 数据结构实训之学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计-学生各方面信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课设--学生信息管理系统
- 百度配置管理disconf配置文件
- 谈谈App混合开发
- 自动驾驶
- [Leetcode] 549. Binary Tree Longest Consecutive Sequence II 解题报告
- java中break用法
- 数据结构 学生信息管理系统
- java之内部类中启动线程
- composer安装thinkPHP5
- Android APP开发框架选择——JSBridge既个人心得和技巧
- 认识Mybatis
- java之配置文件中的汉字和unicode相互转换
- 你脑子进雾霾了吗?
- ThinkPHP5开发注意事项
- java之事务