《C++语言程序设计》课程设计 学生通讯信息管理系统
《C++语言程序设计》课程设计 学生通讯信息管理系统
目 录
一、引言
I
1
二、课程设计目的及要求
1
1、目的
1
2、具体要求
2
三、课程设计具体实现
2
1、总体设计
3
2、详细设计
15
3、 调试及问题解决
16
四、心得体会
16
五、源代码(加注释)
《C++语言程序设计》课程设计
学生通讯信息管理系统
一、引言
《C++语言程序设计》介绍了一种目前流行的面向对象程序设计语言,是学习数据结构、操作系统等计算机课程的基础,是学习可视化程序设计软件的语言基础,是计算机专业及许多工科专业学生应掌握的一门计算机语言课程。主要讲授C++数据类型和表达式、算法的基本控制结构、函数、类、数据和指针等,其中算法的基本控制结构是C++编程的基础,是课程的重点和难点。为了让学生能融会贯通各
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
,增强对C++语言程序设计的理解,掌握面向对象编程的过程,课程设计以面向对象的程序设计为框架结构,用所学的C++基本编写程序。考虑到学生的基础,本次课程设计的题目是“学生通讯系统的设计与实现”,通过该课程设计,希望学生在理论与实践相结合的基础上,加深对计算机基本语法的理解和运用,进一步理解面向对象程序设计的思想和在Visual C++ 6.0中具体方法和实现步骤,从而提高C++编程能力和自行分析、设计和解决问题的能力。
二、课程设计目的及要求
1、目的
巩固和深刻理解“C++语言程序设计”课程所讲解的C++基本语句和面向对象的思想。
掌握Visual C++ 6.0面向对象程序设计的具体步骤。
培养学生独立工作和创新思维的能力,取得设计与调试的实践
经验
班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验
。
提高和加强计算机应用及软件开发能力。
2、具体要求
学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。现要求编写程序来完成如下功能:
1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。
2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。
3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。
4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。
5、在屏幕中输出全部学生信息:输出链表的每一个内容,按照一定
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
进行显示。
6、修改学生信息:按学号、姓名修改查询到的位置对应的学生信息。
7、统计学生信息学生信息:按性别、班级统计查询到的位置对应的学生信息。
8、保存并退出:告知结束运行系统。向文件写入学生通讯录信息,把链表中的结点都保存到文件中。
通过系统分析和实现,掌握简单软件开发的一般过程。
学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,撰写课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
。
三、课程设计具体实现
1、总体设计
图1:总体设计图
2、详细设计
图2:主界面
图3:新建学生通讯录
//新建学生通讯录
//功能:采用头插入的方式建链表,并询问是否保存到文件
//参数:无
//返回值:无
void txl::Creat()
{
cout<<"你想要建立多少个学生的通讯录:";
int i,n;
char mf[1];
cin>>n;
cout<<"\n************录入工作开**************\n"<
next=head; //头插入建链表
head=currptr;
}
cout<>k;
student *p=head,*q=NULL,*t=head;
while(t)
{
t=t->next;
n++;
}
if(k>n+1||k<1) //不存在此位置,不能存入
{
cout<<"此位置不合法";
}
else{
currptr=new student;
//输入代码略
cin>>currptr->data.address;
if(k==1) //建链表
{
currptr->next=head;
head=currptr;
}
else
{
for(int i=1;inext;
}
q->next=currptr;
currptr->next=p;
}
}
}
图5:在通讯录删除学生信息
//在通讯录删除学生信息
// 功能:删除结点,并询问是否从文件中删除(采用覆盖原有文件的形式)
// 参数:无
//返回值:无
void txl::Delete()
{
if(head!=NULL) //链表存在时就做删除操作
{
int k,n=0;
student *cu=head;
student *p=head,*q=head->next,*t=head;
cout<<"你可以通过以下方式删除:"<>ch;
while(ch!='1'&&ch!='2')
{ }//判断输入是否符合
if(ch=='1')
{
char num[20];
cout<<"请输入你要的学号:";
cin>>num;
while(cu!=NULL)
{
n++;
if(strcmp(cu->data.number,num)==0) //判断是否是所查学号
{
break;
}
cu=cu->next;
}
if(cu==NULL)
cout<<"不存在这个学号!"<next;
else
{
for(int i=1;inext;
}
if(q==NULL)
p=NULL;
else
p->next=q->next;
}
cout<<"删除成功!"<data.number<data.name<data.birthday<data.sex<data.class_num<data.telephone<data.dom<data.address<next;
}
cout<next,*t=head;
cout<<"你可以通过以下方式修改:"<>ch;
while(ch!='1'&&ch!='2')
{
cout<>ch;
}//判断输入是否符合
if(ch=='1')
{
char num[20];
cout<<"请输入你要的学号:";
cin>>num;
while(cu!=NULL)
{
if(strcmp(cu->data.number,num)==0) //判断是否是所查学号
{
break;
}
cu=cu->next;
}
if(cu==NULL)
cout<<"不存在这个学号!"<>ch;
while(ch!='1'&&ch!='2')
{
cout<>ch;
}
student *cu=head;
if(ch=='1') //按性别统计
{
cout<<"你要统计的性别是[m/f]:";
char sexs[1];
int n=0;
cin>>sexs;
if(cu!=NULL)
{
cout<<"你要找的学生信息为:"<data.sex,sexs)==0) //判断是否是所查性别
{
n++;
//输出学生信息
}
cu=cu->next;
}
if(n==0)
cout<<"该班不存在学生!"<>cls;
if(cu!=NULL)
{
cout<<"你要找的学生信息为:"<data.class_num,cls)==0) //判断是否是所查班级
{
n++;
//输出学生信息
}
cu=cu->next;
}
if(n==0)
cout<<"该班不存在学生!"<>Y_N;
while(Y_N!='Y'&&Y_N!='y'&&Y_N!='N'&&Y_N!='n') //使输入为yes或no
{
cout<<"请输入 'Y' 或 'N':";
cin>>Y_N;
}
if(Y_N=='Y'||Y_N=='y') //保存
{
while(s)
{
while(fop.write((char *)&s->data,sizeof(s->data)))
{
s=s->next;
flush(cout);
}
}
cout<<"保存成功!"<data,sizeof(currptr->data)))
{
currptr->next=head;
head=currptr;
currptr=new student;
}
fip.close();
delete currptr;
}
//在通讯录中查询学生信息
// 功能:按姓名或学号的形式查找
// 参数:无
//返回值:无
void txl::Search()
{
cout<<"你可以通过以下方式查询:"<>ch;
cout<<"你要查询的信息是:";
while(ch!='1'&&ch!='2')
{
cout<>ch;
}
student *cu=head;
if(ch=='1') //按学号查询
{
char num[20];
cin>>num;
while(cu!=NULL)
{
if(strcmp(cu->data.number,num)==0) //判断是否是所查学号
{
cout<<"你要找的学生信息为:"<next;
}
if(cu==NULL)
cout<<"不存在这个学生!"<>na;
while(cu!=NULL)
{
if(strcmp(cu->data.name,na)==0) //判断是否是所查姓名
{
cout<<"你要找的学生信息为:"<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "
<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<next;
}
if(cu==NULL) //查询不到
cout<<"不存在这个学生!"<
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
本上的知识是不够的,还要有较强的自我钻研和实践能力。借助网络,学习更多比较新的和比较前端的知识,因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握更多的知识。
五、源代码(加注释)
#include
#include
#include
#include
using namespace std;
struct DataType //定义所有信息
{
char number[20]; //学号
char name[20]; //姓名
char birthday[20]; //生日
char sex[1]; //性别
char class_num[20]; //班级
char telephone[12]; //电话
char dom[10]; //宿舍
char address[20]; //地址
};
struct student //定义学生信息
{
DataType data;
student *next;
};
class txl
{
private:
student *head; //头指针
student *currptr; //当前指针
public:
txl();
~txl();
void Creat(); //新建学生通讯录
void Insert(); //向学生通讯录插入学生信息
void Delete(); //在通讯录删除学生信息
void WriteFile(); //从文件中读取通讯录的信息
void ReadFile(); //向文件写入学生通讯录信息
void Search(); //在通讯录中查询学生信息
void Display(); //在屏幕中输出全部学生信息
void Revise(); //修改通讯录中学生信息
void Count(); //在屏幕中按照统计输出学生信息
void Exit(); //退出
};
txl::txl() //构造函数
{
head=currptr=NULL;
};
txl::~txl() //析构函数
{
student *temp=head; //释放空间
while(temp)
{
delete temp;
}
}
//新建学生通讯录
// 功能:采用头插入的方式建链表,并询问是否保存到文件
// 参数:无
//返回值:无
void txl::Creat()
{
cout<<"你想要建立多少个学生的通讯录:";
int i,n;
char mf[1];
cin>>n;
cout<<"\n************录入工作开始**************\n"<>currptr->data.number;
cout<<"请输入第"<>currptr->data.name;
cout<<"请输入第"<>currptr->data.birthday;
cout<<"请输入第"<>*mf;
while((*mf)!='m' && (*mf)!='f') //使输入为男女
{
cout<<"输入格式有误,请输入'm/f'。"<>*mf;
}
if((*mf)=='m'||(*mf)=='f') //保存
{
*(currptr->data.sex)=(*mf);
}
cout<<"请输入第"<>currptr->data.class_num;
cout<<"请输入第"<>currptr->data.telephone;
cout<<"请输入第"<>currptr->data.dom;
cout<<"请输入第"<>currptr->data.address;
cout<<"\n************华丽的分割线**************\n"<next=head; //头插入建链表
head=currptr;
}
cout<>k;
student *p=head,*q=NULL,*t=head;
while(t)
{
t=t->next;
n++;
}
if(k>n+1||k<1) //不存在此位置,不能存入
{
cout<<"此位置不合法";
}
else{
currptr=new student;
cout<<"请输入你要插入的学生的信息!"<>currptr->data.number;
cout<<"请输入学生的姓名:";
cin>>currptr->data.name;
cout<<"请输入学生的生日:";
cin>>currptr->data.birthday;
cout<<"请输入学生的性别[m/f]:";
cin>>*mf;
while((*mf)!='m' && (*mf)!='f') //使输入为男女
{
cout<<"输入格式有误,请输入'm/f'。"<>*mf;
}
if((*mf)=='m'||(*mf)=='f') //保存
{
*(currptr->data.sex)=(*mf);
}
cout<<"请输入学生的班级:";
cin>>currptr->data.class_num;
cout<<"请输入学生的电话:";
cin>>currptr->data.telephone;
cout<<"请输入学生的宿舍:";
cin>>currptr->data.dom;
cout<<"请输入学生的地址:";
cin>>currptr->data.address;
if(k==1) //建链表
{
currptr->next=head;
head=currptr;
}
else
{
for(int i=1;inext;
}
q->next=currptr;
currptr->next=p;
}
}
}
//在通讯录删除学生信息
// 功能:删除结点,并询问是否从文件中删除(采用覆盖原有文件的形式)
// 参数:无
//返回值:无
void txl::Delete()
{
if(head!=NULL) //链表存在时就做删除操作
{
int k,n=0;
student *cu=head;
student *p=head,*q=head->next,*t=head;
cout<<"你可以通过以下方式删除:"<>ch;
while(ch!='1'&&ch!='2')
{
cout<>ch;
}//判断输入是否符合
if(ch=='1')
{
char num[20];
cout<<"请输入你要的学号:";
cin>>num;
while(cu!=NULL)
{
n++;
if(strcmp(cu->data.number,num)==0) //判断是否是所查学号
{
break;
}
cu=cu->next;
}
if(cu==NULL)
cout<<"不存在这个学号!"<next;
else
{
for(int i=1;inext;
}
if(q==NULL)
p=NULL;
else
p->next=q->next;
}
cout<<"删除成功!"<>nam;
while(cu!=NULL)
{
n++;
if(strcmp(cu->data.name,nam)==0) //判断是否是所查姓名
{
break;
}
cu=cu->next;
}
if(cu==NULL)
cout<<"不存在这个姓名!未能成功删除!"<next;
else
{
for(int i=1;inext;
}
if(q==NULL)
p=NULL;
else
p->next=q->next;
}
cout<<"删除成功!"<>Y_N;
while(Y_N!='Y'&&Y_N!='y'&&Y_N!='N'&&Y_N!='n') //使输入为yes或no
{
cout<<"请输入 'Y' 或 'N':";
cin>>Y_N;
}
if(Y_N=='Y'||Y_N=='y') //保存
{
while(s)
{
while(fop.write((char *)&s->data,sizeof(s->data)))
{
s=s->next;
flush(cout);
}
}
cout<<"保存成功!"<data,sizeof(currptr->data)))
{
currptr->next=head;
head=currptr;
currptr=new student;
}
fip.close();
delete currptr;
}
//在通讯录中查询学生信息
// 功能:按姓名或学号的形式查找
// 参数:无
//返回值:无
void txl::Search()
{
cout<<"你可以通过以下方式查询:"<>ch;
cout<<"你要查询的信息是:";
while(ch!='1'&&ch!='2')
{
cout<>ch;
}
student *cu=head;
if(ch=='1') //按学号查询
{
char num[20];
cin>>num;
while(cu!=NULL)
{
if(strcmp(cu->data.number,num)==0) //判断是否是所查学号
{
cout<<"你要找的学生信息为:"<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "
<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<next;
}
if(cu==NULL)
cout<<"不存在这个学生!"<>na;
while(cu!=NULL)
{
if(strcmp(cu->data.name,na)==0) //判断是否是所查姓名
{
cout<<"你要找的学生信息为:"<data.number<<" "<data.name<<" "<data.birthday<<" "<data.sex<<" "
<data.class_num<<" "<data.telephone<<" "<data.dom<<" "<data.address<next;
}
if(cu==NULL) //查询不到
cout<<"不存在这个学生!"<data.number<data.name<data.birthday<data.sex<data.class_num<data.telephone<data.dom