《数据结构与C++》实验指导书.docx
《《数据结构与C++》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数据结构与C++》实验指导书.docx(21页珍藏版)》请在冰豆网上搜索。
《数据结构与C++》实验指导书
实验一、学籍管理系统设计
实验目的:
1、掌握VC++或DEVC++集成开发环境;
2、熟悉面向对象编程方法;
实验内容:
设计界面友好、操作简便的学生学籍管理系统软件。
综合运用顺序表、单链表、栈、队列、字符串、多维数组等多种线性数据结构架构系统,分析并选择合理的操作算法,掌握面向对象的编程技术。
实验设备:
N台计算机
实验所需软件:
VisualC++6、0或DEVC++,WindowsProfessional操作系统
实验步骤:
1.问题描述
学籍管理问题中的数据元素具有如下形式:
学生的自然情况包括学号、姓名、性别、出生日期、政治面貌与家庭住址等数据项。
。
2.功能要求
对学籍登记表要求完成如下功能:
⑴插入:
将某学生的基本信息插入到登记表中;
⑵删除:
将满足条件的基本信息删除;
⑶修改:
对基本信息的数据项进行修改;
⑷查询:
查找满足条件的学生;
⑸输出:
将登记表中的全部(或满足条件)基本信息输出。
3.实现要点
对学籍登记表采用顺序或链式存储结构,在建立表时,由登记表的书写形式转化顺序表或链式表存储结构,还要把学生的书面形式转化为具体的类。
4.类定义
以顺序表为例,建立SeqList顺序表,其类定义如下:
template
classSeqList
{
public:
SeqList(){length=0;}//无参构造函数
SeqList(Ta[],intn);//有参构造函数
~SeqList(){}//析构函数为空
intLength(){returnlength;}//求顺序表的长度
TGet(inti);//取顺序表的第i个元素
voidInsert(inti,Tx);//在顺序表中第i个位置插入值为x的元素
TDelete(inti);//删除顺序表的第i个元素
voidPrintList();//遍历顺序表,按序号依次输出各元素
voidPrintStudent(Tx);//有参输出函数
private:
Tdata[MaxSize];//存放数据元素的数组
intlength;//顺序表的长度
};
在SeqList类中,提供了如下成员函数
(1)函数声明SeqList(Ta[],intn);
完成的功能构造长度为n,元素为数组a[]中元素的顺序表
(2)函数声明intLength(){returnlength;}
完成的功能求顺序表长度
(3)函数声明TGet(inti)
完成的功能依次查找,读取表中第i个元素
(4)函数声明voidInsert(inti,Tx);
完成的功能在顺序表中第i个位置插入值为x的元素
(5)函数声明TDelete(inti);
完成的功能查找并删除顺序表的第i个元素
(6)函数声明voidPrintList()
完成的功能遍历顺序表,按序号依次输出各元素
(7)函数声明voidPrintStudent(Tx)
完成的功能输出元素x
开始程序执行,显示以下功能选择界面:
或者:
按要求输入选择,并按提示输入,以下以插入与查询为例。
首先插入学生张三的信息:
同样输入李四的信息,并查询,结果如下:
可选方案:
PersonData示例运行界面如下图所示。
该示例就是一个基于对话框的MFC应用程序。
运行时先提示程序用户选择个人信息数据文件,比如PersonData工程目录下的test、txt。
打开数据文件后就进入如图所示界面。
在这个界面里左侧的列表框可以添加、删除与选择个人信息的条目。
当选择定某个人名时,在右侧的“个人信息”栏中显示个人信息的具体内容。
如果要修改某个条目的个人信息,则可以直接编辑对话框右侧的具体内容,然后单击“更新”
按钮即可。
PersonData演示了如何用CFile类对文件进行随机读写。
在程序代码中可以瞧到CFile类的各种成员函数的使用范例。
实验步骤(参考):
一.创建一个对话框;
二.添加相应控件,
『注意』:
1)组合框,先要点向下箭头,然后拖大列表区域面积;再在属性中“data”中可输入“男”+“ctrl+enter”+“女”;样式就选择“下移dropdown”。
2)所有编辑框列表框与控件的ID
IDC_PERSONLIST;IDC_NAME;IDC_BIRTH;IDC_SEX;IDC_TITLE;IDC_OFFICE;IDC_OFFICEPHONE;IDC_HOME;
IDC_HOMEPHONE;IDC_MOBILPHONE;IDC_EMAIL;
IDC_ADD;IDC_DEL;IDC_UPDATE;IDC_CANCEL;
3)点击任何控件,按F1键,可出现帮助文档;
三.为控件绑定变量
PersonData的主对话框类CPersonDataDlg设置了下列几个控件变量,用于显示与修改用
户个人信息,代码如下:
(用点击右键类向导邦定变量,代码会自动生成)
public:
CListBoxm_PersonList;//左侧“选择人名”列表框
【注意:
变量类型为“control”,其余几个都为“value”,变量定义就是可限定max范围】
CStringm_szBirth;//“出生日期”输入框
CStringm_szEMail;//“E-mail”输入框
CStringm_szHome;//“家庭地址”输入框
CStringm_szHomePhone;//“家庭电话”输入框
CStringm_szMobilePhone;//“手机”输入框
CStringm_szName;//“姓名”输入框
CStringm_szOffice;//“办公室”输入框
CStringm_szOfficePhone;//“办公电话”输入框
CStringm_szSex;//“性别”下拉列表框
四.在CPersonDataDlg、h头文件中添加结构体PersonInfo
typedefstructPERSONINFO
{
charszName[51];//姓名
charszBirth[31];//出生日期
intnSex;//性别,0为男,1为女
charszTitle[51];//职务
charszOffice[201];//办公室
charszOfficePhone[31];//办公电话
charszHome[201];//家庭住址
charszHomePhone[31];//家庭电话
charszMobilePhone[31];//手机
charszEMail[101];//E-mail地址
}PersonInfo;
五.在CPersonDataDlg、h头文件中添加与文件操作相关的成员变量与成员函数
Public:
C;
voidLoadPersonInfo(constPersonInfo&pi);
voidUpdatePersonIndex);
六.在CPersonDataDlg、h头文件中添加控件响应函数(双击控件可自动生成空函数)
afx_msgvoidOnAdd();
afx_msgvoidOnDel();
afx_msgvoidOnSelchangePersonlist();『双击列表框,生成列表项更新函数』
afx_msgvoidOnCancel();
afx_msgvoidOnUpdate();
七.在CPersonDataDlg、cpp文件中分别添加文件相关成员函数
//=============================================================
//函数名:
LoadPersonInfo
//功能描述:
根据PersonInfo结构更新界面的控件变量
//输入参数:
pi(输入的PersonInfo个人信息结构)
//返回值:
无
//附加说明:
//==============================================================
voidCPersonDataDlg:
:
LoadPersonInfo(constPersonInfo&pi)
{
//更新界面
m_szName=pi、szName;
if(pi、nSex==0)
m_szSex="男";
else
m_szSex="女";
m_szBirth=pi、szBirth;
m_szTitle=pi、szTitle;
m_szOffice=pi、szOffice;
m_szOfficePhone=pi、szOfficePhone;
m_szHome=pi、szHome;
m_szHomePhone=pi、szHomePhone;
m_szMobilePhone=pi、szMobilePhone;
m_szEMail=pi、szEMail;
UpdateData(FALSE);
}
//=============================================================
//函数名:
Update功能描述:
向文件中更新个人信息
//输入参数:
PersonIndex(要更新的个人信息的条目序号)
//返回值:
无
//附加说明:
//==============================================================
voidCPersonDataDlg:
:
UpdatePersonIndex)
{
//定位要修改的个人信息在文件中的位置
m_((LONG)PersonIndex*sizeof(PersonInfo),C);
//更新个人信息数据
UpdateData();
PersonInfopi;
strcpy(pi、szName,m_szName);
if(m_szSex=="男")
pi、nSex=0;
else
pi、nSex=1;
strcpy(pi、szBirth,m_szBirth);
strcpy(pi、szTitle,m_szTitle);
strcpy(pi、szOffice,m_szOffice);
strcpy(pi、szOfficePhone,m_szOfficePhone);
strcpy(pi、szHome,m_szHome);
strcpy(pi、szHomePhone,m_szHomePhone);
strcpy(pi、szMobilePhone,m_szMobilePhone);
strcpy(pi、szEMail,m_szEMail);
m_(&pi,sizeof(PersonInfo));
m_();
}
八.在CPersonDataDlg、cpp文件中分别添加各控件响应成员函数
//=============================================================
//函数名:
OnAdd
//功能描述:
处理单击“添加