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

上传人:b****1 文档编号:496664 上传时间:2022-10-10 格式:DOCX 页数:12 大小:99.31KB
下载 相关 举报
C语言课程设计学生通讯录管理系统设计说明.docx_第1页
第1页 / 共12页
C语言课程设计学生通讯录管理系统设计说明.docx_第2页
第2页 / 共12页
C语言课程设计学生通讯录管理系统设计说明.docx_第3页
第3页 / 共12页
C语言课程设计学生通讯录管理系统设计说明.docx_第4页
第4页 / 共12页
C语言课程设计学生通讯录管理系统设计说明.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《C语言课程设计学生通讯录管理系统设计说明.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生通讯录管理系统设计说明.docx(12页珍藏版)》请在冰豆网上搜索。

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

C语言课程设计学生通讯录管理系统设计说明

一、题目容的描述

学生通讯录管理系统设计

设计一个学生通信录,学生通迅录数据信息构成容可自行设计(如:

、家庭地址、邮政编码、等等),通信录数据类型定义为结构体类型。

由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。

程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。

功能要求如下:

1、能建立、修改和增删学生通讯录

2、能够按多种方式进行查询,例如按、按等。

3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到存中。

对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将存中修改过的通讯录重新保存至文件。

 

二、应用程序功能的详细说明

1、应用程序实现了可视化的系统操作界面。

2、对学生通讯录形成了系统化的管理,操作简便明了。

3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。

各项功能均可按照文字提示操作,浅显易懂。

4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。

5.可以将信息保存在文件("student.txt")中,亦可将信息从文件中读取出来,灵活方便。

 

三、主要模块的算法描述

开始

以可读写的方式打开一个数据文件

将此文件的内容读出,并存入一个新的结构体类型的数组中。

调用menu()菜单函数

进入while()主循环

输入1-8中的一数值,选择相应操作。

输入是否为0

判断键值,调用相应函数,完成相应功能。

是否已对修改存盘

调用函数save()函数,进行写数据文件操作

结束

模块一:

头文件,变量定义,函数的声明

对系统所使用的变量进行定义,对函数进行声明。

模块二:

录入学生信息

声明函数voidreadfile(),说明一个文件指针FILE*fp打开文

件"student.txt"。

模块三:

学生信息的查找

声明voidseek()为查找函数,通过switch(item)设定用学号查找,

用查找两个分支。

模块四:

学生信息的修改

声明voidmodify()为学生信息修改函数,通过switch(item)设定

所要修改的项目。

模块五:

刷新学生信息

声明voidsort()将录入学生系按升序排列,用的是“冒泡排序法”

实现排序。

模块六:

增加学生信息

声明voidinsert()插入学生信息,先通过判断学生是否存在,若

否则继续输入,若是则跳出,重新循环。

模块七:

删除学生信息

声明voiddel()实现学生信息删除,通过学号对比确定要删除的信

息,然后用后一个替换掉。

模块八:

显示学生信息

通过display()函数输出学生信息。

模块九:

保存信息

通过fp=fopen("student.txt","w");写入信息。

模块十:

汇总学生数目

通过number()函数将已有男女生及总学生数目汇总出来。

模块十一:

系统帮助

通过help()函数帮助操作。

模块十二:

界面菜单

通过switch(num)调用以上各函数,实现功能。

1、程序采用模块化设计,各模块独立,可分块调试,个模块由主函数控制调用。

2、其中主要模块(readfile()、seek()、modify())都是利用数组,指针来实现数据结构设计。

3、数据库设计的任务是确定系统所需要的数据库。

数据库是表的集合,通常一个系统只需一个数据库。

设计人是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。

根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。

通讯信息表包括以下字段:

学号,,年龄,性别,出生年月,地址,,E-mail。

学号为主索引。

 

四、结束语

我设计的程序总体功能大都能够运行顺利,但有许多地方比较复杂,需要进一步修改,进行简化。

通过这次课程设计的锻炼,我收获很多,具体归纳为以下几点:

1、首先,也是最重要的一点,学会如何将一个复杂的问题简化,将一个较大的问题分成几个小问题,再一一解决这些小问题。

在设计一个程序之前,要学会对程序功能进行规划,将其分为几个不同的功能模块,要思路清晰,简单易用;

2、学会灵活运用已有的知识,同时适当的拓展一些知识;比如,这次设计过程中,有一些函数以前就很少用到,甚至没有见过,但对程序的设计及用户界面的改善带来方便;

3、解决问题时,要尽可能考虑全面。

每一个细节都很重要,既要避免功能的重复,也要避免功能疏漏的地方!

4、在这次课程设计过程中,参考了许多资料,发现C语言真的很有意思!

比如我看到一个关于用C语言编写的小程序:

五子棋、俄罗斯方块、推箱子等,等这次课程结束后,我就想利用C语言编写这些小游戏。

曾经认为C是个挺枯燥的课程,现在发现这不仅仅是个简单的课程,而是个很实用的计算机工具!

 

五、程序源代码清单

#include

#include

#include

#defineBUFLEN100

#defineLEN15

#defineN100

structrecord

{

charcode[LEN+1];

charname[LEN+1];

intage;

charsex[3];

chartime[LEN+1];

charadd[30];

chartel[LEN+1];

charmail[30];

}stu[N];

 

intk=1,n,m;

 

voidreadfile();

voidseek();

voidmodify();

voidinsert();

voiddel();

voiddisplay();

voidsave();

voidnumber();

voidmenu();

 

intmain()

{

while(k)

menu();

system("pause");

return0;

}

voidreadfile()//刷新学生信息

{

char*p="student.txt";

FILE*fp;

inti=0;

if((fp=fopen("student.txt","r"))==NULL)

{

printf("Openfile%serror!

Strikeanykeytoexit!

",p);

system("pause");

exit(0);

}

while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)

{

i++;

i=i;

}

fclose(fp);

n=i;

printf("录入完毕!

\n");

}

 

voidseek()//查询学生信息

.

.

.

.

.

.

voidmodify()//修改学生信息

.

.

.

.

.

.

voidsort()//对学生信息按学号排序

{

inti,j,*p,*q,s;

chartemp[10];

for(i=0;i

{

for(j=n-1;j>i;j--)

if(strcmp(stu[j-1].code,stu[j].code)>0)

{

strcpy(temp,stu[j-1].code);

strcpy(stu[j-1].code,stu[j].code);

strcpy(stu[j].code,temp);

strcpy(temp,stu[j-1].name);

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j].name,temp);

strcpy(temp,stu[j-1].sex);

strcpy(stu[j-1].sex,stu[j].sex);

strcpy(stu[j].sex,temp);

strcpy(temp,stu[j-1].time);

strcpy(stu[j-1].time,stu[j].time);

strcpy(stu[j].time,temp);

strcpy(temp,stu[j-1].add);

strcpy(stu[j-1].add,stu[j].add);

strcpy(stu[j].add,temp);

strcpy(temp,stu[j-1].tel);

strcpy(stu[j-1].tel,stu[j].tel);

strcpy(stu[j].tel,temp);

strcpy(temp,stu[j-1].mail);

strcpy(stu[j-1].mail,stu[j].mail);

strcpy(stu[j].mail,temp);

p=&stu[j-1].age;

q=&stu[j].age;

s=*q;

*q=*p;

*p=s;

}

}

}

 

voidinsert()//增加学生信息

.

.

.

.

.

.

voiddisplay()//显示当前学生信息

{

inti;

printf("所有学生的信息为:

\n");

printf("学生学号,学生,年龄,性别,出生年月,地址,,E-mail\n");

printf("--------------------------------------------------------------------\n");

for(i=0;i

{

printf("%6s,%7s,%5d,%5s,%9s,%8s,%10s,%14s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

}

 

voidsave()//保存当前学生信息

{

inti;

FILE*fp;

fp=fopen("student.txt","w");

for(i=0;i

{

fprintf(fp,"%s,%s,%d,%s,%s,%s,%s,%s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

fclose(fp);

}

 

voidnumber()//汇总学生数目

{

inti,girl,boy=0;

for(i=0;i

if(strcmp(stu[i].sex,"1")==0)

{boy++;}

girl=n-boy;

printf("男生人数是:

%d\n女生的人数是:

%d\n",boy

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

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1