/* * 烟台大学计算机与控制工程学院 *文件名称:mian.cpp *作 者:王旭 *完成日期:2015年12月25日 *版 本 号:v1.0 * *问题描述:学生信息管理系统 * *输入描述:无 *程序输出:无 */
main.cpp:
#include<stdio.h> #include<iostream> #include<malloc.h> #include<string.h> #include"student.h" #include<stdlib.h> #include<windows.h> using namespace std; int main() //方便后面调用各种函数,多加了一层函数 { Welcome(); } void Welcome() { int num=1; Student *head; head=(Student *)malloc(sizeof(Student)); //chuan head->next=NULL; while(num!=7) { system("cls"); cout<<" ***************欢迎使用学生信息管理系统************"<<endl; cout<<" ***************请输入你要使用的业务代码************"<<endl; cout<<" *********** 1 输入 2 查找 3 修改 ************"<<endl; cout<<" *********** 4 插入 5 删除 ************"<<endl; cout<<" *********** 6 保存 7 退出 ************"<<endl; cin>>num; switch(num) { case 1: StuIn(head); //输入学生信息 break; case 2: StuSelect(head); //查找学生信息 break; case 3: StuAlter(head); //修改学生信息 break; case 4: StuInsert(head); //插入学生信息 (包括头插、尾插) break; case 5: StuDelect(head); //删除学生信息 break; case 6: StuSave(head); //保存学生信息 break; case 7: cout<<"欢迎下次使用^-^"<<endl; Sleep(1000); exit(0); break; default: cout<<"输入正确地业务序号(⊙o⊙)"<<endl; break; } }; }
#include<stdio.h> #include<windows.h> #include<iostream> #include<malloc.h> #include<string.h> #include"student.h" using namespace std; void StuInHand(Student *head); //手动输入,由输入函数调用 void StuInFile(Student *head); //文件输入,由输入函数调用 void StuIn(Student *); //输入函数,由主函数调用 void Sleep(); //程序等待一秒 void StuIn(Student *head) //输入函数,由主函数调用 { int num; system("cls"); while(num!=3) { cout<<" *******************请选择输入方式******************"<<endl; cout<<" ** 1 手动输入 2 文件输入 3 退出 **"<<endl; cout<<" ***************************************************"<<endl; cin>>num; switch(num) { case 1: StuInHand(head); //调用手动输入函数 break; case 2: StuInFile(head); //调用文件输入函数 break; case 3: system("cls"); //清屏,重新回到Wlcome Welcome; //退出输入界面,返回Welcome break; default: cout<<"输入正确的业务代码"; break; } } } void StuSelect(Student *head) //查找函数,由主函数调用 { int s=1; //判断函数是否继续进行 int num; while(s!=2) { cout<<" ***********************查找系统********************"<<endl; cout<<" ********** 1 遍历 2 学号查找 3 退出 *********"<<endl; cout<<" ***************************************************"<<endl; cin>>num; switch(num) { case 1: StuFindErg(head); break; case 2: StuFindNum(head); break; default: s=2; break; } } } void StuAlter(Student *head) //修改函数,由主函数调用 { int num; cout<<"输入想要查找学生的学生号:"; cin>>num; char Sub[10]; cout<<"输入想要查找科目:"; cin>>Sub; Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1; while(p!=NULL) { if(num==p->num&&!strcmp(Sub,p->subject)) { printf("输入修改成绩:\n"); scanf("%d",&p->score); printf("修改成功\n"); Sleep(1000); i++; } p=p->next; } } void StuInsert(Student *head) //插入函数,由主函数调用 { Student *point=(Student *)malloc(sizeof(Student)); point=head->next; while(point->next!=NULL) point=point->next; int s=1; int num; while(s!=2) { cout<<" **********************插入系统*********************"<<endl; cout<<" **** 1 头插 2 尾插 3 退出 ****"<<endl; cout<<" ***************************************************"<<endl; cin>>num; Student *p=(Student *)malloc(sizeof(Student)); switch(num) { case 1: StuIm(head,p); p->next=head->next; head->next=p; cout<<"插入成功!"<<endl; break; case 2: StuIm(head,p); point->next=p; p->next=NULL; cout<<"插入成功!"<<endl; break; default: s=2; break; } } } void StuDelect(Student *head) //删除函数,由主函数调用 { int num; char sub[10]; cout<<"输入想要删除学生的学生号:"; cin>>num; cout<<"输入想要删除科目:"; cin>>sub; Student *p=(Student *)malloc(sizeof(Student)); p->next=head->next; int i=1; while(p->next!=NULL) { if(num==p->next->num&&!strcmp(sub,p->next->subject)) { StuOut(p->next); cout<<"是否删除:1 是,2 否 "; cin>>i; if(num==head->next->num&&!strcmp(sub,head->next->subject)) { head->next=head->next->next; } else { p->next=p->next->next; } i=2; cout<<"删除成功!"<<endl; break; } p=p->next; } if(i==1) cout<<"没有该学生信息"<<endl; }
#include<stdio.h> #include<windows.h> #include<iostream> #include<malloc.h> #include<string.h> #include"student.h" using namespace std; void StuInFile(Student *head) //学生成绩管理系统的文件输入函数,由输入函数调用 { char filename[10]; if(head->next!=NULL) { cout<<"系统已存在信息。请转入插入系统!"<<endl; return ; } FILE *fp; cout<<"请输入文件路径(例如C:\text.txt)"; cin>>filename; if((fp=fopen(filename,"r"))==NULL) { cout<<"不能打开文件,请检查是否正确!"<<endl; return; } Student *point=(Student *)malloc(sizeof(Student)); while(!feof(fp)) { Student *p=(Student *)malloc(sizeof(Student)); p->next=NULL; fread(p,sizeof(Student),1,fp); if(head->next==NULL) { head->next=p; point=p; } else { point->next=p; point=p; } }; fclose(fp); cout<<"传输成功!"<<endl; } void StuSave(Student *head) //存储函数,由主函数调用 { FILE *fp; char filename[10]; cout<<"请输入存储的文件名(例如:C:\text.txt):"; cin>>filename; Student *p=(Student *)malloc(sizeof(Student)); p=head->next; if((fp=fopen(filename,"w"))==NULL) { cout<<"找不到该文件!"<<endl; return; } cout<<"存储成功!"<<endl; while(p!=NULL) { fwrite(p,sizeof(Student),1,fp); p=p->next; } fclose(fp); }
#include<stdio.h> #include<iostream> #include<malloc.h> #include<string.h> #include"student.h" #include<stdlib.h> using namespace std; void StuOut(Student *p) //输出函数,将链表某个节点的信息输出 { cout<<"学生姓名:"; cout<<p->name; cout<<"学生学号:"; cout<<p->num; cout<<"考试科目:"; cout<<p->subject; cout<<"科目成绩"; cout<<p->score<<endl; } int StuIm(Student *head,Student *p) { Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生号是否有重复 Opinion=head->next; cout<<"学生姓名:"; cin>>p->name; cout<<"学生学号:"; cin>>p->num; cout<<"考试科目:"; cin>>p->subject; if(Opinion!=NULL) { if(Opinion->num==p->num&&!strcmp(Opinion->subject,p->subject)) { cout<<"该学生该科目已有成绩"; return 1; } Opinion=Opinion->next; } cout<<"学生成绩:"; cin>>p->score; return 0; } void StuInHand(Student *head) //手动输入函数,由输入函数调用 { if(head->next==NULL) { Student *point=(Student *)malloc(sizeof(Student)); point->next=NULL; int s=1; while(s==1) { Student *p=(Student *)malloc(sizeof(Student)); p->next=NULL; StuIm(head,p); if(head->next==NULL) { head->next=p; point=p; } else { point->next=p; point=p; } cout<<"是否继续: 1 是,2 否 "; cin>>s; } } else { cout<<"系统已存在信息,请转插入系统"; system("cls"); } }
#include<stdio.h> #include<windows.h> #include<iostream> #include<malloc.h> #include<string.h> #include"student.h" using namespace std; void StuFindErg(Student *head) //遍历函数,由查找函数调用 { Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1; while(p!=NULL) { cout<<"第"<<i<<"位学生的信息:"<<endl; StuOut(p); p=p->next; i++; } } void StuFindNum(Student *head) //查找子函数,由查找函数调用 { int num; cout<<"请输入要查找的学生的学号:"; cin>>num; Student *p=(Student *)malloc(sizeof(Student)); p=head->next; int i=1; while(p!=NULL) { if(num==p->num) { StuOut(p); i++; } p=p->next; } if(i==1) cout<<"没有该学生的信息,请检查输入是否正确!"; }
#ifndef TEST_H #define TEST_H struct Student { char name[10]; //姓名 char subject[10]; //科目 int num; //学号 int score; //科目分数 char email[10]; //邮箱 Student *next; }; void Welcome(); //欢迎界面函数,由main函数调用 void StuSelect(Student *); //查找函数,由欢迎界面函数调用 void StuAlter(Student *); //修改函数,由欢迎界面函数调用 void StuInsert(Student *); //插入函数,由欢迎界面函数调用 void StuDelect(Student *); //删除函数,由欢迎界面函数调用 void StuSave(Student *); //存储函数,由欢迎界面函数调用 void StuFindErg(Student *head); //遍历函数,由查找函数调用 void StuFindNum(Student *head); //按学号查找函数,由查找函数调用 void StuOut(Student *p); //输出函数 int StuIm(Student *head,Student *p);//输入函数 void StuIn(Student *); //输入函数,由欢迎界面函数调用 #endif程序运行截图
主界面
手动输入成绩
文件输入成绩
文件输入成功
修改成功
删除信息
修改成功
删除成功
退出界面
遍历查找