- /***********************************************************
- *版权所有 (c)2017,yuchen
- *文件名称:school guiade create
- *文件标识:无
- *内容:该代码是用于管理学生成绩。
- *作者:常路
- *完成日期:2017年12月21日
- *修改记录:无
- **********************************************************/
- find.cpp
-
- #include<stdio.h>
#include<windows.h>//清屏
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
//*******************************************************
功能描述:调用输出函数,将输入的学生成绩信息一一遍历输出
输入参数:1
输出参数:学生姓名、学号、科目、成绩
*******************************************************/
void StuFindErg(Student *L)
{
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
int i=1;
while(p!=NULL)
{
cout<<"第"<<i<<"位学生的信息:"<<endl;
cout<<"学生姓名:";
cout<<p->name;
cout<<"学生学号:";
cout<<p->num;
cout<<"考试科目:";
cout<<p->subject;
cout<<"科目成绩";
cout<<p->score<<endl;
p=p->next;
i++;
}
}
/*************************************************
功能描述:通过学生学号,调用输出函数,输出该生信息
输入函数:学号
输出函数:学生姓名、学号、科目、成绩
*************************************************/
void StuFindNum(Student *L)//按学号查找
{
int num;
cout<<"请输入要查找的学生的学号:";
cin>>num;
Student *p=(Student *)malloc(sizeof(Student));
p=L->next;
int i=1;
while(p!=NULL)
{
if(num==p->num)
{
cout<<"学生姓名:";
cout<<p->name;
cout<<"学生学号:";
cout<<p->num;
cout<<"考试科目:";
cout<<p->subject;
cout<<"科目成绩";
break;
}
else
{
p=p->next;
}
}
if(i==1)
cout<<"没有该学生的信息,请检查输入是否正确!";
}
- In_Out.cpp
- #include<stdio.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
#include<stdlib.h>
using namespace std;
/************************************
功能描述:输出学生成绩信息
输入函数:无
输出函数:学生姓名、学号、科目、成绩
************************************/
void StuOut(Student *L)
{
Student *p=L->next;
while(p!=NULL)
{
cout<<"学生姓名:";
cout<<p->name;
cout<<"学生学号:";
cout<<p->num;
cout<<"考试科目:";
cout<<p->subject;
cout<<"科目成绩";
cout<<p->score<<endl;
p=p->next;
}
}
/*******************************************************
功能描述:将学生成绩等信息由键盘输入,并判断是否重复输入
输入参数:学生姓名、学号、科目、成绩
输出参数:无
*******************************************************/
int StuIm(Student *L,Student *p)
{
Student *Opinion=(Student *)malloc(sizeof(Student)); //用来判断输入节点中学生学号是否有重复
Opinion=L->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;
}
/*******************************************
功能描述:通过选择,由键盘输入学生成绩等信息
输入参数:1、学生成绩等信息
输出参数:无
*******************************************/
void StuInHand(Student *L)//手动输入函数,由输入函数调用
{
if(L->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(L,p);
if(L->next==NULL)
{
L->next=p;
point=p;
}
else
{
point->next=p;
point=p;
}
cout<<"是否继续: 1 是,2 否 ";
cin>>s;
}
}
else
{
cout<<"退出后再进行下一步操作!";
system("cls");
}
}
- 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;
/*********************************************
功能描述:main函数中调用主界面,并显示用户界面
输入参数:数字(0-6)
输出参数:各操作
*********************************************/
int main()
{
system("color 1F");
Welcome();
return 0;
}
void Welcome()
{
int num;
Student *L;
L=(Student *)malloc(sizeof(Student));
L->next=NULL;
while(num!=6)
{
system("cls");
cout<<" 欢迎使用学生成绩管理系统 "<<endl;
cout<<" * * * * * * * * * * * * ** "<<endl;
cout<<" *请输入你要使用的业务代码* "<<endl;
cout<<" * * * * * * * * * * * * * * * * * ** * * * * * "<<endl;
cout<<" * 1 输入学生成绩信息 * "<<endl;
cout<<" * 2 查找学生成绩信息 * "<<endl;
cout<<" * 3 修改学生成绩信息 * "<<endl;
cout<<" * 4 删除学生成绩信息 * "<<endl;
cout<<" * 5 储存学生成绩信息 * "<<endl;
cout<<" * * * * * * * * * * * * * * * * * ** * * * * * "<<endl;
cin>>num;
switch(num)
{
case 1:
StuIn(L); //输入学生信息
break;
case 2:
StuSelect(L); //查找学生信息
break;
case 3:
StuAlter(L); //修改学生信息
break;
case 4:
StuDelect(L); //删除学生信息
break;
case 5:
StuSave(L); //保存学生信息
break;
default:
cout<<"输入正确地业务序号(⊙o⊙)"<<endl;
break;
}
}
save.cpp -
- }#include<stdio.h>
#include<windows.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
/***********************************************
功能描述:调用输入函数,由文件输入学生成绩等信息
输入参数:文件路径
输出参数:无
*****************************/
void StuSave(Student *L)
{
FILE *fp;
char filename[10];
cout<<"请输入存储的文件名(例如:C:\text.txt):";
cin>>filename;
Student *p=(Student *)malloc(sizeof(Student));
p=L->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);
}
- studnent.cpp
-
- #include<stdio.h>
#include<windows.h>
#include<iostream>
#include<malloc.h>
#include<string.h>
#include"student.h"
using namespace std;
void StuInHand(Student *L); //手动输入,由输入函数调用
void StuIn(Student *); //输入函数,由主函数调用
/*************************************
功能描述:调用函数,输入学生成绩等信息
输入参数:1、2、3
输出参数:无
*************************************/
void StuIn(Student *L) //输入函数,由主函数调用
{
int num;
system("cls");
while(num!=2)
{
cout<<" *******************请选择输入方式******************"<<endl;
cout<<" ** 1 输入 2 退出 **"<<endl;
cout<<" ***************************************************"<<endl;
cin>>num;
switch(num)
{
case 1:
StuInHand(L); //调用手动输入函数
break;
case 2:
system("cls"); //清屏,重新回到Wlcome
Welcome; //退出输入界面,返回Welcome
break;
default:
cout<<"输入正确的业务代码!";
break;
}
}
}
/*****************************************
功能描述:调用查找函数,输出学生成绩等信息
输入参数:1、2、3
输出参数:学生成绩等信息
*****************************************/
void StuSelect(Student *L)
{
int s=1; //判断函数是否继续进行
int num;
while(s!=2)
{
cout<<" ***********************查找系统********************"<<endl;
cout<<" *** 1 显示全部学生信息 2 学号查找 3 退出 ****"<<endl;
cout<<" ***************************************************"<<endl;
cin>>num;
switch(num)
{
case 1:
StuFindErg(L);
break;
case 2:
StuFindNum(L);
break;
default:
s=2;
break;
}
}
}
/*********************************
功能描述:按学号修改学生成绩等信息
输入函数:学生学号
输出函数:无
*********************************/
void StuAlter(Student *L)
{
int num;
cout<<"输入想要查找学生的学生号:";
cin>>num;
char Sub[10];
cout<<"输入想要查找科目:";
cin>>Sub;
Student *p=(Student *)malloc(sizeof(Student));
p=L->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 StuDelect(Student *L)
{
int num;
char sub[10];
cout<<"输入想要删除学生的学生号:";
cin>>num;
cout<<"输入想要删除科目:";
cin>>sub;
Student *p=(Student *)malloc(sizeof(Student));
p->next=L->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==L->next->num&&!strcmp(sub,L->next->subject))
{
L->next=L->next->next;
}
else
{
p->next=p->next->next;
}
i=2;
cout<<"删除成功!"<<endl;
break;
}
p=p->next;
}
if(i==1)
cout<<"没有该学生信息!"<<endl;
}
- student.h
-
- #ifndef TEST_H
#define TEST_H
struct Student
{
char name[10]; //姓名
char subject[10]; //科目
int num; //学号
int score; //分数
Student *next;
};
void Welcome(); //欢迎界面函数,由main函数调用
void StuSave(Student *); //存储函数,由欢迎界面函数调用
void StuSelect(Student *); //查找函数,由欢迎界面函数调用
void StuAlter(Student *); //修改函数,由欢迎界面函数调用
void StuDelect(Student *); //删除函数,由欢迎界面函数调用
void StuFindErg(Student *L); //遍历函数,由查找函数调用
void StuFindNum(Student *L); //按学号查找函数,由查找函数调用
void StuOut(Student *L); //输出函数
int StuIm(Student *L,Student *p);//输入函数
void StuIn(Student *); //输入函数,由欢迎界面函数调用
#endif