![](https://i-blog.csdnimg.cn/blog_migrate/4ffca910957ca35c1686e463aff97ca1.png)
通讯录管理系统源代码文件资源传送门:
(1条消息) 通讯录管理系统源代码文件-C++文档类资源-CSDN文库.
1、课程设计目的 |
C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C语言程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
|
2、课程设计任务与要求: |
本次课程设计利用《C语言程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求: 1、对系统进行功能需求分析 2、设计合理的数据结构和系统框架 3、编程简练,程序功能齐全,能正确运行 4、说明书、流程图要清楚 5、课题完成后必须按要求提交课程设计报告
任务: 以本班同学的具体数据为背景,设计一个本班同学通讯录。
实现功能: 1) 通讯录编辑(添加、删除)。 2) 按不同的项进行查找。 3) 对已存在的通讯录按不同的项排序。 4) 将通讯录写入文件 5)从文件读入通讯录
备注:通讯录至少应该有以下数据项: 姓名,地址,电话,邮编,E-mail。 |
|
概要设计 (1)人数不定,每输入一个人编号。 (2)记录每位同学的姓名、电话号码、地址、邮编和E-mail。 (3)可对记录中的姓名和电话号码等进行修改。 (4)可增加或删除记录 (5)加入查询功能,通过姓名或电话号码查询到同学的条目。 (6)在开始画面加入简单的菜单便于选择功能。 (7)将信息保存在文件。
(2)系统功能需求: <1>记录功能:记录每位同学的姓名、电话号码、地址、邮编和E-mail <2>查找功能:按不同方式查找信息 <3>添加功能:添加信息 <4>排序功能:将信息按照姓名排序 <5>删除功能:删除指定的信息 <6>保存在文件:将做完的信息保存在文件 <7>结束:结束程序 (3)函数说明 选择功能函数 void next() { void show(); void seek(); void add(); void sort(); void out(); void keep(); int end(); int b; printf("\t***********************NEXT**************************\n"); printf("\t请选择接下来的操作:"); scanf("%d",&b); printf("\t*****************************************************\n"); switch(b) { case 1 :show();break; case 2 :seek();break; case 3 :add();break; case 4 :sort();break; case 5 :out();break; case 6 :keep();break; case 7 :end();break; } } 输入函数 void write() { void next(); void write1(); printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); write1(); } void write1() { void next(); void write2(); int a; printf("是否输入:"); scanf("%d",&a); printf("\n"); switch(a) { case 1 :write2();break; case 2 :next();break; } } void write2() { void write1(); j=i+1; printf("%d\t",j); scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail); i=i+1; write1(); } 1.输出函数 void show() { void next(); int s=0; printf("\t下面将会显示输入的数据:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); for(i=0;i<j;i++) { s=s+1; printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); } printf("\t显示结束\n"); next(); } 2.查找函数 void seek() { int q; void numberseek(); void nameseek(); printf("\t请选择搜索方式:1~按名字查找\n\t 2~按家庭电话号码查找\n"); printf("\t请选择查找方式:"); scanf("%d",&q); switch(q) { case 1 :nameseek();break; case 2 :numberseek();break; }
} void nameseek() { void next(); char d[5]; printf("\t请输入要查找学生的名字:"); scanf("%s",d); for(i=0;i<j;i++) { if(strcmp(d,stu[i].name)==0) { printf("\t你要查找的学生信息为:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); break; } else continue; } next(); } void numberseek() { void next(); int e; printf("\t请输入要查找的电话号码:"); scanf("%d",&e); for(i=0;i<j;i++) { if(e==stu[i].phone) { printf("\t你要查找的学生信息为:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); break; } else continue; } next(); } 3.添加函数 void add() { void next(); void write1(); i=j; printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); write1(); } 4.排序函数 void sort() { void next(); void show(); int h,g,x; char temp; for(i=0;i<(j-1);i++) { h=i; for(g=i+1;g<j;g++) { if(strcmp(stu[h].name,stu[g].name)==0) h=g; if(h!=i) { strcpy(temp,stu[i].name);strcpy(stu[i].name,stu[h].name);strcpy(stu[h].name,temp); x=stu[i].phone;stu[i].phone=stu[h].phone;stu[h].phone=temp; strcpy(temp,stu[i].adress);strcpy(stu[i].adress,stu[h].adress);strcpy(stu[h].adress,temp); x=stu[i].postcode;stu[i].postcode=stu[h].postcode;stu[h].postcode=temp; strcpy(temp,stu[i].e_mail);strcpy(stu[i].e_mail,stu[h].e_mail);strcpy(stu[h].e_mail,temp); } } } printf("排序成功\n"); show(); } 5.删除函数 void out() { void next(); int t,h,v; printf("\t请输入要删除的学生编号:"); scanf("%d",&t); h=i; for(v=t-1;v<h;v++) { strcpy(stu[v].name,stu[v+1].name); stu[v].phone=stu[v+1].phone; strcpy(stu[v].adress,stu[v+1].adress); stu[v].postcode=stu[v+1].postcode; strcpy(stu[v].e_mail,stu[v+1].e_mail); } j=j-1; printf("\t删除完毕\n"); next(); } 6.保存函数 void keep() { void next(); FILE *fp; int v=0; char filename[10]; printf("请输入要保存的文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("文件无法打开\n"); exit(0); } fprintf(fp,"\t姓名\t电话号\t地址\t邮编\tE-mail\n"); for(i=0;i<j;i++) { v=v+1; fprintf(fp,"%d\t%s\t%d\t%s\t%d\t%s\n",v,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); } fclose(fp); printf("已经保存在文件%s中",filename); next(); } 7.结束函数 int end() { void next(); int g; printf("\t是否关闭程序:\n1:是\t2:否\n"); printf("\t请输入你的选择:"); scanf("%d",&g); switch(g) { case 1 :return 0; case 2 :next(); } return 0; } 遇到的问题
|
4.课程设计成果 |
程序源代码 #include<stdio.h> #include<stdlib.h> #include<string.h> struct Student { char name[20]; int long phone; char adress[40]; int postcode; char e_mail[30]; }stu[100]; int j=0,i=0; void next() { void show(); void seek(); void add(); void sort(); void out(); void keep(); int end(); int b; printf("\t***********************NEXT**************************\n"); printf("\t请选择接下来的操作:"); scanf("%d",&b); printf("\t*****************************************************\n"); switch(b) { case 1 :show();break; case 2 :seek();break; case 3 :add();break; case 4 :sort();break; case 5 :out();break; case 6 :keep();break; case 7 :end();break; } } void write() { void next(); void write1(); printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); write1(); } void write1() { void next(); void write2(); int a; printf("是否输入:"); scanf("%d",&a); printf("\n"); switch(a) { case 1 :write2();break; case 2 :next();break; } } void write2() { void write1(); j=i+1; printf("%d\t",j); scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail); i=i+1; write1(); } void show() { void next(); int s=0; printf("\t下面将会显示输入的数据:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); for(i=0;i<j;i++) { s=s+1; printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); } printf("\t显示结束\n"); next(); } void seek() { int q; void numberseek(); void nameseek(); printf("\t请选择搜索方式:1~按名字查找\n\t 2~按家庭电话号码查找\n"); printf("\t请选择查找方式:"); scanf("%d",&q); switch(q) { case 1 :nameseek();break; case 2 :numberseek();break; }
} void nameseek() { void next(); char d[5]; printf("\t请输入要查找学生的名字:"); scanf("%s",d); for(i=0;i<j;i++) { if(strcmp(d,stu[i].name)==0) { printf("\t你要查找的学生信息为:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); break; } else continue; } next(); } void numberseek() { void next(); int e; printf("\t请输入要查找的电话号码:"); scanf("%d",&e); for(i=0;i<j;i++) { if(e==stu[i].phone) { printf("\t你要查找的学生信息为:\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); break; } else continue; } next(); } void add() { void next(); void write1(); i=j; printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n"); printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n"); write1(); } void sort() { void next(); void show(); int h,g,x; char temp; for(i=0;i<(j-1);i++) { h=i; for(g=i+1;g<j;g++) { if(strcmp(stu[h].name,stu[g].name)==0) h=g; if(h!=i) { strcpy(temp,stu[i].name);strcpy(stu[i].name,stu[h].name);strcpy(stu[h].name,temp); x=stu[i].phone;stu[i].phone=stu[h].phone;stu[h].phone=temp; strcpy(temp,stu[i].adress);strcpy(stu[i].adress,stu[h].adress);strcpy(stu[h].adress,temp); x=stu[i].postcode;stu[i].postcode=stu[h].postcode;stu[h].postcode=temp; strcpy(temp,stu[i].e_mail);strcpy(stu[i].e_mail,stu[h].e_mail);strcpy(stu[h].e_mail,temp); } } } printf("排序成功\n"); show(); } void out() { void next(); int t,h,v; printf("\t请输入要删除的学生编号:"); scanf("%d",&t); h=i; for(v=t-1;v<h;v++) { strcpy(stu[v].name,stu[v+1].name); stu[v].phone=stu[v+1].phone; strcpy(stu[v].adress,stu[v+1].adress); stu[v].postcode=stu[v+1].postcode; strcpy(stu[v].e_mail,stu[v+1].e_mail); } j=j-1; printf("\t删除完毕\n"); next(); } void keep() { void next(); FILE *fp; int v=0; char filename[10]; printf("请输入要保存的文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("文件无法打开\n"); exit(0); } fprintf(fp,"\t姓名\t电话号\t地址\t邮编\tE-mail\n"); for(i=0;i<j;i++) { v=v+1; fprintf(fp,"%d\t%s\t%d\t%s\t%d\t%s\n",v,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail); } fclose(fp); printf("已经保存在文件%s中\n",filename); next(); } int end() { void next(); int g; printf("\t是否关闭程序:\n1:是\t2:否\n"); printf("\t请输入你的选择:"); scanf("%d",&g); switch(g) { case 1 :return 0; case 2 :next(); } return 0; } int main() { int ch; printf("\t********************开始*********************\n\n"); printf("\t 1. 显示通讯录\n"); printf("\t 2. 查找\n"); printf("\t 3. 添加通讯录\n"); printf("\t 4. 按姓名排序\n"); printf("\t 5. 删除通讯录\n"); printf("\t 6. 将记录保存在文件\n"); printf("\t 7. 结束\n"); printf("\t***********************************************\n"); printf("\t请先输入信息\n"); write(); return 0; }
|
5.课程设计心得 |
通过为期一周的课程设计,我对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
|