C语言课程设计报告 下载本文

C语言课程设计论文

学生姓名:学生学号:所在班级:任课教师:

陈丹

20091020101

信息与计算科学一班

马老师

通讯录管理系统

【设计目的】

设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。 (1) 数据包括:人名、工作单位、电话号码和E-mail地址。 (2) 可对记录中的姓名和电话号码进行修改。 (3) 可增加或删除记录。 (4) 可显示所有保存的记录。

(5) 可按人名或电话号码进行查询。

【设计思路】

根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。

【总体设计】

通讯录管理系统 数据输入 数据添加 数据修改 查找 删除 浏览

图1 系统功能模块图

【详细设计】

1. 主函数

主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】

开始 显示一系列功能选项 n 输入n,判断n是否是1~7 ? 根据n的值调用各功能模块函数 结束

图2. 主函数流程图

Void menu() /*主界面*/ {

int n, w1;

void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do {

puts(\菜单*****************************\\t\\n\\n\ puts(\新建联系人\ puts(\添加联系人\ puts(\修改\ puts(\删除\ puts(\浏览\ puts(\查找\ puts(\退出\

puts(\通讯录******************************\\t\\n\ printf(\请选择服务种类(1-7) : [ ]\\b\\b\ scanf(\ if(n<1||n>7)

{w1=1;getchar();} else w1=0;

}while(w1==1); switch(n) {

case 1: enter(); break; /*输入模块*/ case 2: add(); break; /*添加模块*/

附录:源代码

#define N 50

#include #include struct people

{char name[20]; char company[50]; char num[15]; char mail[20];}peop[N];

void printf_face()

{ printf(\姓名\\t单位\\t电话号码\\t邮箱\\n\

void printf_one(int i)

{ printf(\

void printf_n(int n) { int j;

for(j=0;j

{ if((j!=0)&&(j==0)) {printf(\ printf_one(j); } getchar(); }

int load() { FILE *fp; int i;

if((fp=fopen(\{ printf(\ exit(0); }

for(i=0;!feof(fp);i++)

fread(&peop[i],sizeof(struct people),1,fp); fclose(fp); return(i-1); }

int modify_data(int i,int n)

{ int c,w1; void input(int i); void menu(); do

{ puts(\修改选项=>\\n\\n 1).姓名 2).单位 3).电话号码 4).邮箱 5).所有数据 6).取消并返回\

printf(\请选择?: [ ]\\b\\b\ scanf(\

if(c>6||c<1) {puts(\

}while(c>6||c<1); do

{ switch(c)

{ case 1: printf(\

case 2: printf(\ case 3: printf(\ case 4: printf(\ case 5: input(i); break; case 6: menu(); }

puts(\

printf_face(); printf_one(i);

printf(\确定?\\n\\n\\t1).是 2).不,重新修改 3).返回不保存 [ ]\\b\\b\ scanf(\ }while(w1==2); return(w1); }

void input(int i)

{ printf_face(); printf(\

scanf(\

void save(int n) { FILE *fp; int i;

if((fp=fopen(\ { printf(\ exit(0); }

for(i=0;i

if(peop[i].name[0]!='\\0')

if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1) printf(\ fclose(fp); }

void printf_back() {

int w; void browse(); void menu(); printf(\

printf(\浏览所有\\t2).返回: [ ]\\b\\b\ scanf(\ if(w==1) browse(); else menu(); }