c++课程设计学生通讯录.docx
- 文档编号:3436652
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:28
- 大小:263.26KB
c++课程设计学生通讯录.docx
《c++课程设计学生通讯录.docx》由会员分享,可在线阅读,更多相关《c++课程设计学生通讯录.docx(28页珍藏版)》请在冰豆网上搜索。
c++课程设计学生通讯录
齐鲁工业大学
信息学院
课程设计报告
课程名称:
程序设计实践
题目名称:
学生通讯录
学生姓名:
仅作参考
专业班级:
指导教师:
1.课程设计目的与任务……………………………………………………1
2.课程设计内容……………………………………………………………1
2.1设计题目的主要内容………………………………………………1
2.1.1目的与要求………………………………………………1
2.1.2具体功能…………………………………………………1
2.1.3模块划分…………………………………………………1
2.2设计思想与程序构架……………………………………………2
2.2.1程序基本架构……………………………………………2
2.2.2核心子架构………………………………………………2
2.2.3主程序设计基本思路……………………………………4
2.3软件使用说明书……………………………………………………5
2.3.1主要功能…………………………………………………5
2.3.2使用方法…………………………………………………5
2.3.3软件优点…………………………………………………5
2.3.4使用对象及服务…………………………………………5
2.4程序测试及分析……………………………………………………5
2.4.1程序测试…………………………………………………5
2.4.2程序分……………………………………………………6
2.5设计总结……………………………………………………………6
3.附录…………………………………………………………………………7
3.1主要函数……………………………………………………………7
3.2数据对象……………………………………………………………7
4.主要参考资料………………………………………………………………7
一、课程设计目的与任务
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,通过接近实际项目的训练,锻炼的分析解决实际问题的能力。
在设计中,利用学到的编程知识,逐步学习面向对象程序设计中,类的设计,程序的编写,以及调试排错、测试等内容。
从实践中掌握程序设计的方法,提高学生面向应用的实践编程的能力。
二、课程设计内容
1设计题目的主要内容
(1)目的与要求
设计一个学生通讯录程序,具有增加数据、修改数据、删除数据、保存数据、查询数据以及简单预览功能。
这些功能通过函数实现,通过菜单选择调用函数来实现相应的功能。
数据成员包括学号、姓名、年龄、联系方式。
(2)具体功能
学生通讯录要求设计实现的功能包括增加数据、修改数据、删除数据、保存数据、查询数据以及简单预览功能。
增加数据:
添加新记录。
修改数据:
通过学号检索出数据,通过菜单选择修改姓名、修改年龄、修改联系方式。
删除数据:
通过学号检索出数据,删除该学号学生的相关信息。
保存数据:
将添加的数据保存到文件,以便下次使用。
查询数据:
菜单选择通过学号、通过姓名、通过联系方式查询数据详细信息
简单预览功能:
预览所有学生的简单信息,比如学生的学号、姓名。
退出:
通过菜单选择结束程序。
(3)模块划分
学生通讯录要求的设计实现主要通过七个主模块。
模块一:
增加人员函数Add();增加通讯录基本信息。
模块二:
删除人员函数Delete();删除指定的学生的基本信息。
模块三:
修改人员函数Modify();修改指定的通讯录基本信息。
模块四:
查询人员信息函数Query();查询指定的学生的详细信息。
模块五:
数据存盘,载入函数Save()以及Load();储存与载入基本信息。
模块六:
预览数据voidLook();预览比较简略的信息。
模块七:
删除通讯录voidDesTory();删除已载入的所有的信息。
2设计思想与程序构架
(1)程序基本架构
NY
(2)核心子架构
添加新记录函数
Y
NN
Y
N
Y
设计思路:
增加记录函数的实现首先输入学号,判断该学号是否存在,如果存在,询问是否修改,调用修改信息函数实现;如果不存在,则继续输入学生的其他相关信息;然后,询问是否继续添加新记录,如果“是”调用此函数;如果“否”则返回主菜单。
修改记录
NY
Y
N
Y
N
设计思路:
首先根据学号检索出学生信息并输出到显示屏显示出来,然后建立一个子菜单选择要修改的内容(比如年龄),输入新内容。
询问是否修改该学号学生的其他信息,如果“是”则返回子菜单选择修改该学号学生的其他内容(比如姓名);如果“否”则询问是否修改其他学号学生信息,选择“是”修改其他学号学生信息,选择“否”返回主菜单。
查询详细记录
NY
设计思路:
第一步,建立一个查询子菜单,第二步,建立查询方式,包括按学号、按姓名、按联系方式。
第三步,将检索出的信息输出到显示屏。
第四步,询问是否继续查找,如果“是”返回子菜单;如果“否”返回主菜单。
(3)主程序设计基本思路
1、根据题目要求分析要使用的数据成员以及要实现的具体功能,将程序分为几个模块。
2、对每一个模块具体分析,考虑要添加的变量,要使用到的函数以及具体的实现功能的方法。
3、考虑各个函数的互相调用的方法及实现的功能。
从全局出发,对每个函数细致修改,使其不冲突,实现多个函数相互调用。
4、对界面进行层次化分析,主要是主菜单与子菜单的转换,使其转换方便,整个程序无退出失败现象。
5、对程序进行优化,在关键点进行设置,比如完成某项任务提示“操作成功”操作不当提示该如何操作;退出、删除提示“是否继续”等。
6、操作界面优化,对在显示器显示的数据进行修改,比如操作界面排版、输出数据格式、系统提示格式等。
3软件使用说明书
(1)主要功能
通过本软件可建立通讯录,实现添加、修改、预览、删除、保存通讯信息等功能。
是您生活中的好帮手。
(2)使用方法
增加通讯录选择“1”键;
保存通讯录数据设置选择“5”键;
删除通讯录选择“2”键;
预览通讯录选择“6”键;
修改通讯录选择“3”键;
清除通讯录选择“7”键;
查询详细通讯录选择“4”键;
退出请选择“0”键
(3)软件优点
简约、方便、实用、可重复安装使用。
(4)使用对象及服务
使用对象:
适合联系对象较多的人群
软件服务:
自购买之日三月内免费安装、免费调试。
4程序测试及分析
1、程序测试
(1)运行程序,进入主界面
(2)选择功能“4”,进入查询功能,显示子菜单
(3)选择功能“6”,预览简略信息,查询详细信息选择“y”
(4)选择功能“5”,保存信息,保存完成后返回主菜单。
(5)选择功能“7”删除所有信息,删除后返回主菜单。
2、程序分析
(1)、系统中包含了输入、输出、保存、删除、查询、修改等多种功能,
系统操作灵活性较强,功能比较全面;
(2)、由于该系统对数据采用文本保存方式,所以安全性不可靠。
(3)、采用链表结构操作,不能支持超大量的数据,否则运行缓慢。
5设计总结
通过本次实验,让我对c++有了更系统的认识。
编写过程中,更加清楚了结构化、模块化的益处。
系统分析和设计的部分花了比较多的时间,遇到到许多难点,
但经过思考和参考资料都顺利解决了。
对整个程序而言,怎样把自己的分析转化为实际的程序代码,是我编写这个程序最困难之处。
这次C++课程设计,提升了我分析问题的能力,对编写程序也有了一个较深刻的认识,更明白了一个道理:
好的程序不是写出来的,而是改出来的。
相信这次实验,将对我以后的学习起到指导作用。
三、附录
(1)主要函数
voidFind(charName[20]);//按姓名查找
voidFind(stringID);//按编号查找
voidAdd();//添加信息
voidDelete();//按id删除人员
voidModify(stringID);//修改信息
voidQuery();//查询信息
voidTJ();//删除文件信息
voidSave();//保存数据
voidLoad();//读入数据
voidLook();//预览
voidOutput(Person*p)//输出数据
(2)数据对象
成员名
数据类型
长度
字段含义
No
string
学号
Name
char
20
姓名
Age
string
年龄
Tel
string
联系方式
四、主要参考资料
[1]谭浩强.c++面向对象程序设计[M].第一版.北京:
清华大学出版社,2006.
[2]游洪跃,伍良富,王景熙.C++面向对象程序设计实验和课程设计教程[M].第一版.北京:
清华大学出版社,2009.
源代码
#include
#include
#include
#include
usingnamespacestd;
stringID;
classPerson
{
protected:
stringNo;//学号
stringAge;
charName[20];//姓名
charSex[10];//性别
stringTel;//联系方式
Person*next;
public:
Person(stringID,char*Name,char*Sex,stringAge,stringTel)
{
strcpy(this->Name,Name);
strcpy(this->Sex,Sex);
this->Tel=Tel;
this->No=ID;
this->Age=Age;
}
friendclassManage;
};
classManage
{
private:
Person*person;
public:
Manage()
{
person=0;
Load();
}
~Manage()
{
Person*p;
p=person;
while(p)
{
p=p->next;
deleteperson;
person=p;
}
person=0;
}
voidFind(charName[20]);//按姓名查找
voidFind(stringID);//按编号查找
voidAdd();//添加信息
voidDelete();//按id删除人员
voidModify(stringID);//修改信息
voidQuery();//查询信息
voidTJ();//删除文件信息
voidSave();//保存数据
voidLoad();//读入数据
voidLook();//预览
voidDesTory();
voidOutput(Person*p)
{
cout<<"\t\t学号:
"< cout<<"\t\t姓名: "< cout<<"\t\t性别: "< cout<<"\t\t年龄: "< cout<<"\t\t联系电话: "< cout< } }; voidManage: : Add()//添加信息 { system("cls"); Person*p,*p2;//新结点指针 stringNo,Age,Tel; charName[20],Sex[10]; charc; cout<<"\n*===新增学生通讯录===*\n";//输入学生信息 cout<<"输入学号: \t"; cin>>No; Person*p1; p1=person; while(p1) { if(p1->No==No) {break; } else { p1=p1->next; } } if(p1! =NULL) { cout<<"该学号已存在,是否修改该学生信息(Y/N)"< cin>>c; if(toupper(c)=='Y') {cout<<"该学生信息为: "< Find(No);//按编号查找 cout< Modify(No);//修改信息 return; } else return; } cout<<"输入姓名: \t"; cin>>Name; cout<<"输入性别: \t"; cin>>Sex; cout<<"输入年龄: \t"; cin>>Age; cout<<"输入联系方式: \t"; cin>>Tel; p=newPerson(No,Name,Sex,Age,Tel); p->next=0;//学生结点加入链表 if(person)//若已经存在结点 {p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } system("cls"); cout<<"***===添加成功===***\n"< cout<<"_________________________________________"< cout<<"……是否继续添加……(Y/N)"< cin>>c; if(toupper(c)=='Y') { Add();//添加信息 return; } else return; } voidManage: : Delete()//按id删除人员 { system("cls"); charc; stringNo; cout<<"\n*……删除信息……*\n"; cout<<"___________________________________________"< cout<<"输入要删除的同学ID: \t"; cin>>No; cout< Person*p1,*p2; p1=person; while(p1) { if(p1->No==No) break; else { p2=p1; p1=p1->next; } }//删除结点 if(p1! =NULL)//若找到结点,则删除 { cout<<"所要删除的学生的信息如下: \n"< Output(p1); cout<<"_______________________________________"< cout<<"确定是否删除(Y/N): "; cin>>c; if(toupper(c)! ='Y') return; system("pause"); if(p1==person)//若要删除的结点是第一个结点 { person=p1->next; deletep1; } else//若要删除的结点是后续结点 { p2->next=p1->next; deletep1; } cout<<"\t\t***删除成功***\n"; cout<<"________________________________________"< cout<<"是否继续删除(Y/N)"< cin>>c; if(toupper(c)=='Y') {Delete(); return; } else return; } else//未找到结点 cout<<"未找到该同学! 按任意键返回\n"; getch(); } voidManage: : Modify(stringID)//修改信息 {Person*p1; charc; p1=person; while(p1) {if(p1->No==ID) break; else { p1=p1->next; } } if(p1! =NULL)//若找到结点 { system("cls"); cout<<"所要修改的学生的信息如下: \n"< cout<<"__________________________________________"< Output(p1); do { cout<<"1.修改姓名"< cout<<"2.修改性别"< cout<<"3.修改年龄"< cout<<"4.修改联系方式"< cout<<"0.退出修改"< cout<<"__________________________________________"< cout<<"请选择(0-4)要修改的信息\n"< cin>>c; if(c! ='0') cout<<"请输入新的信息: "; switch(c) { case'1': cin>>p1->Name;break; case'2': cin>>p1->Sex;break; case'3': cin>>p1->Age;break; case'4': cin>>p1->Tel;break; default: break; } }while(c! ='0'); system("cls"); cout<<"\t***修改成功***\n"< cout<<"_________________________________________"< cout<<"是否继续修改(Y/N): "< cin>>c; if(toupper(c)=='Y') { cout<<"请输入要修改人员的ID: "; cin>>ID; cout< Modify(ID); return; } else return; } else//未找到结点 cout<<"未找到该学生! \n"; getch(); } voidManage: : Save()//数据写入到文件 { ofstreamfPerson("Person.txt",ios: : out); charc; cout<<"\n保存数据,是否继续? [Y/N]: "; cin>>c; if(toupper(c)! ='Y') return; Person*p=person; while(p) { fPerson< p=p->next; } fPerson.close(); cout<<"\n保存成功...\n"; system("pause"); } voidManage: : Load()//数据读入 {ifstreamfPerson; Person*p=person; stringNo,Age,Tel; charName[20],Sex[10]; fPerson.open("person.txt",ios: : in); fPerson>>No>>Name>>Sex>>Age>>Tel; while(fPerson.good()) { p=newPerson(No,Name,Sex,Age,Tel); p->next=0;//员工结点加入链表 if(person)//若已经存在结 { Person*p2; p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } fPerson>>No>>Name>>Sex>>Age>>Tel; } fPerson.close(); } voidManage: : Find(stringID)//按编号查找 { Person*p1; p1=person; while(p1) { if(p1->No==ID) break; else { p1=p1->next; } } if(p1! =NULL) { Output(p1); } else cout<<"未找到该学生"< } voidManage: : Find(charName[20])//按姓名查找 {Person*p1; intcount=0; p1=person; while(p1) { if(strcmp(p1->Name,Name)==0) {count++; Output(p1); } p1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 学生 通讯录
![提示](https://static.bdocx.com/images/bang_tan.gif)