新生信息统计课程设计实验报告
C++/C课程设计
|
课程设计报告
1、课程设计的题目及简介
此课程设计题目为课程设计。
设计题目为:新生基本信息统计软件
简介:此新生基本信息统计软件可以实现对学生成绩及基本信息进行创建、添加、删除,对已经完成的学生信息进行检索、排序、统计并保存至文件中。
2、设计说明
1、界面:
用if else选择语句组合成一个具有选择性的结构,从而实现输入相应的数字来达成与之对应的功能;用while循环实现在此调出目录知道输入0退出为止。
2、创建:
定义一个对象调用构造函数,利用构造函数读取文件,创建链表,并将文件放入链表中。链表的每个节点都是StuListLink类的对象。
3、 新增学生信息:
给尾节点赋值,并移向下一个节点。
4、 显示学生信息:
对每个节点调用输出函数,使其显示出学生的基本信息。
5、 删除学生信息:
遍历链表,输入想删除学生信息的位置,若输入的位置为假,继续向下一个节点遍历,直到与输入的位置相符合。
6、 搜索学生信息:
输入想要查看学生的姓名,如果有与之相匹配的就输出,如果没有则输出“没有该生信息”。
7、 统计学生信息:
通过学生的性别分别进行统计并输出。
8、 按英语成绩排序:
利用冒泡排序。
9、 退出程序:
输入与退出程序相匹配的数字即可。
3、流程图
主函数包括的功能函数 1、 新增函数 2、删除函数 3、导入函数 4、搜索函数 5、统计函数 6、排序函数 7、保存函数 8、退出系统 |
添加学生信息 |
删除学生信息 |
导入学生信息 |
搜索学生信息 |
统计学生信息 |
保存学生信息 |
退出系统 |
输入删除的位置 |
输入相应的姓名 |
保存所有的学生信息 |
成功退出该系统 |
分别统计男女人数和总人数 |
导入理想的信息 |
输入添加的位置 |
4、程序清单
#include<iostream>
#include<string.h>
#include<fstream>
#include<iomanip>
#include <stdlib.h>
using namespace std;
typedef struct student
{
charname[200];
charsex[20];
charzy[200];
int year;
int month;
int day;
charid[200];
int yy;
structstudent *next;
}student, *StuList;;
class StuListLink
{
private:
struct student *head,*p,*q,*data;
public:
StuListLink();
student*selve();//建立链表
student*xz(student *head);//新增函数
student*sc(student *head);//删除函数
voidshu(student *head);//输出函数
voidss(student *head);//搜索函数
voidtj(student *head);//统计函数
voidpx(student *head);//英语成绩排列
voidbc(student *head);//保存函数
voiddr(student *head);//导入函数
};
StuListLink::StuListLink()
{
}
student *StuListLink::selve()
{
student*p=(student *)malloc(sizeof(student));
head=(student*)malloc(sizeof(student));
head->next=p;
cout<<"--------------------"<<endl;
cout<<"请输入学生的姓名:"<<endl;
cin>>p->name;
cout<<"请输入学生的性别:"<<endl;
cin>>p->sex;
cout<<"请输入学生的专业:"<<endl;
cin>>p->zy;
cout<<"请输入学生的出生日期:"<<endl;
cin>>p->year;
cin>>p->month;
cin>>p->day;
cout<<"请输入学生的家庭地址:"<<endl;
cin>>p->id;
cout<<"请输入学生的英语入学成绩:"<<endl;
cin>>p->yy;
p->next=NULL;
int i,n=1;
while(1)
{
cout<<"是否继续执行此操作(请输入0 or 1)" <<endl;
cin>>i;
if(i==0)
break;
elseif(i==1)
p->next=(student *)malloc(sizeof(student));
p=p->next;
cout<<"请输入学生的姓名:"<<endl;
cin>>p->name;
cout<<"请输入学生的性别:"<<endl;
cin>>p->sex;
cout<<"请输入学生的专业:"<<endl;
cin>>p->zy;
cout<<"请输入学生的出生日期:"<<endl;
cin>>p->year;
cin>>p->month;
cin>>p->day;
cout<<"请输入学生的家庭地址:"<<endl;
cin>>p->id;
cout<<"请输入学生的英语入学成绩:"<<endl;
cin>>p->yy;
n++;
}
cout<<"该班总人数为:"<<n<<endl;
return head;
}
student *StuListLink::xz(student *head)//新增
{
int m,i=1;
cout<<"输入位置"<<endl;
cin>>m;
cout<<"姓名-性别-专业-出生年月-家庭住址-英语成绩"<<endl;
student*data;
data=newstudent;
cin>>data->name>>data->sex >>data->zy >>data->year>>data->month >>data->day >>data->id>>data->yy ;
data->next=NULL;
p=head;
while(1)
{
q=p;
q=q->next;
if(m==i)
{
p->next=data;
data->next=q;
break;
}
i++;
p=p->next ;
}
return head;
}
student *StuListLink::sc(student *head)//删除
{
int i=1,m;
cout<<"删除学生的位置"<<endl;
cin>>m;
p=head;
while(1)
{
q=p;
q=q->next;
if(i==m)
{
p->next= q->next;
deleteq;
break;
}
i++;
p=p->next;
}
return head;
}
void StuListLink::shu(student *head)//输出
{
student*p=head;
if(head=NULL)
cout<<"链表为空"<<endl;
for(;p->next!=NULL,p=p->next;)
{
cout<<p->name<<" "<<p->sex <<" "<<p->zy<<" "<<p->year<<"-"<<p->month <<"-"<<p->day<<" "<<p->id <<" "<<p->yy<<endl;
}
}
void StuListLink::ss(student *head)//搜索
{
charname1[200];
charname2[200];
cout<<"输入查找学生的姓名"<<endl;
cin>>name1;
p=head->next;
while(1)
{
strcpy(name2,p->name);
if(strcmp(name1,name2)==0)
{
{
cout<<p->name<<" "<<p->sex <<" "<<p->zy<<" "<<p->year<<"-"<<p->month <<"-"<<p->day<<" "<<p->id <<" "<<p->yy<<endl;
break;
}
p=p->next;
}
else
cout<<"没有该生信息"<<endl;
break;
}
}
void StuListLink::tj(student *head)//统计
{
int m=0,n=0;
p=head->next;
charsex1[20]={"nan"},sex2[20];
for(;p!=NULL;p=p->next)
{
strcpy(sex2,p->sex);
if(strcmp(sex1,sex2)==0)
{
m++;
}
else
n++;
}
cout<<"男生有多少人:"<<m<<endl;
cout<<"女生有多少人:"<<n<<endl;
}
void StuListLink::px(student *head)//排序
{
int rr=100;
int ll=1;
while(rr>=0)
{
p=head->next;
while(p!=NULL)
{
if(p->yy==rr)
{
cout<<"序号-英语成绩-姓名"<<endl;
cout<<ll<<" "<<p->yy<<" "<<p->name<<endl;
ll++;
}
p=p->next;
}
rr--;
}
}
void StuListLink::bc(student *head)//保存
{
ofstreamoutfile("out.txt");
student *p;
p=head->next;
for(;p!=NULL;p=p->next)
{
outfile<<p->name<<" ";
outfile<<p->sex<<" ";
outfile<<p->zy<<" ";
outfile<<p->year<<"-";
outfile<<p->month<<"-";
outfile<<p->day<<" ";
outfile<<p->id<<" ";
outfile<<p->yy<<endl;
}
outfile.close();
}
void StuListLink::dr(student *head)//导入函数
{
structStudent
{
charname[200];
charsex[20];
charzy[200];
intyear;
intmonth;
intday;
charid[200];
int yy;
};
cout<<"输入导入文件的信息"<<endl;
Student*da=new Student;
cout<<"姓名-性别-专业-出生年月-家庭住址-英语成绩"<<endl;
cin>>da->name >>da->sex >>da->zy>>da->year >>da->month >>da->day >>da->id>>da->yy ;
ofstreamfilein("out.txt",ios::app);
while(1)
{
filein<<da->name<<" ";
filein<<da->sex<<" ";
filein<<da->zy<<" ";
filein<<da->year<<"-";
filein<<da->month<<"-";
filein<<da->day<<" ";
filein<<da->id<<" ";
filein<<da->yy<<endl;
break;
}
filein.close();
}
int main()
{
student*head;
cout<<"+---------------------------+"<<endl;
cout<<"| 欢迎使用学生信息管理系统 |"<<endl;
cout<<"+---------------------------+"<<endl;
cout<<"提示:为保证您的操作得到保存,请按正常顺序退出系统^_^"<<endl;
cout<<endl;
cout<<"\t\t您需要首先创建一个链表"<<endl;
StuListLinkstulistlink;
head=stulistlink.selve();
cout<<"\n\t\t\t--------------------------------"<<endl;
cout<<"\t\t\t+ 主菜单 |"<<endl;
cout<<"\t\t\t--------------------------------"<<endl;
cout<<"\t\t\t+ [1]----新增学生信息 |"<<endl;
cout<<"\t\t\t+ [2]----删除学生信息 |"<<endl;
cout<<"\t\t\t+ [3]----导入学生信息 |"<<endl;
cout<<"\t\t\t+ [4]----学生信息搜索 |"<<endl;
cout<<"\t\t\t+ [5]----学生信息统计 |"<<endl;
cout<<"\t\t\t+ [6]----按英语成绩排序 |"<<endl;
cout<<"\t\t + [7]----学生信息保存 |"<<endl;
cout<<"\t\t\t+ [8]----退出系统 |"<<endl;
int i;
cin>>i;
while(1)
{
if(i==1)
{
stulistlink.xz(head);
stulistlink.shu(head);
}
elseif(i==2)
{
stulistlink.sc(head);//删除
stulistlink.shu(head);
}
elseif(i==3)
{
stulistlink.dr(head);//导入
}
elseif(i==4)
{
stulistlink.ss(head);//搜索
}
elseif(i==5)
{
stulistlink.tj(head);//统计
stulistlink.shu(head);
}
elseif(i==6)
{
stulistlink.px(head);//排序
}
elseif(i==7)
{
stulistlink.bc(head);//保存
}
elseif(i==8) break;
cout<<"\n\t\t\t--------------------------------"<<endl;
cout<<"\t\t\t+ 主菜单 |"<<endl;
cout<<"\t\t\t--------------------------------"<<endl;
cout<<"\t\t\t+ [1]----新增学生信息 |"<<endl;
cout<<"\t\t\t+ [2]----删除学生信息 |"<<endl;
cout<<"\t\t\t+ [3]----导入学生信息 |"<<endl;
cout<<"\t\t\t+ [4]----学生信息搜索 |"<<endl;
cout<<"\t\t\t+ [5]----学生信息统计 |"<<endl;
cout<<"\t\t\t+ [6]----按英语成绩排序 |"<<endl;
cout<<"\t\t + [7]----学生信息保存 |"<<endl;
cout<<"\t\t\t+ [8]----退出系统 |"<<endl;
cin>>i;
}
return 0;
}