c语言课程设计学生通讯录管理系统_第1页
c语言课程设计学生通讯录管理系统_第2页
c语言课程设计学生通讯录管理系统_第3页
c语言课程设计学生通讯录管理系统_第4页
c语言课程设计学生通讯录管理系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、ber one100;还使用了exit()、 fclose()等库函数。还运用了头文件:#include "stdafx.h"#include"string.h "#include <stdio.h>#include<stdlib.h>其中还使用大量的子函数,例如:void output();void del();void found();void modify() ;void insert();部分子函数的详细代码:void output() int b=0,i=0; int j; struct callmember one10

5、0;FILE *fp;if(fp=fopen("e:通讯录.txt","r")=NULL) printf("无法从已有通讯录输入!n可能是因为原通讯录不存在或为空!n建议你检查你的通讯录文挡!n"); exit(1);while(fscanf(fp,"%s%s%s%s",,onei.address,onei.code,onei.callnumber)!=EOF)i+;j=i;for(i=0;i<j;i+)printf("%s %s %s %sn ",,o

6、nei.address,onei.code,onei.callnumber);fclose(fp);void insert() FILE *fp;struct callmember *p; if(fp=fopen("e:通讯录.txt","a+")=NULL) printf("操作失败."); exit(1);p=(struct callmember *)malloc(sizeof(struct callmember); printf(" *n");printf(" 姓名:");scanf(&q

7、uot;%s",p->name);printf(" 地址:");scanf("%s",p->address);printf(" 邮编:");scanf("%s",p->code);printf(" 电话:");scanf("%s",p->callnumber);printf(" *n");fprintf(fp,"%s %s %s %s",p->name,p->address,p->co

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

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

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

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

12、t        char   name8;             char   tel15;             char   addr50;     ;         char   filename20;     FILE   *fp;         vo

13、id   creat();     void   output();     void   search();     void   append();     void   modify();     void  remove();         main()         int   m;       

14、0;     creat();           while(1)         printf("nn添加,请按1");       printf("n查找,请按2");     printf("n修改,请按3");     printf("n删除,请按4");     printf("n输出,请按5&q

15、uot;);     printf("n退出,请按0n");     scanf("%d",&m);     if(m>=0&&m<=5)         switch(m)                 case   1:   append();           &

16、#160; break;     case   2:   search();     break;     case   3:   modify();     break;     case   4:   remove();     break;     case   5:   output();     break;     case

17、  0:   break;           printf("nn操作完毕,请再次选择!");           else     printf("nn选择错误,请再次选择!");                     void   creat()        

18、 struct   student   one;             long   s1;                 printf("n请输入通讯录名:");             scanf("%s",filename);             if(f

19、p=fopen(filename,"w")=NULL)                 printf("n不能建立通讯录!");     exit();                         fprintf(fp,"%-10s%-20s%-50sn","姓名","电话号码&quo

20、t;,"住址");             printf("n请输入姓名、电话号码及住址(以0结束)n");             scanf("%s",);             while(strcmp(,"0")            

21、    scanf("%s%s",one.tel,one.addr);     fprintf(fp,"%-10s%-20s%-50sn",,one.tel,one.addr);     scanf("%s",);                         fclose(fp);      

22、       void   output()         struct   student   one;                 if(fp=fopen(filename,"r")=NULL)                 printf("n不能打开通讯录!");   

23、60; exit();                         printf("nn%20sn","通   讯   录");             while(!feof(fp)                 fscanf(fp,"%s%s%sn"

24、,,one.tel,one.addr);     printf("%-10s%-20s%-50s",,one.tel,one.addr);                         fclose(fp);             void   append()         struct

25、  student   one;                 if(fp=fopen(filename,"a")=NULL)                 printf("n不能打开通讯录!");     exit();                   

26、60;     printf("n请输入添加的姓名、电话号码及住址n");             scanf("%s%s%s",,one.tel,one.addr);             fprintf(fp,"%-10s%-20s%-50sn",,one.tel,one.addr);           &#

27、160; fclose(fp);             void   search()             int   k=0;             char   namekey8;             struct   student   one;       &

28、#160;         printf("n请输入姓名:");             scanf("%s",namekey);                 if(fp=fopen(filename,"rb")=NULL)                   &#

29、160; printf("n不能打开通讯录!");     exit();                         while(!feof(fp)                     fscanf(fp,"%s%s%sn",,one.tel,one.addr);    

30、if(!strcmp(namekey,)         printf("nn已查到,记录为:");     printf("n%-10s%-18s%-50s",,one.tel,one.addr);     k=1;                                 &#

31、160;           if(!k)         printf("nn对不起,通讯录中没有此人的记录。");             fclose(fp);             void   modify()             int   m,k=0;   &

32、#160;         long   offset;             char   namekey8;             struct   student   one;                 printf("n请输入姓名:");      

33、      scanf("%s",namekey);                 if(fp=fopen(filename,"r+")=NULL)                     printf("n不能打开通讯录!");     exit();        

34、;                 while(!feof(fp)                     offset=ftell(fp);     fscanf(fp,"%s%s%sn",,one.tel,one.addr);     if(!strcmp(namekey,)       &#

35、160; k=1;     break;                                 if(k)             printf("n已查到,记录为:");                     printf(&

36、quot;n%-10s%-18s%-50s",,one.tel,one.addr);                     printf("n请输入新姓名、电话号码及住址:");     scanf("%s%s%s",,one.tel,one.addr);     fseek(fp,offset,SEEK_SET);     printf("%

37、ld",ftell(fp);     fprintf(fp,"%-10s%-20s%-50sn",,one.tel,one.addr);                 else     printf("n对不起,通讯录中没有此人的记录。");             fclose(fp);         &#

38、160;   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)  

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论