数据结构实训:学生信息管理
2015-12-30 10:14
441 查看
Stu.h /****************************************************************************** *功能描述:头文件 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include<iostream> #define maxsize 100 #include<stdlib.h> using namespace std; typedef struct student { int num; //学号 char name[20];//姓名 char sex[20];//性别 char ad[20];//年龄 char adr[20];//家庭住址 char tel[20];//联系电话 float score;//总成绩 struct student *next; } student; extern int length; extern student *head,*p; void create(); void menu(); void swi(); void output(student *head); void creatswi(); void outfile(); void reaserch(); void insert(); void Delete(); void infile(); void sort(); menu.cpp /****************************************************************************** *功能描述:学生管理界面 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void menu() { cout<<"________________________________________________________________\n"; cout<<" *********************学生信息管理系统************************** \n"; cout<<" * 1、 录入学生信息 *\n"; cout<<" * 2、 显示所有学生信息 *\n"; cout<<" * 3、 查找某个学生信息 *\n"; cout<<" * 4、 删除指定学号的学生 *\n"; cout<<" * 5、 指定的位置上插入一个学生 *\n"; cout<<" * 6、 学生学号排序 *\n"; cout<<" * 7、 保存学生信息 *\n"; cout<<" * 0、 退出系统 *\n"; cout<<" *************************************************************** \n"; cout<<"________________________________________________________________\n"; } switch.cpp /****************************************************************************** *功能描述:对系统进行功能选择 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void swi() { int i,j,n=1; while(n!=0) { cout<<"请输入你的选择:\n"; cin>>i; switch(i) { case 0: exit(0); case 1: creatswi(); break; case 3: reaserch(); break; case 5: insert(); break; case 4: Delete(); break; case 2: output(head); break; case 6: sort(); break; case 7: infile(); break; default: cout<<"选择错误,重新开始!\n"; } cout<<"\t0:退出\n\t1继续:\n"; for(j=0;; j++) { cin>>n; if(n==0) { i=0; break; } else if(n==1) { system("cls"); menu(); break; } else cout<<"选择错误,重新开始!\n"; } } } creatswi.cpp /****************************************************************************** *功能描述:对录入信息进行选择,是从当前窗口录入还是文件录入 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void creatswi() { int i; cout<<" 请选择录入方式:\n"; cout<<" 1.从当前窗口录入\n"; cout<<" 2.从已有的文件(txt文件)录入\n"; cout<<" 请选择: "; cin>>i; while(i>0) { if(i==1) { create(); break; } else if(i==2) { outfile(); break; } else cout<<" 输入序号有误,请重新输入: "; } } creat.cpp /****************************************************************************** *功能描述:创建单链表,将数据写入 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" int length; void create() { int i,n; student *r; head=(student*)malloc(sizeof(student)); head->next=NULL; r=head; cout<<"请输入学生人数:\n"; cin>>n; for(i=1; i<=n; i++) { system("cls"); menu(); p=(student*)malloc(sizeof(student)); cout<<"输入第"<<i<<"名学生的学号:\n"; cin>>p->num; cout<<"输入第"<<i<<"名学生的姓名:\n"; cin>>p->name; cout<<"输入第"<<i<<"名学生的性别:\n"; cin>>p->sex; cout<<"输入第"<<i<<"名学生的年龄:\n"; cin>>p->ad; cout<<"输入第"<<i<<"名学生的地址:\n"; cin>>p->adr; cout<<"输入第"<<i<<"名学生的电话:\n"; cin>>p->tel; cout<<"输入第"<<i<<"名学生的成绩:\n"; cin>>p->score; length++; p->next=NULL; r->next=p; r=r->next; } } outfile.cpp /****************************************************************************** *功能描述:将文档中的数据读入到单链表中 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" #include <fstream> #include<string> student *head,*p; void outfile() { head=(student*)malloc(sizeof(student)); p=(student*)malloc(sizeof(student)); student *r; r=head; ifstream tfile("date.txt",ios::in); while(tfile>>p->num>>p->name>>p->sex>>p->ad>>p->adr>>p->tel>>p->score,tfile.good()) { r->next=p; r=r->next; p=(student*)malloc(sizeof(student)); } r->next=NULL; tfile.close(); cout<<"\n学生信息已经装入...\n"; student *p1; p1=head; while(p1->next) { length++; p1=p1->next; } } output.cpp /****************************************************************************** *功能描述:将单链表内容输出 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void output(student *head) { student *h=head->next; if(h!=NULL) { cout<<"学号\t姓名\t性别\t年龄\t住 址\t电话\t成绩\n"; while(h!=NULL) { cout<<h->num<<"\t"<<h->name<<"\t"<<h->sex<<"\t"<<h->ad<<"\t"<<h->adr<<"\t"<<h->tel<<"\t"<<h->score<<endl; h=h->next; } } else cout<<"无数据,请及时录入学生信息"<<endl; } research.cpp /****************************************************************************** *功能描述:查找对应学号的信息,若未查到则报错 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void reaserch() { int num; student *p=head->next; cout<<"需要查找的学生学号为:"; cin>>num; while(p!=NULL) { if(p->num==num) { cout<<"学生的信息如下:\n"; cout<<p->num<<" "<<p->name<<" "<<p->sex<<" "<<p->ad<<" "<<p->adr<<" "<<p->tel<<" "<<p->score<<" "<<endl; return; } p=p->next; } if(p==NULL) cout<<"无此记录!\n"; return ; } insert.cpp /****************************************************************************** *功能描述:将写入内容插入到指定位置,若学号已经存在则报错 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void insert() { int num,i; student *p,*q; p=head; cout<<"请输入你要插入位置: "; cin>>num; if(num>length) { cout<<"找不到要插入的位置\n"; return ; } else { cout<<"请输入你要插入的学生的学号、姓名、性别、年龄、住址、电话、成绩:\n"; q=(student *)malloc(sizeof(student)); cin>>q->num>>q->name>>q->sex>>q->ad>>q->adr>>q->tel>>q->score; while(p!=NULL) { if(p->num==q->num) { cout<<"该学号已经存在,无法插入!\n"; return ; } p=p->next; } p=head; for(i=0; i<num; i++) p=p->next; q->next=p->next; p->next=q; length++; cout<<"插入成功!\n"; return ; } } delete.cpp /****************************************************************************** *功能描述:删除相对应的学号,找不到的学号则输出找不到 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void Delete() { int num; student *p,*q; q=head,p=head->next; cout<<"请输入要删除的学生的学号:\n"; cin>>num; while(p!=NULL) { if(p->num==num) { q->next=p->next; free(p); length--; cout<<"删除成功!\n"; break; } p=p->next; q=q->next; //break; if(p->next==NULL) { cout<<"找不到要删除的编号!\n"; break; } } } sort.cpp /****************************************************************************** *功能描述:将单链表内容输出 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" void output(student *head) { student *h=head->next; if(h!=NULL) { cout<<"学号\t姓名\t性别\t年龄\t住 址\t电话\t成绩\n"; while(h!=NULL) { cout<<h->num<<"\t"<<h->name<<"\t"<<h->sex<<"\t"<<h->ad<<"\t"<<h->adr<<"\t"<<h->tel<<"\t"<<h->score<<endl; h=h->next; } } else cout<<"无数据,请及时录入学生信息"<<endl; } infile.cpp /****************************************************************************** *功能描述:将单链表内容写入到文件中 *输入参数: *输出参数: *返回值: 0——成功 其他失败 *其他说明: ******************************************************************************/ #include"Stu.h" #include <fstream> void infile() //保存到文件 { //system("cls"); ofstream tfile("date.txt",ios::out); student *p=head->next; while(p!=NULL)// 写入文件 { tfile<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->ad<<"\t"<<p->adr<<"\t"<<p->tel<<"\t"<<p->score; tfile<<endl; p=p->next; } tfile.close(); cout<<"保存完毕..."<<endl; }
运行结果:
相关文章推荐
- 数据结构实训-学生成绩管理系统
- 数据结构课程设计——学生成绩管理
- {数据结构课程设计}校园导游的多功能实现
- 数据结构课程设计——校园导航系统开发
- 数据结构 JAVA描述(四) 树与二叉树基础
- 数据结构和算法经典100题-第27题
- 【数据结构】双向链表的基本操作
- 数据结构课程设计-12月29日
- 数据结构--冒泡排序
- [Coursera]数据结构基础_Week4_字符串_Q3
- [Coursera]数据结构基础_Week4_字符串_Q2
- [Coursera]数据结构基础_Week4_字符串_Q1
- 数据结构(三)
- 第十六周--数据结构--项目一-- 插入排序之排序中输出每一趟的中间结果
- 第十六周--数据结构--项目一-- 插入排序之希尔排序
- 04 两个栈构造队列 & 两个队列构造栈
- 第十六周--数据结构--项目一--插入排序之折半插入排序
- 数据结构之快排(山理工3398)
- 用Python编写数据结构的冒泡排序
- 拟阵理论简述