/*
* 烟台大学计算机与控制工程学院
*文件名称:mian.cpp
*作 者:王旭
*完成日期:2015年12月25日
*版 本 号:v1.0
*
*问题描述:学生信息管理系统
*
*输入描述:无
*程序输出:无
*/
main.cpp:
#include
#include
#include
#include
#include"student.h"
#include
#include
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<<" ***************欢迎使用学生信息管理系统************"<>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<<"欢迎下次使用^-^"<
#include
#include
#include
#include
#include
#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<<" *******************请选择输入方式******************"<>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<<" ***********************查找系统********************"<>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<<" **********************插入系统*********************"<>num;
Student *p=(Student *)malloc(sizeof(Student));
switch(num)
{
case 1:
StuIm(head,p);
p->next=head->next;
head->next=p;
cout<<"插入成功!"<next=p;
p->next=NULL;
cout<<"插入成功!"<>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<<"删除成功!"<next;
}
if(i==1)
cout<<"没有该学生信息"<
#include
#include
#include
#include
#include
#include"student.h"
using namespace std;
void StuInFile(Student *head) //学生成绩管理系统的文件输入函数,由输入函数调用
{
char filename[10];
if(head->next!=NULL)
{
cout<<"系统已存在信息。请转入插入系统!"<>filename;
if((fp=fopen(filename,"r"))==NULL)
{
cout<<"不能打开文件,请检查是否正确!"<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<<"传输成功!"<>filename;
Student *p=(Student *)malloc(sizeof(Student));
p=head->next;
if((fp=fopen(filename,"w"))==NULL)
{
cout<<"找不到该文件!"<next;
}
fclose(fp);
}
#include
#include
#include
#include
#include"student.h"
#include
using namespace std;
void StuOut(Student *p) //输出函数,将链表某个节点的信息输出
{
cout<<"学生姓名:";
cout<name;
cout<<"学生学号:";
cout<num;
cout<<"考试科目:";
cout<subject;
cout<<"科目成绩";
cout<score<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
#include
#include
#include
#include
#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<<"第"<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
程序运行截图
主界面
手动输入成绩
文件输入成绩
文件输入成功
修改成功
删除信息
修改成功
删除成功
退出界面
遍历查找