学生通讯录管理系统(C语言课程设计实验报告)

时间:2019-05-14 03:02:06下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《学生通讯录管理系统(C语言课程设计实验报告)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《学生通讯录管理系统(C语言课程设计实验报告)》。

第一篇:学生通讯录管理系统(C语言课程设计实验报告)

C语言课程设计报告——刘显安

C语言课程设计

姓名:刘显安 学号:09041131 班级:090411 专业:计算机科学与技术 学院:信息工程学院 设计题目:学生通讯录管理系统

指导教师:宋文琳 提交时间:2010年9月4日

第1页(共25页)

C语言课程设计报告——刘显安

课程题目:学生通讯录管理系统

要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等 主要功能:1、2、3、4、5、通讯录信息录入功能 通讯录信息删除功能 通讯录信息浏览功能 通讯录信息查询功能 按学号排序功能

一、总体设计

首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:

主菜单函数menu()、关于函数gaunyu()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum()、删除函数shanchu()、排序函数paixu()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,第2页(共25页)

C语言课程设计报告——刘显安

但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

二、具体设计

关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。

三、源代码

以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。—————————————————— #include #include #include #include #include #define NULL 0

struct student{

第3页(共25页)

C语言课程设计报告——刘显安

long num;char name[20];int banji;char tel[11];char Email[20];int sushe;struct student *next;};

struct student *stu;int n;

void menu(void){ /*主菜单函数*/ system(“cls”);puts(“****************************************************************************”);puts(“** ^_^学生通讯录管理系统^_^ **”);puts(“****************************************************************************”);puts(“******** 计 ********”);

第4页(共25页)

C语言课程设计报告——刘显安

puts(“******* *******”);puts(“****** 算 ******”);puts(“***** 0 1=录入学生通讯录信息 *****”);puts(“**** 9 机 ****”);puts(“*** ***”);puts(“** 科 **”);puts(“*

*”);puts(“** 1 学 **”);puts(“*** ***”);puts(“**** 与 ****”);puts(“***** *****”);0 4

刘 2=

安 6=

第5页(共25页)

列出所有学生通讯录 3=按姓名查询信息 4=按学号查询信息

5=删除学生信息 按学号将通讯录排序

7=关于

8=帮助

0=退出

C语言课程设计报告——刘显安

puts(“****** 技 ******”);puts(“******* *******”);puts(“******** 术 ********”);puts(“****************************************************************************”);} void guanyu()/*关于函数*/ { system(“cls”);puts(“n ************************** ”);puts(“ *** 版权所有,翻版必究!***”);puts(“**** copyright◎刘显安!****”);puts(“ *** 2009~2010 ***”);puts(“ **************************”);puts(“n返回主菜单请按【9】”);if(getche()=='9')menu();}

struct student *shuru(void)/*输入函数*/

第6页(共25页)

C语言课程设计报告——刘显安

{ system(“cls”);struct student *s1,*s2;n=1;int num;puts(“请输入学生个数(提示:个数不能输入0!):”);scanf(“%d”,&num);s1=s2=(struct student *)malloc(sizeof(struct student));puts(“*************************************************”);puts(“请输入学号:”);scanf(“%ld”,&s1->num);puts(“请输入学生姓名:”);scanf(“%s”,s1->name);puts(“请输入班级:”);scanf(“%d”,&s1->banji);puts(“请输入电话号码:”);scanf(“%s”,s1->tel);puts(“请输入电子邮件:”);scanf(“%s”,s1->Email);puts(“请输入学生宿舍号:”);scanf(“%d”,&s1->sushe);stu=s1;

第7页(共25页)

C语言课程设计报告——刘显安

while(nnext=s1;s2=s1;s1=(struct student *)malloc(sizeof(struct student));puts(“*************************************************”);puts(“请输入学号:”);scanf(“%ld”,&s1->num);puts(“请输入学生姓名:”);scanf(“%s”,s1->name);puts(“请输入班级:”);scanf(“%d”,&s1->banji);puts(“请输入电话号码:”);scanf(“%s”,s1->tel);puts(“请输入电子邮件:”);scanf(“%s”,s1->Email);puts(“请输入学生宿舍号:”);scanf(“%d”,&s1->sushe);n=n+1;} puts(“*************************************************”);s2->next=s1;

第8页(共25页)

C语言课程设计报告——刘显安

s2=s1;s2->next=NULL;return(stu);//system(“cls”);}

void shuchu(struct student *s){ /*输出单个学生信息*/ printf(“* %-8ld”,s->num);printf(“%-15s”,s->name);printf(“%-8d”,s->banji);printf(“%-15s”,s->tel);printf(“%-15s”,s->Email);printf(“%-5d *n”,s->sushe);}

void findall()/*输出所有学生信息*/ { system(“cls”);struct student *s;//if(n=2)//printf(“n现在有%d个学生信息,分别是:n”,n);//else

第9页(共25页)

C语言课程设计报告——刘显安

printf(“n现在有%d个学生信息,分别是:n”,n);puts(“________________________________________________________________________”);puts(“* 学号 姓名 班级 电话 电子邮件 宿舍 *”);s=stu;while(s!=NULL){ shuchu(s);s=s->next;} puts(“________________________________________________________________________”);puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void findname(){ /*按姓名查找函数*/ system(“cls”);struct student *s;char name[20];printf(“n请输入你要查询的学生姓名:n”);

第10页(共25页)

C语言课程设计报告——刘显安

scanf(“%s”,name);s=stu;while(strcmp(s->name,name)!=0){ s=s->next;} if(s==NULL){ puts(“查无此学生姓名!”);goto end;} else { puts(“该学生的信息为:”);puts(“* 学号

姓名

电子邮件 宿舍 *”);shuchu(s);} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

第11页(共25页)

班级

电话

C语言课程设计报告——刘显安

void findnum()/*按学号查找函数*/ { system(“cls”);struct student *s;puts(“请输入你要查询的学生学号:”);long i;scanf(“%ld”,&i);s=stu;

while(s->num!=i){ s=s->next;} if(s==NULL){puts(“查无此学生学号!”);goto end;} else { puts(“该学生的信息为:”);puts(“* 学号 姓名 班级 邮件 宿舍 *”);shuchu(s);

第12页(共25页)

子电话 电C语言课程设计报告——刘显安

} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

struct student *shanchu(struct student*stu)/*删除函数*/ { system(“cls”);long num;char s;struct student *s1,*s2;if(stu==NULL){ puts(“傻冒!没有任何学生信息,还删个屁啊,删删删!”);goto end;} puts(“请输入你要删除的学生学号:”);scanf(“%ld”,&num);s1=stu;puts(“警告:你确定要删除这个学生的信息吗(Y/N)?”);scanf(“%s”,&s);

第13页(共25页)

C语言课程设计报告——刘显安

if((s=='Y')||(s=='y')){ while((num!=s1->num)&&(s1->next!=NULL)){s2=s1;s1=s1->next;}

if(num==s1->num){ puts(“该学生的信息为:”);puts(“* 学号

姓名

班级

电话 电子邮件 宿舍 *”);shuchu(s1);if(s1==stu)stu=s1->next;else s2->next=s1->next;puts(“注意哟,该学生的信息已经删除了!剩下的学生通讯录信息如下:”);n=n-1;} } findall();return(stu);end:;

第14页(共25页)

C语言课程设计报告——刘显安

puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void paixu(){ /*排序函数*/ struct student *p, *p1,*p2;int i,j;int temp;char b[20];if(stu==NULL){printf(“n学生信息不存在n”);goto end;} for(i=0;inext;if(p1->num>p2->num)

{temp=p1->num;p1->num=p2->num;p2->num=temp;

strcpy(b,p1->name);strcpy(p1->name,p2->name);strcpy(p2->nam

第15页(共25页)

C语言课程设计报告——刘显安

e,b);

temp=p1->banji;p1->banji=p2->banji;p2->banji=temp;

strcpy(b,p1->tel);strcpy(p1->tel,p2->tel);strcpy(p2->tel,b);

strcpy(b,p1->Email);strcpy(p1->Email,p2->Email);strcpy(p2->Email,b);temp=p1->sushe;p1->sushe=p2->sushe;p2->sushe=temp;

} p1=p1->next;} } p=stu;puts(“已按学生学号顺序排序完毕!重新排序如下:”);

puts(“****************************************************************************”);puts(“* 学号 姓名 班级 电话 电子邮件 宿舍 *”);

while(p!=NULL)

第16页(共25页)

C语言课程设计报告——刘显安

{ printf(“* %-8ld”,p->num);printf(“%-15s”,p->name);printf(“%-8d”,p->banji);printf(“%-15s”,p->tel);printf(“%-15s”,p->Email);printf(“%-5d *n”,p->sushe);p=p->next;} end:;puts(“返回主菜单请按【9】”);if(getche()=='9')menu();}

void help()/*帮助函数*/ { system(“cls”);puts(“n1、请按提示操作,第一次进入本系统时请按“1”录入学生信息,”);puts(“ 否则有可能造成程序运行错误!”);puts(“

2、添加、修改功能本系统暂不提供,还有待以后完善,谢谢

第17页(共25页)

C语言课程设计报告——刘显安

合作!”);puts(“

3、请注意查看“Num Lock”是否打开,如果没有打开,则按数字n 键可能导致程序错误!”);puts(“

4、版权所有,翻版必究!请按“7”键查看关于。”);puts(“n返回主菜单请按【9】”);if(getche()=='9')menu();}

void main()/*主函数*/ { char a;menu();puts(“n您为首次使用本系统,强烈建议您按1开始录入学生信息,”);puts(“否则有可能导致程序运行错误!您可以按8查看帮助.”);a=getche();while(a){ puts(“");switch(a){case'0':goto end;break;case '1': puts(”n好了,您可以开始向本系统录入学生通讯录信息了:

第18页(共25页)

C语言课程设计报告——刘显安

“);stu=shuru();system(”cls“);menu();puts(”n学生信息录入完毕,请输入你的选择(0~6):n“);

break;case '2':findall();puts(”n请输入你的选择(0~6):“);break;case '3':findname();puts(”n请输入你的选择(0~6):“);break;case '4':findnum();puts(”n请输入你的选择(0~6):“);break;case '5':stu=shanchu(stu);puts(”n请输入你的选择(0~6):“);break;case '6':paixu();puts(”n请输入你的选择(0~6):“);break;case '7':guanyu();puts(”n请输入你的选择(0~6):“);break;case '8':help();puts(”n请输入你的选择(0~6):“);break;default:puts(”输错了!笨蛋!快点按数字1键录入学生信息吧!“);break;} a=getche();} end:;puts(”谢谢您使用本系统,欢迎再次使用!");

第19页(共25页)

C语言课程设计报告——刘显安

} —————————————————————————

四、调试

主要是通过截图来显示运行过程 以下是程序运行的主界面:

按1后,开始录入信息,程序会提示你输入学生个数(例如本例中输入4个),当输完4个学生的信息时,程序会提示你已输入完毕:

第20页(共25页)

C语言课程设计报告——刘显安

学生信息录入完毕,提示输入(0到6)进行选择:

第21页(共25页)

C语言课程设计报告——刘显安

这时我选择按2输出所有学生信息,按9返回:

按3按姓名查询信息:

按4按学号查询信息:

第22页(共25页)

C语言课程设计报告——刘显安

按5删除学生信息,这是按学号删除学生信息,本例中,删除学号为41212的学生信息:

删除成功后,系统自动将剩下的学生信息列出:

按6按学号从小到大进行排序,可以发现,排序成功:

第23页(共25页)

C语言课程设计报告——刘显安

按8查看帮助函数:

呵呵,这是我设置的关于函数,满足一下敝人的虚荣心嘛^_^,版权所有,翻版必究哦!

最后按0退出系统:

第24页(共25页)

C语言课程设计报告——刘显安

呵呵,怎么样?我写的程序还行吧。嘿嘿……

三、总结

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

第25页(共25页)

第二篇:C语言课程设计学生通讯录管理系统设计

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

一、题目内容的描述

学生通讯录管理系统设计

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。

功能要求如下:

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

2、能够按多种方式进行查询,例如按姓名、按电话号码等。

3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。

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

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

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

3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。各项功能均可按照文字提示操作,浅显易懂。

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

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

三、主要模块的算法描述

学生通讯录管理系统

刷新学生信息readfile()

查询学生信息seek()

增加学生信息insert()

显示学生信息display()

退出系统

修改学生信息modify()

删除学生信息del()

保存当前学生信息save()

汇总当前学生数目number()

系统帮助help()

查询学生信息

按姓名查询

退出

按学号查询

开始

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

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

调用menu()菜单函数

进入while()主循环

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

输入是否为0

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

是否已对修改存盘

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

结束

模块一:头文件,变量定义,函数的声明

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

模块二:录入学生信息

声明函数void

readfile(),说明一个文件指针FILE

*fp打开文

件“student.txt“。

模块三:学生信息的查找

声明void

seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支。

模块四:学生信息的修改

声明void

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

所要修改的项目。

模块五:刷新学生信息

声明void

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

实现排序。

模块六:增加学生信息

声明void

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

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

模块七:删除学生信息

声明void

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

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

模块八:显示学生信息

通过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

#define

BUFLEN

#define

LEN

#define

N

struct

record

{

char

code[LEN+1];

char

name[LEN+1];

int

age;

char

sex[3];

char

time[LEN+1];

char

add[30];

char

tel[LEN+1];

char

mail[30];

}stu[N];

int

k=1,n,m;

void

readfile();

void

seek();

void

modify();

void

insert();

void

del();

void

display();

void

save();

void

number();

void

menu();

int

main()

{

while(k)

menu();

system(“pause“);

return

0;

}

void

readfile()//刷新学生信息

{

char

*p=“student.txt“;

FILE

*fp;

int

i=0;

if

((fp=fopen(“student.txt“,“r“))==NULL)

{

printf(“Open

file

%s

error!

Strike

any

key

to

exit!“,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“);

}

void

seek()//查询学生信息

......void

modify()//修改学生信息

......void

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

{

int

i,j,*p,*q,s;

char

temp[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;

}

}

}

void

insert()//增加学生信息

......void

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

{

int

i;

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);

}

}

void

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

{

int

i;

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);

}

void

number()//汇总学生数目

{

int

i,girl,boy=0;

for(i=0;i

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

{boy++;}

girl=n-boy;

printf(“男生人数是:%d\n女生的人数是:%d\n“,boy,girl);

printf(“总的学生人数为:%d“,n);

}

void

help()//系统帮助

{

printf(“输入性别时男为1,女为2“);

printf(“\n3.增加学生信息后,切记保存按7;\n“);

printf(“\n4.谢谢您的使用!\n“);

}

void

menu()//可视化的系统操作界面

{

int

num;

printf(“

\n\n

学生通讯录管理系统

\n\n“);

printf(“

*********************系统功能菜单************************

\n“);

printf(“

--------------------------------

-------------------------------

\n“);

printf(“

1.刷新学生信息

2.查询学生信息

\n“);

printf(“

*********************************************

\n“);

printf(“

3.修改学生信息

4.增加学生信息

\n“);

printf(“

*********************************************

\n“);

printf(“

5.按学号删除信息

6.显示当前信息

\n“);

printf(“

*********************************************

\n“);

printf(“

7.保存当前学生信息

8.汇总学生数目

\n“);

printf(“

*********************************************

\n“);

printf(“

9.系统帮助

10.退出系统

\n“);

printf(“

---------------------------------

------------------------------

\n“);

printf(“

************************************************************

\n“);

printf(“请选择菜单编号:“);

scanf(“%d“,&num);

switch(num)

{

case

1:readfile();break;

case

2:seek();break;

case

3:modify();break;

case

4:insert();break;

case

5:del();break;

case

6:display();break;

case

7:save();break;

case

8:number();break;

case

9:help();break;

case

10:k=0;break;

default:printf(“请在1-10之间选择\n“);

}

}

第三篇:C语言课程设计-通讯录管理

课程设计报告

课程设计题目:

通讯录管理

学生姓名:

业:

级:

指导教师:

2009年6月16日

实验题目:

《通讯录管理》

实验时间、地点:

2009-6-8到2009-6-12日

信工楼307

实验目的:

本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体和文件等相关内容的综合应用,使同学们能进一步熟悉掌握C语言的基本语法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同学们解决问题的能力,并为以后的语言学习打下良好的基础。

实验要求:

1.独立完成;

2.此次课程设计在规定的时间必须在实验室完成,不得以任何理由在其他地点进行;

3.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其他的题目,当然在完成自己的题目之后根据个人兴趣可以继续选做其他的题目;

4.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;

5.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)

6.每个程序实现方式可以自选,可以采用文件、链表、数组或其任意组合完成。

实现思路:

通讯录信息包括:学号,姓名,班级,联系电话,E-MAIL,宿舍等 主要功能:

(1)建立、修改和增删学生通讯录(2)能够按多种方式进行查询

按姓名查询、按学号查询

按宿舍查询

(3)要求:以菜单方式操作,界面友好,易于操作

流程图:

增加

1↓ ↓

保存

查询

a↓

b↓

c↓

按姓名查询

按学号查询

按宿舍查询

2→删除 4→保存

5↓

5↓

退出

退出 实现过程:

3#include #include FILE *fp;int i;char ch;struct member { int number;char name[20];char telephone[13];char xuehao[50];char sushe[20];char email[20];}members[50];void Data_Menu(){ printf(“n----------------------------n”);

printf(“ 学生通讯录 08041238”);printf(“n----------------------------n”);printf(“ 1.Add”);printf(“ 2.Delete”);printf(“ 3.Search”);printf(“ 4.Save”);printf(“ 5.Exit”);printf(“n----------------------------n”);} void Data_Menu1(){ printf(“n”);printf(“ a.Name”);printf(“nb.Xuehao”);printf(“nc.sushe”);} void Data_Load(){ int j;long k;fp=fopen(“members.txt”,“rt”);if(fp!=NULL){ for(i=1;i<50;i++){ j=fgetc(fp);if(j==EOF){ return;} k=i-1;fseek(fp,k*sizeof(struct member),SEEK_SET);fread(&members[i],sizeof(struct member),1,fp);} }else{ fp=fopen(“members.txt”,“a”);i=1;} } void Data_Add(int j){ printf(“n”);members[j].number=j;printf(“ntNo:%d”,j);printf(“ntName:”);scanf(“%s”,members[j].name);printf(“tTelephone:”);scanf(“%s”,members[j].telephone);printf(“tXuehao:”);scanf(“%s”,members[j].xuehao);printf(“tSushe:”);scanf(“%s”,members[j].sushe);printf(“tEmail:”);scanf(“%s”,members[j].email);} void Data_Show(int j){ printf(“ntNo:%d”,members[j].number);printf(“ntName:%s”,members[j].name);printf(“ntTelephone:%s”,members[j].telephone);printf(“ntXuehao:%s”,members[j].xuehao);printf(“ntSushe:%s”,members[j].sushe);printf(“ntEmail:%s”,members[j].email);} void Data_Save(){ int j;fp=fopen(“members.txt”,“a”);for(j=1;j<=i;j++){ fwrite(&members[j],sizeof(struct member),1,fp);} } main(){ char *search_name;char *search_xuehao;char *search_sushe;int j,k;Data_Load();i--;do{ Data_Menu();printf(“ Please Choose:”);ch=getche();switch(ch){ case '1': while(i<50){ i++;Data_Add(i);break;} if(i==50){ printf(“ntMessage is Filled!n”);} break;case '2': if(i<1){ printf(“ntNo Recordsn”);break;} printf(“ntDelete No:”);scanf(“%d”,&k);for(j=k;j

break;case '4': Data_Save();printf(“ Date is Saved!n”);fclose(fp);break;case '5': printf(“nt”);printf(“ Do You Want To Save Message(y/n)”);if(getche()=='y'){ Data_Save();} fclose(fp);exit(0);break;default: break;} }while(1);} 实验总结:

经过几天的努力,终于做出来了,在这过程中自己逐渐提高了对数组、函数、指针、结构体和文件等相关内容的综合应用,并且进一步熟悉掌握C语言的基本语法,提升了自己的编程能力,并逐步培养编程思维,进而不断提高自己解决问题的能力。

心得体会: 实验虽然做成功了,但在此次试验过程中,自己也体会到一些东西:

第一:要细心对待程序的每一个环节,否则得话将会给自己编程带来很大的困扰.第二:要多动手去操作,只有这样才能真正使自己的能力得到真正的提高。

第三:课外要多看以些书,光凭课本上的知识是不够的,要自己自觉地去学习新的知识。

第四篇:C语言-通讯录管理系统

#include #include #include struct record{ charnum[12];char name[10];char birthday[10];char post[10];char phone[15];}data[100];intmenu_select();intcreate_record();intadd_record(int flag);int flag=0;

intfind_record(int flag);intdelete_record(int flag);voidpaixu_record(int flag);intsave_record(int flag);void main(){ for(;;){ switch(menu_select())

{ case 1: printf(“ ***********************************************n”);printf(“ ************** 通讯录的建立 ***************n”);printf(“ ***********************************************n”);flag=create_record();break;case 2: printf(“ ***********************************************n”);printf(“ ************** 通讯录信息的添加 *****************n”);printf(“ ***********************************************n”);flag=add_record(flag);break;case 3: printf(“ ******************************n”);printf(“ ******* 通讯录信息查询 *******n”);printf(“ ******************************n”);find_record(flag);

break;case 4: printf(“ ***********************************n”);printf(“ **********通讯信息的删除***********n”);printf(“ ***********************************n”);delete_record(flag);break;case 5: printf(“ ***********************************n”);printf(“ **********通讯录的存储(D:)*********n”);printf(“ ***********************************n”);save_record(flag);break;case 6: printf(“ ***********************************n”);printf(“ **********通讯者的排序*********n”);printf(“ ***********************************n”);paixu_record(flag);break;case 0: printf(“t 谢谢您的使用!n”);break;

default : break;} } } intmenu_select(){ int i;printf(“

********************

n”);printf(“

Welcome!

n

”);printf(“

Form kuangminn”);printf(“

********************

n”);printf(“

n”);printf(“ n”);printf(“ n”);printf(“

通讯录管理系统

n”);printf(“ n”);printf(“

======================n”);printf(“

1.通讯录的建立n”);printf(“

2.通讯者的添加n”);printf(“

3.通讯录的查询n”);printf(“

4.通讯者的删除n”);printf(“

5.通讯录的存储n”);printf(“

6.通讯者的排序n”);printf(“

0.退出通讯录管理系统n”);printf(“

======================n”);printf(“

请选择操作0-5 nn”);for(;;){ scanf(“%d”,&i);if(i<0||i>6)printf(“t对不起,您的输入错误n”);else break;} return i;} intcreate_record(){inti,j;for(i=0;;)

{ printf(“ 学号(12)姓名(10)出生年月(10)家庭住址(30)邮编(10)电话(15)n”);printf(“-------------n”);scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);i++;printf(“ 想继续创建吗?(1.是/0.不):”);scanf(“%d”,&j);if(!j)

return i;else printf(“恭喜你,创建成功!请继续创建!n”);

} return i;} intadd_record(int flag){ int i=flag,j;for(i;;)

{ printf(“ 学号(12)姓名(10)出生年月(10)家庭住址(30)邮编(10)电话(15)n”);printf(“-------------n”);

scanf(“%s%s%s%s%s%s”,data[i].num,data[i].name,data[i].birthday,data[i].post, data[i].phone);i++;printf(“ 想继续添加吗?(1.是/0.不):”);scanf(“%d”,&j);if(!j)return i;else printf(“恭喜你,添加成功!请继续添加!n”);

} return(i);} intfind_record(){ int i;char number[6];char named[10];intxz;printf(“--------------------n”);printf(“ 1.按学号查询n”);printf(“ 2.按姓名查询n”);printf(“--------------------n”);printf(“ 请选择 : n”);

scanf(“%d”,&xz);if(xz==1){ printf(“ 请输入要查找的学号: ”);scanf(“%s”,number);for(i=0;i

if(strcmp(data[i].num,number)==0)

{ printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;}

} else if(xz=2){ printf(“请输入要查找的姓名: ”);scanf(“%s”,named);for(i=0;i

{ printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);return 0;else {printf(“对不起,没有你要找的人!n”);return 0;} }

else {printf(“对不起,没有你要找的人!n”);return 0;}

}

} intdelete_record(int flag)

{ inti,j;intdeletemark=0;char number[20];printf(“ttt请输入要删除学号:n”);scanf(“%s”,number);for(i=0;i

{ if(strcmp(data[i].num, number)==0)

{ printf(“ttt以下是您要删除的用户纪录:n”);printf(“ ** 学号姓名出生年月家庭住址邮编电话**n”);printf(“------------------------------n”);

printf(“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);printf(“------------------------------n”);

printf(“ttt是否删除?(y/n)”);if(getch()=='y' || getch()=='Y')

{ for(j=i;j

} else return;

} continue;

} if(deletemark==0)

{ printf(“ttt没有该用户的纪录”);

return;

} return;

} voidpaixu_record(int flag){inti,j;struct record tmp;

printf(“ 1.按姓名排序n”);printf(“ 2.按学号排序n”);scanf(“%d”,&i);if(i==1){for(i=1;i

{ if(strcmp(data[i].name, data [i-1].name)<0)

{ tmp= data[i];

j=i-1;do

{ data [j+1]= data [j];j--;}while((strcmp(tmp.name, data [j].name)<0&&j>=0));data [j+1]=tmp;

}

} printf(“ttt排序成功!”);}

if(i==2){for(j=0;jdata[i+1].num)

{tmp=data[i];data[i]=data[i+1];data[i+1]=tmp;} } }

intsave_record(int flag){

FILE*fp;int i;if((fp=fopen(“D:data.txt”,“w+”))==NULL)

{printf(“无法打开文件!”);exit(0);} for(i=0;i

{fprintf(fp,“%s,%s,%s,%s,%s,%sn”,data[i].num,data[i].name,data[i].birthday, data[i].post, data[i].phone);printf(“n”);} fclose(fp);return 0;}

第五篇:C语言程序设计学生通讯录管理系统

#include “stdio.h” #include “stdlib.h” #include “string.h” #include “conio.h” #include “stdlib.h” #define null 0 struct record { char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList { struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();

void main(){

system(“cls”);for(;;){ switch(menu_select()){ case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:add();break;case 4:dele();break;case 5:save();break;case 6:exit(0);} } } menu_select(){ char s[80];int a;printf(“*_* press any key enter menu!*_* n”);getch();system(“cls”);printf(“tt********************MENU*********************nn”);printf(“tt 0.输入记录n”);printf(“tt 1.显示记录 n”);printf(“tt 2.按姓名查找n”);printf(“tt 3.插入记录 n”);printf(“tt 4.删除记录n”);printf(“tt 5.记录保存文件n”);printf(“tt 6.Quitn”);printf(“tt***********************************************n”);do{ printf(“n Enter you choice(0~11):”);scanf(“%s”,s);a=atoi(s);} while(a<0||a>11);return a;}

adduser(){ printf(“ntt**************** 请输入用户信息 ****************n”);printf(“ntt输入姓名:”);scanf(“%s”,&student[num].name);printf(“ntt输入电话号码:”);scanf(“%s”,&student[num].phone);printf(“ntt输入地址:”);scanf(“%s”,&student[num].adress);printf(“ntt输入邮编:”);scanf(“%s”,&student[num].postcode);printf(“ntt输入e-mail:”);scanf(“%s”,&student[num].e_mail);num++;printf(“ntt是否继续添加?(Y/N):”);if(getch()=='y')adduser();return(0);} list(){ int i;system(“cls”);if(num!=0){ printf(“ntt*************** 以下为通讯录所有信息************”);for(i=0;i

printf(“ntt姓名: %s”,student[i].name);printf(“ntt电话: %s”,student[i].phone);printf(“ntt地址: %s”,student[i].adress);printf(“ntt邮编: %s”,student[i].postcode);printf(“ntte-mail:%s”,student[i].e_mail);printf(“tt”);if(i+1

add(){ int i;if((fp=fopen(“student.bin”,“wb”))==NULL){ printf(“ntt文件打开失败”);} for(i=0;i

save(){ int j;FILE*fp;fp=fopen(“student.txt”,“w”);if(fp==NULL)printf(“can't open the file.”);if(num!=0){ for(j=0;j

fwrite(student,sizeof(student),1,fp);} } printf(“保存成功!”);fclose(fp);return(0);}

下载学生通讯录管理系统(C语言课程设计实验报告)word格式文档
下载学生通讯录管理系统(C语言课程设计实验报告).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言大作业——学生通讯录管理系统

    #include #include //#define NULL 0 #define LEN sizeof(struct message) struct message //定义结构体{ char name[15]; char number[15]; char phone[15]; char qq[1......

    湖南工业大学 通讯录管理系统课程设计报告书(C语言)

    湖南工业大学 二〇〇九 ~ 二〇一〇学年 第 二 学期 计算机与通信学院 课程设计报告书 课程名称: C语言课程设计 班 级: 学 号:姓 名: 指导老师: 二〇〇九 年 九 月 通讯录......

    C语言课程设计学生选课系统

    题目一、学生选课管理系统 第一部分:课程设计名称、目的、要求 第二部分:程序总体设计思路 第三部分:程序功能划分、图示及流程图 第四部分:程序设计数据、运行结果 第五部分:程......

    c语言实验报告三 学生成绩管理系统

    1. 实验内容 实现一个学生成绩处理程序,先输入多名学生的学号和成绩,然后进入菜单,可以选择打印,添加,修改,删除或查询成绩(学号查询和成绩段查询)。 2. 实验步骤 2.1 程序1 2.1.1......

    C语言课程设计任务书(学生成绩管理系统)

    课程设计题目:简单的学生成绩管理的程序要求: 一、由键盘输入原始数据。原始数据内容如下: 学号姓名C程序设计高等数学英语线性代数 1王..80808080 2张..90909090 注:要求至少有......

    C语言课程设计 仓库管理系统

    C语言课程设计 仓库管理系统 #include struct cangku { int num; char name[20]; char introdution[50]; float square; }; typedef struct cangku Cangku; int Input(......

    学生通讯录管理系统

    “学生通讯信息记录系统”的设计与实现 一、设计要求 1. 问题的描述 “学生通讯信息记录系统”是为了实现快速的对学生信息进行录入、删除、查找、显示。各个功能靠函数实现......

    C语言课程设计任务书-学生通讯系统(范文模版)

    2007-2008学年第二学期 《C语言程序设计》 课程设计报告 系部: 三系专业班级: 电子资讯工程(2)班 学号:070306210姓名: 冀鹏超设计题目:同学通讯录设计起讫日期: 2008.6.16 至 2008.6......