当前位置:文档之家› 电话簿管理系统修改的程序设计报告(参考)

电话簿管理系统修改的程序设计报告(参考)

课程设计报告题目电话薄管理系统——分组模块及其附属功能课程名称结构化程序设计课程设计院部名称信息技术学院专业计算机科学与技术班级学生姓名学号课程设计地点工科楼A101、1318 课程设计学时20学时指导教师金陵科技学院教务处制成绩电话簿管理系统修改的程序设计报告——分组模块及其附属功能(一)课程设计目的与要求1.目的1)了解并掌握C语言的基本知识和技能;2)基本掌握面向对象程序设计的基本思路和方法;3)提高综合运用所学的理论知识与方法分析和解决问题的能力;4)掌握C语言中的结构体、函数、文件操作等知识。

2.要求1)要求在设计的过程中,建立清晰的层次;2)在程序中要定义清楚,区分好类别,每个类别要有各自的属性和方法;(二)课程设计的主要内容1.项目名称:电话薄管理系统——分组模块及其附属功能2.实验设备及环境1)实验设备:教室机房2)硬件环境:具备C++、TC的计算机3)软件环境:C语言、C++3.系统功能介绍及结构设计软件各个模块功能:(1)、开场模块:首先是一个游戏界面,通过游戏来进入电话簿,游戏成功正常进入电话簿管理系统,退出游戏则进入紧急拨号界面。

(2)、对电话簿管理系统修改的模块:输入记录模块:主要实现将数据存入数组中,当从数据文件中读出记录时,它调用fread(&tele[count],sizeof(TELEBOOK),1,fp)文件读取函数,执行一次从文件中读取一条电话簿记录信息存入某个数组元素中的操作,并且这个操作在main()中调用执行,即在电话簿管理系统进入显示菜单界面时,该操作已经执行了。

若该文件中没有数据,则系统会提示数组为空,没有任何记录可操作,此时,用户应选择1,调用Add()函数,进行记录的输入,即完成在数组中添加元素的操作。

查询记录模块:主要实现在数组中按联系人姓名或电话或分组查找满足条件的记录。

在查询函数Qur()中,为了遵循模块化编程的原则,我们对在数组中进行的记录定位操作设计成了一个单独的函数int Locate(TELEBOOK temp[],int n,char findmess[],charnameorphonenum[]),参数findmess[]保存要查找的具体内容,nameorphonenum[]保存要查找的字段(值为字符串类型的name或phonenum或group),若找到该记录,则返回指向该记录的数组元素的下标;否则,返回一个-1的值。

更新记录模块:主要实现对记录的修改、删除、插入和排序操作。

1)修改记录:对数组中目标元素的数据域中的值进行修改,分两步完成。

第一步,输入要修改的联系人姓名,输入后调用定位函数Locate()在数组中逐个对联系人姓名字段的值进行比较,直到找到该联系人姓名的记录;第二步,若找到该记录,修改除记录编号之外的各字段的值,并将存盘标记变量saveflag置1,表示已经对记录进行了修改,但还未执行存盘操作。

2)删除记录:完成删除指定联系人姓名或电话号码或分组的记录,分两步完成。

第一步,输入要修改的联系人姓名或电话号码,输入后调用定位函数Locate()在数组中逐个对联系人姓名或电话号码字段的值进行比较,直到找到该联系人姓名或电话号码的记录,返回指向该记录的数组元素下标;而输入要修改的分组,输入后调用定位函数Locate1()在数组中逐个对分组字段的值进行比较,直到找到该分组的记录,返回指向该记录的数组元素下标;第二步,若找到该记录,则从该记录所在元素的后续元素起,依次向前移一个元素位置,有值的数组元素个数减1。

3)插入记录:完成在指定记录编号的随后位置插入新记录。

首先,输入某个记录编号,新的记录将插入在该记录之后;然后,提示用户输入一条新的记录的信息,这些信息保存在新结构体类型的数组元素的各字段中;最后,将该元素插入在已经确认位置的记录编号之后。

4)排序记录:这里我们采用了选择排序法来实现按照记录编号或联系人姓名或分组字段的值从低到高对记录进行升序排序。

对按照记录编号排序方式而言,我们将按其数值大小来排序;对按照联系人姓名排序方式而言,我们将按其姓名字符ASCII码的大小来排序;对按照分组排序方式而言,我们也按其分组类别的字符ASCII码的大小来排序。

输出记录模块:当把记录输出至文件时,调用fwrite(&temp[i],sizeof(TELEBOOK),1,fp)函数,将数组元素temp[i]中各字段的值,写入文件指针fp所指的文件;当把记录输出至屏幕时,调用void Disp函数,将数组中存储的记录信息以表格的形式在屏幕上打印出来。

增加成员分组:区分类别,例如家人、朋友、同学等等。

(3)、帮助模块电话簿管理系统模块图:电话簿管理系统开场模块更新记录模块帮助模块正常游戏进入退出游戏紧急拨号从文件读入从键盘输入输入记录模块查询记录模块对电话簿管理系统修改的模块输出记录模块增加成员分组按姓名查询插入记录删除记录修改记录按电话查询排序记录输出至文件输出至屏幕流程图:是否 是否开始以可读写的方式打开一个数据文件将此文件的内容读出,并存入一个新的结构体类型的数组中调用menu()菜单函数进入while(1)主循环 输入0~8中的一数值,选择相应操作输入是否为0?判断键值,调用相应函数,完成相应功能是否已对修改进行了存盘调用Save()函数,进行写数据文件操作结束函数关系图:4. 主要内容和步骤(关键代码的算法流程图及说明,程序调试过程记录,程序运行结果等) void main() {TELEBOOK tele[N]; /*定义TELEBOOK 结构体*/ FILE *fp; /*文件指针*/int select; /*保存选择结果变量*/ char ch; /*保存(y,Y,n,N)*/int count=0; /*保存文件中的记录条数(或元素个数)*/fp=fopen("C:\\telephon","a+");/*以追加方式打开文本文件c:\telephon ,可读可写,若此文件不存在,会创建此文件*/if(fp==NULL) {printf("\n=====>can not open file!\n"); exit(0); }while(!feof(fp)) {if(fread(&tele[count],sizeof(TELEBOOK),1,fp)==1) /*一次从文件中读取一条电话簿记录*/ count++; }fclose(fp); /*关闭文件*/ printf("\n==>open file sucess,the total records number is : %d.\n",count);mainmenuinput displaydeletesearchmodifyinsertsortsavequitgetchar();menu();while(1){system("cls");menu();printf("\n Please Enter your choice(0~8):"); /*显示提示信息*/scanf("%d",&select);if(select==0){if(saveflag==1) /*若对数组的数据有修改且未进行存盘操作,则此标志为1*/{ getchar();printf("\n==>Whether save the modified record to file?(y/n):"); scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(tele,count);}printf("\n===>thank you for useness!");getchar();break;}switch(select){case 1:count=Add(tele,count);break; /*增加电话簿记录*/case 2:system("cls");Disp(tele,count);break; /*显示电话簿记录*/ case 3:count=Del(tele,count);break; /*删除电话簿记录,在原基础上我加入了按照分组删除*/case 4:Qur(tele,count);break; /*查询电话簿记录,在原基础上我加入了按照分组查询*/case 5:Modify(tele,count);break; /*修改电话簿记录,在原基础上我加入了按照分组修改*/case 6:count=Insert(tele,count);break; /*插入电话簿记录,在原基础上我加入了按照分组插入*/case 7:SelectSort(tele,count);break; /*排序电话簿记录,在原基础上我加入了按照分组排序*/case 8:Save(tele,count);break; /*保存电话簿记录*/default: Wrong();getchar();break; /*按键有误,必须为数值0-9*/ }}}步骤:在每一个调用函数中基本都加入了分组,在加入分组后,把程序整理好之后,然后将其与开场游戏整合。

程序调试与结果:开场游戏界面紧急拨号电话簿管理系统主菜单界面输入后的界面查找123删除123(三)遇到问题及解决办法在每个部分加入分组使得所有的程序都受其影响,都需要改变,尤其是在查询记录中,一开始是在原基础上作了个小小的改变,可是运行后无法成功,后来想到在原来的调用定位函数后再加一个关于分组的调用定们函数,结果成功了。

(四)软件使用说明书●使用指南1)为了安全、有效地使用该电话簿,在使用前请先仔细阅读以下信息。

2)首先便于用户在使用该电话簿之前有个轻松愉悦的心情,我们在进入电话簿之前设计了一个小人推箱子的小游戏(按上下左右键可以改变小人的方向,直到小人把箱子推入指定地点即可进入电话簿)。

3)若用户急于拨打求救电话(如110、120、119),在游戏时可直接按Esc键退出即可拨打。

4)按1键输入用户需要输入到电话簿的记录;按2键可修改记录;按3键可以删除某些用户不需要的记录;按4键搜索用户需要的记录;按5键用户可随意修改记录;按6键用户可插入自己想要的记录;按7键用户可对自己的这些记录排序;按8键对修改过后的记录进行保存;按0键退出电话簿。

●注意事项1)本使用说明书专门用于指导用户使用该电话簿的功能。

相关主题