网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 调查报告
  • 调研报告
  • 社会实践报告
  • 工作报告
  • 自查报告
  • 百花范文网 > 报告 > 调研报告 > 用c语言制作通讯录 [C语言课程设计学生通讯录管理系统设计]

    用c语言制作通讯录 [C语言课程设计学生通讯录管理系统设计]

    时间:2020-08-14 00:02:22来源:百花范文网本文已影响

    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<stdio.h> #include<stdlib.h> #include<string.h> #define BUFLEN 100 #define LEN 15 #define N 100 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<n-1;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<n;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<n;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<n;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语言课程设计学生通讯录管理系统设计 用c语言制作通讯录 c语言课程设计通讯录

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座