c语言课程设计学生通讯录管理系统.docx

上传人:小飞机 文档编号:3155489 上传时间:2023-03-11 格式:DOCX 页数:13 大小:40.41KB
返回 下载 相关 举报
c语言课程设计学生通讯录管理系统.docx_第1页
第1页 / 共13页
c语言课程设计学生通讯录管理系统.docx_第2页
第2页 / 共13页
c语言课程设计学生通讯录管理系统.docx_第3页
第3页 / 共13页
c语言课程设计学生通讯录管理系统.docx_第4页
第4页 / 共13页
c语言课程设计学生通讯录管理系统.docx_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c语言课程设计学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生通讯录管理系统.docx(13页珍藏版)》请在三一办公上搜索。

1、c语言课程设计学生通讯录管理系统题目:学生通讯录管理系统 任务说明: 主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能: 记录通讯录内的人员的学号、姓名、地址、电话号码。 显示所有人员的信息。 通过输入姓名查找人员信息。 通过输入姓名查找到要删除的人员信息,然后可以进行删除。 通过输入姓名查找到要修改的人员信息,然后可以进行修改。 添加人员信息。 系统功能描述: 本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字查找功能,可以对数据进行修改、删除、添加等操作。 各按钮的功能如下: 查找记录:以姓名为关键字,查找并显示该记录。若查找不

2、到,则显示“好象没有”; 添加记录:将当前记录按姓名序加入通讯录,然后显示第一条记录; 修改记录:修改当前记录,显示当前记录。姓名为关键字,不允许修改; 删除记录:删除当前记录,然后显示第一条记录; 第一条记录:将当前记录指针移动至首节点,若已为首节点,则不移动; 前一条记录:将当前记录指针向前移动一个节点,若已为首节点,则不移动; 后一条记录:将当前记录指针向后移动一个节点,若已为尾节点,则不移动; 最后一条记录:将当前记录指针移动至尾节点,若已为尾节点,则不移动; 加载:从文件中掉入已保存的通讯录数据; 保存:保存通讯录数据; 退出:退出系统; 设计思路: 根据要求,电话录数据以文本文件存

3、放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。 通讯录管理系统 数据输入 数据添加 数据修改 查找 删除 浏览 图1 系统功能模块图 软件中使用的结构体和结构体数组,如: struct callmember char name20; char address20; char code20; char callnumber20; ; 对用户的信息进行保存,他们都以二进制的形式读写。 其中: char name20; char address20; char code20; char callnumber20 分别

4、对姓名、地址、邮编、电话号码进行储存 在子函数中还使用了结构体数组: struct callmember one100; 还使用了exit、 fclose等库函数。 还运用了头文件: #include stdafx.h #includestring.h #include #include 其中还使用大量的子函数,例如: void output; void del; void found; void modify ; void insert; 部分子函数的详细代码: void output int b=0,i=0; int j; struct callmember one100; FILE *f

5、p; if(fp=fopen(e:通讯录.txt,r)=NULL) printf(无法从已有通讯录输入!n可能是因为原通讯录不存在或为空!n建议你检查你的通讯录文挡!n); exit(1); while(fscanf(fp,%s%s%s%s,onei.name,onei.address,onei.code,onei.callnumber)!=EOF) i+; j=i; for(i=0;iname); printf( 地址:); scanf(%s,p-address); printf( 邮编:); scanf(%s,p-code); printf( 电话:); callmember *)mall

6、oc(sizeof(struct scanf(%s,p-callnumber); printf( *n); fprintf(fp,%s %s %s %s,p-name,p-address,p-code,p-callnumber); fclose(fp); free(p); 通过对这些资源的合理利用使系统初步实现了通讯录管理系统的基本功能。 程序流程图: 开始 执行printf函数 选择 调用output 函数 调用 del 函数 调用 found函数 调用 modify 函数 调用 insert 函数 执行printf 退出系统 else printf(n对不起,通讯录中没有此人的记录。);

7、fclose(fp); 结果分析: 1运行进入程序主菜单 主选单具有所有函数的功能实现的选择功能,通过主选单的操作进入各个功能。主选单主要由主函数提供,其功能由子函数实现。 2查看所有人员信息界面 可以显示全部的人员的信息。可在3 .3参看流程图。 3删除模块 删除功能界面 4查找模块 进入查找记录界面 5修改模块 进入修改界面 6添加模块 进入添加界面 可以根据要求添加用户想添加的人员信息。 7.退出 进入退出界面: 当出现没有查找人员信息时会自动返回主选单 总结 1本程序的局限性及改进方法: 本程序中包含的信息不够全面,比如年龄,性别,通讯地址,电子邮箱等,都没有包含。改进方法就是在设计程

8、序时把这些内容都加进去,电子邮箱还可以建立链接。 2运用本程序还可以编写比如对学生信息的管理系统,商店、超市里面对商品的管理,仓库里面对货物的查询等等。 3在课程设计过程中遇到的问题,解决的办法 1、从文本中写入数据时可能指针指错位置,导致不能正常进行。解决的办法是对指针进行必要跟踪,把该函数写入独立的cpp文件中,单个进行检查。 2、从文本文件中载入数据时,当记录数为1的时,出现内存不能读的情况,当记录数为0时,当前记录数和总记录数以及用户信息显示的情况比较特殊,解决的办法是分三种情况,写段程序分别进行处理。 4心得体会与收获: 通过这次课程设计,我对很多的函数有了新的认识,我对C语言有了更

9、深刻的了解,增强了程序的编写能力,巩固了专业知识,写软件的过程中我又学到啦曾经自己不知道的函数或是自己不会的函数的用法。特别是文件的开启和关闭,读与写。这次课程设计课总的来说让我受益匪浅。 虽然在调试程序遇到了很多的困难,但是都一一去把它解决了。从中也让我知道了要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。 程序清单: #include /*标准输入输出函数库*/ #include struct student char name8; char tel15; char addr50;

10、; char filename20; FILE *fp; void creat; void output; void search; void append; void modify; void remove; main int m; creat; while(1) printf(nn添加,请按1); printf(n查找,请按2); printf(n修改,请按3); printf(n删除,请按4); printf(n输出,请按5); printf(n退出,请按0n); scanf(%d,&m); if(m=0&m=5) switch(m) case 1: append; break; cas

11、e 2: search; break; case 3: modify; break; case 4: remove; break; case 5: output; break; case 0: break; printf(nn操作完毕,请再次选择!); else printf(nn选择错误,请再次选择!); void creat struct student one; long s1; printf(n请输入通讯录名:); scanf(%s,filename); if(fp=fopen(filename,w)=NULL) printf(n不能建立通讯录!); exit; fprintf(fp,

12、%-10s%-20s%-50sn,姓名,电话号码,住址); printf(n请输入姓名、电话号码及住址n); scanf(%s,one.name); while(strcmp(one.name,0) scanf(%s%s,one.tel,one.addr); fprintf(fp,%-10s%-20s%-50sn,one.name,one.tel,one.addr); scanf(%s,one.name); fclose(fp); void output struct student one; if(fp=fopen(filename,r)=NULL) printf(n不能打开通讯录!); e

13、xit; printf(nn%20sn,通 讯 录); while(!feof(fp) fscanf(fp,%s%s%sn,one.name,one.tel,one.addr); printf(%-10s%-20s%-50s,one.name,one.tel,one.addr); fclose(fp); void append struct student one; if(fp=fopen(filename,a)=NULL) printf(n不能打开通讯录!); exit; printf(n请输入添加的姓名、电话号码及住址n); scanf(%s%s%s,one.name,one.tel,on

14、e.addr); fprintf(fp,%-10s%-20s%-50sn,one.name,one.tel,one.addr); fclose(fp); void search int k=0; char namekey8; struct student one; printf(n请输入姓名:); scanf(%s,namekey); if(fp=fopen(filename,rb)=NULL) printf(n不能打开通讯录!); exit; while(!feof(fp) fscanf(fp,%s%s%sn,one.name,one.tel,one.addr); if(!strcmp(na

15、mekey,one.name) printf(nn已查到,记录为:); printf(n%-10s%-18s%-50s,one.name,one.tel,one.addr); k=1; if(!k) printf(nn对不起,通讯录中没有此人的记录。 fclose(fp); void modify int m,k=0; long offset; char namekey8; struct student one; printf(n请输入姓名:); scanf(%s,namekey); if(fp=fopen(filename,r+)=NULL) ); printf(n不能打开通讯录!); ex

16、it; while(!feof(fp) offset=ftell(fp); fscanf(fp,%s%s%sn,one.name,one.tel,one.addr); if(!strcmp(namekey,one.name) k=1; break; if(k) printf(n已查到,记录为:); printf(n%-10s%-18s%-50s,one.name,one.tel,one.addr); printf(n请输入新姓名、电话号码及住址:); scanf(%s%s%s,one.name,one.tel,one.addr); fseek(fp,offset,SEEK_SET); prin

17、tf(%ld,ftell(fp); fprintf(fp,%-10s%-20s%-50sn,one.name,one.tel,one.addr); else printf(n对不起,通讯录中没有此人的记录。); fclose(fp); void delete int m,k=0,flag; long offset1,offset2; char namekey8, valid4; struct student one; printf(n请输入姓名:); scanf(%s,namekey); if(fp=fopen(filename,r+)=NULL) printf(n不能打开通讯录!); exi

18、t; while(!feof(fp) offset1=ftell(fp); fscanf(fp,%s%s%sn,one.name,one.tel,one.addr); if(!strcmp(namekey,one.name) k=1; break; if(k) printf(n已查到,记录为); printf(n%-10s%-18s%-50s,one.name,one.tel,one.addr); printf(n确实要删除,按1;不删除,按0:); scanf(%d,&m); if(m) fseek(fp,offset1,SEEK_SET); fprintf(fp,%-10s%-20s%-50sn,);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号