资源描述
. .
C++实习报告
一、课程设计目的
1.C++课程设计,使我们能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,
2.要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。
3.通过课程设计掌握《C++语言程序设计》的编程思想,为后续课程打下基础。
4.培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。
二、课程设计的容
1、课程设计的题目及简介
文本界面为
管理员
1.输入信息
2.保存信息
3.查询信息
4.修改并保存
5.显示全部
6.删除信息
7.退出系统
学生
1信息查询
(1)输入
(2)输入学号
2退出系统
2、设计说明
总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体
结构设计合理。也可根据自己对题目的理解增加新的功能模块。
系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行
(1)首先,看题目要求,每一条记录包括一个学生的、性别、专业、出生日期、家庭住址、英语成绩。同时 ,应具备以下功能:1、输入功能:一次可以完成自定义学生人数的学生成绩记录的输入。
2.保存功能:对指定学生的成绩进行保存
3. 查询功能:选择某种方式并输入该成绩查询符合条件的学生成绩4、修改并保存功能:对指定学生的成绩进行修改保存。
5.显示功能:将以上功能操作后的学生成绩显示出来。
6、删除功能:对指定学生的成绩进行删除。
7. 退出主菜单。
3程序流程图
各功能模块的实现流程图:
1增加学生成绩
调用函数Node* Create()判断gg是否等于一如果是可创建链表输入相应的学生成绩如果不是则需要运用Insert(p)函数插入结点增加学生成绩的,并通过chundang(p)函数进行存档,具体流程如下图所示
判断以前是否存储了学生成绩是新增成绩
退出该功能,返回主菜单,继续选择
流程图
新增学生成绩
按提示:输入学个的各种成绩
按格式显示输入的学生成绩
2删除学生成绩
调用函数Node* Delete(Node* head , int num)
删除学生的成绩则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务
流程图
输入要删除学生成绩2
退出该功能,返回主菜单,继续选择
输入要删除成绩的编号
该生成绩已删除,显示其他同学的成绩
输出所有学生的成绩
3.导入学生成绩
打开存档文件ifstream Filein("out.txt");输出说存档的学生成绩
导入学生成绩
显示学生的成绩
退出该功能,返回主菜单,继续选择
4、学生成绩的搜索
调用函数Node* sousuo(Node* head , char na[20]) ,按学生的进行搜索
退出该功能,返回主菜单,继续选择
输出所以查询的学生成绩
按照提示输入学生的XX进行搜索
搜索学生成绩 4
流程图:
5成绩的统计
调用函数Node* tongji(Node* head) 运用一个for循环,将输入的相应的学生成绩用strcmp()函数与对应的数组进行比较,然后再进行统计
输出统计的成绩
统计所设定的专业人数和男女性别的人数,计算学生的年龄并统计
成绩的统计:5
退出该功能,返回主菜单,继续选择
。
6、按英语成绩进行排序:
调用函数Node* paixu(Node* head)完成排序功能
它的主要思想的:首先设置英语成绩的最大值100,最小值0(也可以使150或者其他)然后让输入的学生成绩英语成绩一次比较进行比较,(如果有相等的就输出排名1 ,然后排名加1),否则最大值减1,然后再次进行比较( 如果等于99且上次没有等于100的,就输出排名1,然后排名加1,如果上次有等于100的排名为2),如果没有与99相等的.,则继续循环……
流程图:
输出排序之后的学生成绩
对英语成绩进行排序
退出该功能,返回主菜单,继续选择
按学生成绩进行排序5
总功能模块图:
2、输入要删除的学生的编号,删除学生成绩。
1输入学生的成绩:XX、性别、专业、出生日期、家庭地址、英语成绩
菜单
1. 新增学生成绩
2. 删除学生成绩
3. 导入学生成绩
4. 学生成绩搜索
5. 学生成绩统计
6. 学生成绩保存
7. 退出
5统计各种专业、男女、相应年龄的人数
7保存学生成绩:提示保存成功
4、输入你要查找你学生XX
3、输出学生的编号、XX、性别、专业、出生日期、家庭地址、英语成绩
7、退出系统
学生管理系统
功能模块图
各功能显示效果模块图:
学生和管理员输入
管理员进入界面后
增加学生成绩和导入学生成绩
保存学生成绩
学生进入界面后,按学生查询并输出成绩
4、程序清单
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#define password 123456;
//people.h
class stupeople //人员类 基类
{
public:
int getage(); //年龄
char* getname(); //
char* getsex(); //性别
void display(); //输出信息
void peosearch(); //查询信息
void peosave(); //保存信息
private:
char name[20];
char sex[4];
int age;
};
//student.h
class stustudent:public stupeople
{
public:
int getnumber();//学号
double getcscore();//语文
double getmscore();//高数
double getescore();//外语
double getpscore();//C++
double getdscore();//数据库
double getsscore();//体育
double getave();//平均成绩
double getsum();//总成绩
void stuenterinfo();//输入信息
void display();//输出信息
void stusearch();//查找信息
void stusave();//保存信息
void stuload();//加载信息
private:
int number;
double cscore;
double mscore;
double escore;
double dscore;
double pscore;
double sscore;
double sumscore;
double avescore;
};
//admin.h
class stuadmin:public stustudent //派生类 管理员类
{
public:
void change(); //更改信息
void del(); //删除信息
private:
int newage;
int newnumber;
char newsex;
char newname;
char changename[20];
double newcscore;
double newmscore;
double newescore;
double newdscore;
double newpscore;
double newsscore;
double newsumscore;
double newavescore;
};
int i,j,p[6];
char A,B,x;
stuadmin sa;
struct studentinfo
{
int number;
char name[20];
char sex[4];
int age ;
double cscore;
double mscore;
double escore;
double pscore;
double dscore;
double sscore;
double sumscore;
double avescore;
int flag;
}s;
//人员类的相关函数的定义
int stupeople::getage()
{
return age;
}
char* stupeople::getname()
{
return name;
}
char* stupeople::getsex()
{
return sex;
}
//学生类的相关函数的定义
int stustudent::getnumber()
{
return number;
}
double stustudent::getcscore()
{
return cscore;
}
double stustudent::getmscore()
{
return mscore;
}
double stustudent::getescore()
{
return escore;
}
double stustudent::getpscore()
{
return pscore;
}
double stustudent::getdscore()
{
return dscore;
}
double stustudent::getsscore()
{
return sscore;
}
double stustudent::getsum()
{
sumscore=cscore+mscore+escore+pscore+dscore+sscore;
return sumscore;
}
double stustudent::getave()//平均成绩
{
avescore=sumscore/6;
return avescore;
}
void stustudent::stuenterinfo()//输入信息
{
cout<<"请输入学号:";
cin>>s.number;
cout<<endl;
cout<<"请输入:";
cin>>s.name;
cout<<endl;
cout<<"请输入性别:";
cin>>s.sex;
cout<<endl;
cout<<"请输入年龄:";
cin>>s.age;
cout<<endl;
cout<<"请输入各科成绩:"<<endl;
cout<<"语文:";
cin>>s.cscore;
cout<<endl;
cout<<"高数:";
cin>>s.mscore;
cout<<endl;
cout<<"外语:";
cin>>s.escore;
cout<<endl;
cout<<"C++:";
cin>>s.pscore;
cout<<endl;
cout<<"数据库:";
cin>>s.dscore;
cout<<endl;
cout<<"体育:";
cin>>s.sscore;
cout<<endl;
cout<<"信息输入成功!"<<endl;
s.flag=0;
s.sumscore= s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;
s.avescore=s.sumscore/6;
}
void stustudent::stusave()//保存信息
{
ofstream out("information.txt",ios::app|ios::binary);
if(out)
{
out.write((char*)&s, sizeof s);
cout<<"信息保存成功!"<<endl;
}
else cout<<"文本为空!"<<endl;
out.close();
}
void stustudent::display()//显示信息
{
ifstream ifile;
ifile.open("information.txt",ios::binary);
if(ifile)
{
while(ifile.read((char*)&s,sizeof s)!=0)
{
if(s.flag==0)
{
cout<<"学号:"<<s.number<<":"<<s.name<<"性别:"<<s.sex<<"年龄:"<<s.age<<"语文:"<<
s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C++:"<<s.pscore<<"数据库:"<<s.dscore
<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;
}
}
}
else
cout<<"文本为空!"<<endl;
ifile.close();
}
void stustudent::stusearch()//查询信息
{
char stuname[20];
int e=0;
cout<<"请输入您要查找的:";
cin>>stuname;
ifstream ifile;
ifile.open("information.txt",ios::binary);
if(ifile)
{
while(ifile.read((char*)&s,sizeof s)!=0)
{
if((strcmp(stuname,s.name)==0)&& s.flag==0)
{ cout<<"学号:"<<s.number<<":"<<s.name<<"性别:"<<s.sex<<"年龄:"<<s.age
<<"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C++:"<<s.pscore<<
"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;
e=1;
break;
}
}
}
else cout<<"文本未建立!"<<endl;
ifile.close();
if(e==0)
cout<<"没有相关信息!"<<endl;
}
//管理员类的相关函数的定义
void stuadmin::change()
{
char changename[20];
int e;
cout<<"请输入您要修改的:";
cin>>changename;
fstream ifile("information.txt",ios::in|ios::out);
while(ifile.read((char*)&s,sizeof s)!=0)
{
if((strcmp(changename,s.name)==0)&&s.flag==0)
{
cout<<"学号:"<<s.number<<":"<<s.name<<"性别:"<<s.sex<<"年龄:"<<s.age<<
"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C++:"<<s.pscore
<<"数据库:"<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;
e=1;
break;
}
}
if(e==0)
cout<<"没有相关信息!"<<endl;
if(e==1)
{
int choose;
cout<<"\t请选择修改方式:"<<endl<<endl;
cout<<"1.修改学号:"<<endl;
cout<<"2.修改:"<<endl;
cout<<"3.修改性别:"<<endl;
cout<<"4.修改年龄:"<<endl;
cout<<"5.修改语文成绩:"<<endl;
cout<<"6.修改高数成绩:"<<endl;
cout<<"7.修改外语成绩:"<<endl;
cout<<"8.修改C++成绩:"<<endl;
cout<<"9.修改数据库成绩:"<<endl;
cout<<"10.修改体育成绩:"<<endl;
cout<<endl;
cout<<"请选择:"<<endl;
cin>>choose;
switch(choose)
{
case 1:
cout<<"请输入学生学号:"<<endl;
cin>>s.number;
break;
case 2:
cout<<"请输入学生:"<<endl;
cin>>s.name;
break;
case 3:
cout<<"请输入学生性别<m男 n女>:"<<endl;
cin>>s.sex;
break;
case 4:
cout<<"请输入学生年龄:"<<endl;
cin>>s.age;
break;
case 5:
cout<<"请输入学生语文成绩:"<<endl;
cin>>s.cscore;
break;
case 6:
cout<<"请输入学生高数成绩:"<<endl;
cin>>s.mscore;
break;
case 7:
cout<<"请输入学生外语成绩:"<<endl;
cin>>s.escore;
break;
case 8:
cout<<"请输入学生C++成绩:"<<endl;
cin>>s.pscore;
break;
case 9:
cout<<"请输入数据库成绩:"<<endl;
cin>>s.dscore;
break;
case 10:
cout<<"请输入学生体育成绩:"<<endl;
cin>>s.sscore;
break;
/*default:
cout<<"\t输入错误,返回主菜单!"<<endl;
adminwele();*/
}
cout<<"信息输入成功!"<<endl;
s.flag=0;
s.sumscore= s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;
s.avescore=s.sumscore/6;
ifile.seekp(-(sizeof s),ios::cur);
ifile.write((char*)&s,sizeof s);
cout<<"信息已修改并保存!"<<endl;
}
ifile.close();
}
void stuadmin::del()//删除信息
{
char delname[20];
int e=0;
cout<<"请输入您要删除的学生:"<<endl;
cin>>delname;
fstream ifile;
ifile.open("information.txt",ios::in|ios::out);
while(ifile.read((char*)&s,sizeof s)!=0)
{
if((strcmp(delname,s.name)==0)&&s.flag==0)
{ cout<<"学号:"<<s.number<<":"<<s.name<<"性别:"<<s.sex<<"年龄:"<<s.age<<
"语文:"<<s.cscore<<"高数:"<<s.mscore<<"外语:"<<s.escore<<"C++:"<<s.pscore<<"数据库:"
<<s.dscore<<"体育:"<<s.sscore<<"总分:"<<s.sumscore<<"平均分:"<<s.avescore<<endl;
e=1;
break;
}
}
if(e==0)
cout<<"没有相关信息!"<<endl;
if(e==1)
{
s.flag=1;
ifile.seekp(-(sizeof s),ios::cur);
ifile.write((char*)&s,sizeof s);
cout<<"信息删除成功!"<<endl;
}
ifile.close();
}
//欢迎界面
void studentwele()//学生欢迎界面
{
cout<<"********************************************************************************"<<endl;
cout<<"****************************欢迎使用学生信息管理系统****************************"<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"\t\t 1.查询信息 \t\t 2.退出系统"<<endl;
cout<<"********************************************************************************"<<endl;
do
{
cout<<"请输入您要进行的操作编号(1或2):";
cin>>i;
cout<<endl;
if(i<1||i>2)
cout<<"对不起,请输入1或2这两个选择数字!"<<endl;
}while (i<1||i>2);
switch(i)
{
case 1: sa.stusearch();
studentwele();
break;
case 2:exit(0);
break;
}
}
void adminwele()//管理员欢迎界面
{
cout<<"********************************************************************************"<<endl;
cout<<"****************************欢迎使用学生信息管理系统****************************"<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"\t1.输入信息 \t2.保存信息 \t3.查询信息 \t4.修改并保存"<<endl;
cout<<"\t5.显示全部 \t6.删除信息 \t7.退出系统 "<<endl;
cout<<"********************************************************************************"<<endl;
do
{
cout<<"请输入您要进行的操作编号(1--7):";
cin>>j;
cout<<endl;
if(j<1||j>7)
cout<<"对不起,请输入1-7这几个选择数字!"<<endl;
} while(j<1||j>7);
switch(j)
{
case 1: sa.stuenterinfo();
adminwele();
break;
case 2: sa.stusave();
adminwele();
break;
case 3: sa.stusearch();
adminwele();
break;
case 4: sa.change();
adminwele();
break;
case 5: sa.display();
adminwele();
break;
case 6: sa.del();
adminwele();
break;
case 7:exit(0);
break;
}
}
void main()//主函数
{
do
{
cout<<"********************************************************************************"<<endl;
cout<<"****************************欢迎使用学生信息管理系统****************************"<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"请选择您的登陆身份:"<<endl;
cout<<"\t\t A 学生 \t\t B管理员"<<endl;
cout<<"选择(A或B):";
cin>>x;
if (x=='A')
{
studentwele();
}
else if (x=='B')
{
cout<<"......正在验证您的身份,请输入指令(6位):";
cin>>p[6];
if(p[6]==123456)
{
cout<<"身份验证成功!"<<endl;
adminwele();
}
else
{
cout<<"您输入的指令错误!";
cout<<"系统将自动返回....."<<endl;
main();
}
}
else if (x!='A'&&x!='B')
{
cout<<"输入错误!\t系统将返回主界面....."<<endl;
cout<<endl;
}
} while(x!='A'&&x!='B');
}
- 优选
展开阅读全文