计算机科学系
课程设计报告
2012 — 2013学年 第二学期
        C语言程序课程设计     
        学生通讯录管理系统     
周慧    雷娜  向静  聂佩   
          44    34    41      36     
  12级计算机科学与技术2   
                             

     
1.设计任务
  1.1题目与要求………………………………………………(1
1.2本系统涉及的知识点……………………………………(1
  2.功能设计
      2.1算法设计…………………………………………………(2
  2.2主要模块流程图…………………………………………(3
  3.程序代码设计
  3.1输入模块…………………………………………………(4
  3.2输出模块…………………………………………………(5
  4.总结……………………………………………………………(7
  参考文献…………………………………………………………(13
system的头文件  附录………………………………………………………………(14

1设计任务书
1.1 题目与要求
本组计划(成员为:周慧,雷娜,向静,聂佩合作)编写一个学生通讯录管理系统,主要用来管理学生基本信息。具体要求如下:
    1) 通讯录编辑(添加、删除); 
2) 按不同的项进行查; 
3) 对已存在的通讯录按不同的项排序; 
4) 将通讯录写入文件; 
5) 从文件读入通讯录 
    根据分工,周慧的主要工作是通讯录的录入及通讯录的添加。
    根据分工,雷娜的主要工作是查询菜单,按邮编、姓名、电话的不同方式分别进行通讯录的查。
    根据分工,向静的主要工作是删除菜单,包括删除所有和删除单个,删除的方式有按邮编、姓名删除。
根据分工,聂佩的主要工作是负责排序菜单及文件的保存退出,排序包括按姓名排序和按邮编排序。
l.2 本系统涉及的知识点
if语句、while语句、for语句、switch语句函数与处理、函数的定义与声明、    内部函数与外部函数结构体数组和结构体与函数的运用。
  Strcmp函数要与头文件string连用,用来从左至右比较ASCII码值大小,当前者比后者小,则返回小于0值,如果前者比后者大则返回大于0的值,相等就返回值为0
  System(pause)与头文件stdlib连用,调用系统命令,表示”press any key
  Getch()函数与头文件<conio.h>连用,其原型函数为int getch(void)
  Ftell(fp) 返回当前位置相对文件开始的相对偏移量;否则返回值为-1
  Exit0)表示正常退出,非0值表示异常退出,所在头文件为stdio.h
  System(cls)stdlib头文件连用,表示清屏功能。
2 功能设计
2.1 算法设计
    1)本系统需要实现的功能要求:
利用switch语句设计如图1所示的主菜单:请输入选项编号(16 
        1——新添记录
        2——查询菜单
        3——删除菜单
        4——排序菜单
        5——保存退出
        6——不保存退出
1 学生通讯录系统主菜单
2)选择2后,调用查询函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数 
2 查询子菜单
3)选择3后,调用删除函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数 
 
3 删除子菜单
4) 选择4后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数 
 
                        4 排序子菜单
2.2 主要模块流程图
学生通讯录信息系统
5 学生通信录流程图
3 程序代码设计
3.1输入模块
1、函数原形:void readfromfile()void newrecord()
2、功能:用来判断和输入相应的进入主菜单的提示,输入num个学生信息(包括学生姓名、电话号码、地址、邮编、e-mail,每输入一个学生的信息就判断是否继续
3、变量及类型:fp,为指针类型;为文本文件类型
4、说明::学生信息输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型num变量赋值时,会将缓冲区中的回车键当成数据存入变量中
5、模块代码及其相关注释 
文件读入的代码及其相应注释:
if((fp=fopen("","rb"))==NULL)
{
  printf("\n\t\t通讯录文件不存在");
  if((fp=fopen("","wb"))==NULL)
  {
  printf("\n\t\t建立失败");
  exit(0);
  }
  else
  {
  printf("\n\t\t通讯录文件已建立");
  printf("\n\t\t按任意键进入主菜单");
  getch();
  return;
  }
  exit(0);
}
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/
if (ftell(fp)>0) /*文件不为空*/
{
rewind(fp); /*文件位置指针移动到文件开始位置*/
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键返回主菜单");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。