《高级语言程序设计》课程设计报告模板及示例课件.docx
- 文档编号:8474848
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:191.02KB
《高级语言程序设计》课程设计报告模板及示例课件.docx
《《高级语言程序设计》课程设计报告模板及示例课件.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》课程设计报告模板及示例课件.docx(12页珍藏版)》请在冰豆网上搜索。
《高级语言程序设计》课程设计报告模板及示例课件
《高级语言程序设计》课程设计报告
(2013——2014年度第二学期)
题目
通讯录管理
专业
计算机科学与技术(师范)
班级
2013级A班
小组成员
李慧玲134100013
《高级语言程序设计》课程设计
成绩评定
学号
姓名
成绩
备注
2009022899
李丽丽
指导教师:
摘要:
通过本课程设计,对程序控制结构、数组、结构体、函数、文件等的应用进行综合训练,并初步接触软件设计的基本步骤。
本设计实现
关键词:
控制结构,数组,结构体,函数,文件
一、课程设计的目的与要求
通过实践训练,进一步掌握C语言程序控制结构、数组、结构体、函数、文件的使用方法,提高程序编写调试的实际能力,培养初步的工程设计能力和综合分析、解决问题的能力。
具体如下:
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括功能分析和模块划分、函数设计、数据的结构分析、设计和存取操作;
2.熟悉VisualC++的代码编制和调试过程;
3.初步培养文档的编写能力;
4.培养协作能力和团队精神。
二、设计正文
1.概述
1.1课题题目:
通讯录管理
1.2系统的主要目标:
本系统目标是实现通讯录管理的功能,对姓名、群组、住宅电话、手机、Email、地址和备注信息进行输入、删除、查找和修改,数据存储于二进制文件。
1.3系统的开发环境及运行环境:
操作系统:
WindowsXPProSP2
开发工具:
VisualC++6.0
2.系统分析
手机中一个重要的功能就是管理通信录。
参考手机中通信录管理的功能,系统应为用户提供众多联系人信息的存储、查阅、更新等操作。
该程序能应在配置较低的软硬件环境中运行。
主要功能需求如下:
①能方便地查看联系人的信息;
②能更新联系人的信息:
新增、删除、编辑;
③能备份通信录;
④其他要求:
数据的一致性,可靠性,易操作性等。
信息格式定义如下:
名称
姓名
群组
住宅电话
手机
地址
备注
类型
char[20]
int
char[15]
char[15]
char[20]
char[20]
char[20]
3.系统设计
3.1功能模块划分
根据上面的分析,将系统按功能分成以下几个模块:
1主程序模块tel.cpp:
调用各模块中的函数实现对通信录的管理;
2头文件模块tel.h:
定义相关结构,定义常量及全局变量,声明所有模块中的函数;
3菜单模块menu.cpp:
显示主菜单、子菜单。
使菜单界面独立于其它程序代码;
4查看模块brows.cpp:
显示一个或全部联系人;
5更新模块edit.cpp:
对联系人数据的更新,包括新增、删除、修改;
6排序模块sort.cpp:
对通信录排序;
7文件操作模块file.cpp:
完成程序中与文件相关的操作,包括:
从磁盘读取通信录,保存通信录,备份通信录。
3.2模块接口设计
(1)主程序模块tel.cpp
仅包含main()函数,提供对系统的主要控制。
在用户未选择退出程序时,通过一个循环不断显示菜单。
当用户选中某个操作后,根据返回的菜单代码select调用各函数完成相应的操作。
(2)菜单模块menu.cpp
将显示菜单用单独的函数实现,使菜单界面独立于其它程序代码,便于修改和维护。
Menu函数仅显示主菜单,SubMenu2函数仅显示更新联系人子菜单,这样各个菜单便于单独显示、清屏。
用户选择操作后,函数返回对应的菜单代码。
各函数功能描述如下:
intMenu(void);主菜单,显示第一级菜单:
查看通信录、更新通信录、备份通信录、退出。
intSubMenu2(void);“更新通信录”子菜单,显示:
新增联系人、编辑联系人、删除联系人、返回主菜单。
menu.cpp模块各函数之间的关系如图8.28所示:
menu.cpp图8.28menu.cpp模块各函数间的关系结构图MenuSubMenu2菜单代码
(3)查看模块brows.cpp
以列表或单条记录的方式输出通信录。
各函数功能描述如下:
voidList(Teltel[],IndexpAlphabet);按pAlphabet中指针数组的排序方式,调用PrintOne函数显示tel中所有的联系人,并显示排序后的序号i,便于用户选择联系人。
voidPrintHead(void);输出表头。
voidPrintBottom(void);
输出表尾。
voidPrintOne(Telr,inti);
仅输出一个联系人r的信息,并显示序号i,便于用户选择联系人。
voidPrint(Telr);
调用PrintOne函数输出表头及一个联系人的信息,不显示序号。
(4)更新模块edit.cpp
各函数功能描述如下:
voidNew(Teltel[],Index*pAlphabet);
新增联系人。
添加到tel数组中第一个空着的位置。
之后需要对pAlphabet重新排序。
voidEdit(Teltel[],Index*pAlphabet);
编辑联系人。
编辑之后需要对pAlphabet重新排序。
voidDelete(Teltel[],Index*pAlphabet);删除联系人。
此处做逻辑删除,仅将姓名赋空串。
删除之后需对pAlphabet重新排序。
voidInput(Tel*r,Teltel[],intmenu);
输入联系人信息。
新增或编辑联系人时,调用该函数来输入一个联系人的信息。
如果是新增(此时菜单代码menu=21),当用户选择只输入姓名时,需要为除姓名以外的信息设置缺省值;否则,除姓名以外的信息缺省保持不变。
intDuplicate(char*name,Teltel[],char*original);
姓名查重。
在新增或编辑联系人前,调用该函数来检查是否有重名的情况。
新增联系人时,如果新输入的串name与tel数组中已存在的姓名一样则返回1;否则,返回0。
编辑时可以输入与联系人原来的姓名original一样的串。
intSelect();选择联系人序号。
删除或修改用户选择的联系人时,调用该函数来限制序号在有效范围内。
返回对应的数组下标。
(5)排序模块sort.cpp
利用指针数组对通信录运用选择法排序。
各函数功能描述如下:
voidSortByAlphabet(Teltel[],Index*pAlphabet);
调用SelectSort函数,利用pAlphabet中的指针数组,对tel数组按音序排序。
voidSelectSort(Index*p);
用选择法对指针数组p排序。
(6)文件操作模块file.cpp
完成系统与文件有关的操作。
各函数功能描述如下:
intLoad(Teltel[],Index*pAlphabet);读取。
将通信录文件fName读入内存tel,并对pAlphabet排序。
返回读取的记录数。
intSave(Teltel[]);保存。
将通信录tel以fName(全局变量)为名保存到磁盘。
此时做物理删除:
姓名为空串的联系人表示已删除,不存入通信录文件。
返回写入文件的记录数。
intCopy(void);备份通信录。
复制通信录文件。
操作成功时返回1;否则返回0。
3.3系统流程描述
4.详细设计
4.1.数据结构设计
系统的主要功能是管理联系人的信息,大部分模块中都用到联系人的信息。
联系人的结构定义如下:
typedefstructTelephone
{
charname[20];//姓名
intgroup;//群组:
1.朋友2.同事3.家人4.其他
charhome[15];//住宅电话
charmobile[15];//手机
charemail[20];//Email
charadd[20];//地址
charmemo[20];//备注
}Tel;
sort.cpp模块中利用指针数组对通信录排序,排序用的索引结构的定义如下:
typedefstructindex
{
intlen;//数组长度
Tel*tel[MaxLen];//指针数组,
}Index;
菜单代码
菜单项
代码
子菜单项
代码
查看通信录
1
更新通信录
2
新增联系人
21
编辑联系人
22
删除联系人
23
返回主菜单
20
备份通信录
3
退出
0
联系人分组方式代码
分组方式
朋友
同事
家人
其他
代码
1
2
3
4
全局变量
constintMaxLen=500;//最多可存放500个联系人信息
charfName[20]="tel.dat";//磁盘文件:
通信录文件名
intLen;//全局变量,通信录中当前联系人总数
4.2人机对话(输入/输出格式)设计
(1)菜单操作
考虑使用键盘方式,用户输入菜单项前的0,1,2等数字字符来选择对应的菜单项,由menu.cpp模块转换成相应的菜单代码。
用户选择菜单项并完成相应的操作后刷新菜单。
(2)显示与选择联系人
对通信录更新时系统自动按音序排序。
显示整个通信录时在每个联系人前面显示排序后的序号,用户按序号选择联系人进行操作。
对于操作结果为单个联系人的情况不显示序号。
(3)输入联系人信息
通过新增或更新输入联系人信息时,可以选择只输入姓名还是输入联系人的完整信息。
当用户选择只输入联系人姓名时,其余部分系统自动设成空值。
系统只提供了“1.朋友2.同事3.家人4.其他”四种联系人分组方式。
用户输入[1..4]来指定联系人的分组。
当用户未指定时,系统自动设为4,代表“其他”分组。
输入联系人姓名时系统自动检查有无重名的情况。
更新输入时可以输入原来的姓名。
4.3控制结构设计
对每个函数的控制结构进行设计,以PAD图描述
(1)主程序模块
(2)更新模块
新增voidNew(Teltel[],Index*pAlphabet):
修改voidEdit(Teltel[],Index*pAlphabet):
删除voidDelete(Teltel[],Index*pAlphabet)
(3)排序模块
voidSortByAlphabet(Teltel[],Index*pAlphabet):
选择排序voidSelectSort(Index*p)
(4)文件操作模块
从磁盘读取通信录intLoad(Teltel[],Index*pAlphabet):
保存通信录intSave(Teltel[]):
备份通信录intCopy(void)
5.编码和测试
选用VisualC++6.0作为开发工具:
控制部分通过函数代码实现,数据部分采用数据文件实现永久存储,采用数组存储系统运行过程中的数据。
测试要点
①主菜单、子菜单是否能正确显示和刷新;对于选择的非法菜单号是否能识别和处理;
②排序是否正确,是否正确地处理了已逻辑删除的联系人;
③在增加、修改、删除联系人后,排序是否正确;
④保存、载入时,是否能正确地从数据文件读取数据;是否能正确地从备份的数据文件读取数据;
⑤各模块分开调试,组合后的正确性。
三、课程设计总结或结论
1.通过这次高级语言程序设计课程设计的实践训练,进一步掌握程序控制结构、数组、结构体、函数、文件的使用方法,提高程序编写调试的实际能力,初步建立软件工程的设计思想,培养初步的综合分析、解决问题的能力。
2.本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不美观,操作性不太友好等。
四、参考文献
[1]张海藩.软件工程导论(第4版).北京:
清华大学出版社,2005
[2]
[3]
[4]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计 高级 语言程序设计 课程设计 报告 模板 示例 课件