c语言课程设计报告通讯录管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1设计题目的内容、任务及具体要求
一.需求分析
实现通讯录管理系统
任务:自学C语言有关链表及外部文件的内容,设计出通讯录管理系统,要求如下: ①建立通讯录信息,信息至少包含编号,姓名,年龄,电话,通讯录地址,电子邮箱等;
②能够提供添加,删除和修改通讯录信息的功能;
③能够提供按不同方式查询的功能;如按姓名或年龄,电话等查询;
④将通讯录保存在文件中;
⑤能够按表格方式输出通讯录信息
要求:
1.学生从以上几个设计任务中任选其中一个完成.
2根据以上功能需求,自己定义单链表结点的存储结构;
3.为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名,路径等自定;
4.提供友好的用户界面,方便用户操作.
二.源程序代码
#include
#include
#include
#define BUFLEN 80 /* 缓冲区最大字符数 */
#define LEN 30 /* 学号和姓名最大字符数,实际请更改 */
#define N 200 /* 最大学生人数,实际请更改*/
struct record
{
char code[LEN+1]; /* 学号 */
char name[LEN+1]; /* 姓名 */
int age;
char sex[3];
char time[LEN+1];
char add[LEN+1];
char tel[LEN+1];
char mail[LEN+1];
}stu[N];
int k=1,n,m;
void readfile();/* 函数声明 */
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();
int main()
{ while(k)
menu();
system("pause");
return 0;
}
void readfile()/* 建立信息 */
{
char buf[BUFLEN],*p="student.dat";
FILE *fp;
int i=0;
if ((fp=fopen("student.dat","r"))==NULL) /* 把此程序和文件student.dat放在同一目录下 */
{ 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++;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}
void seek()
{int i,j,item,flag;
char s1[LEN+1]; /* 以姓名和学号最长长度+1为准 */
printf("------------------\n");
printf("1.按学号查询\n");
printf("2.按姓名查询\n");
printf("3.退出本菜单\n");
printf("------------------\n");
while(1)
{ printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("请输入要查询的学生的学号:\n");
scanf("%s",s1);
for(i=0;i if(strcmp(stu[i].code,s1)==0) { flag=1; printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n"); printf("%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); } if(flag==0) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n"); scanf("%s",s1); for(i=0;i if(strcmp(stu[i].name,s1)==0) { flag=1; printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n"); printf("%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); } if(flag==0) printf("该姓名不存在!\n"); break; case 3:return; default:printf("请在1-3之间选择\n"); } } } void modify() /*修改信息*/ {int i,j,item,num; char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */ printf("请输入要要修改的学生的学号:\n"); scanf("%s",s1); for(i=0;i if(strcmp(stu[i].code,s1)==0) num=i; printf("------------------\n"); printf("1.修改姓名\n"); printf("2.修改年龄\n"); printf("3.修改性别\n"); printf("4.修改出生年月\n"); printf("5.修改地址\n"); printf("6.修改电话号码\n"); printf("7.修改E-mail地址\n"); printf("8.退出本菜单\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); switch(item) {