c语言中怎么用文件存放数据,数据结构c语言编程

f37716c7e8733c0b7f704c0652d3b580.png

2011-07-01

用C语言编个学生通讯录管理系统,功能有: ①创建通讯录。输入学生的姓名、学号和电话号码等,并且将它们存放在对应的数组中;每输入一组数据,记录数加1。

②显示通讯录。将记录学生姓名、学号和电话号码的数组中的数据输入到屏幕上,可以根据实际记录确定循环次数。

③查询通讯录。分别按学号和姓名进行查询,查询时将输入的信息通过循环与相应数组成员进行比较。

④修改通讯录。输入需要修改记录的学号,通过循环查找到该记录后,再输入新数据替代原有数据。

⑤添加通讯录。判断输入的学号是否重复,若不重复再将输入的信息添加到相应的数组中,每输入一组数据,记录数增加1。

⑥删除通讯录。分别按学号和姓名进行删除。

⑦排序通讯录。分别按学号和姓名进行排序。排序方式可以是升序或降序。

⑧退出。

本人在编程方面是菜鸟,希望各位高手帮帮我,最迟要在周五弄出来,谢谢啦!

小修改一下,如下:#include//通讯录#include#include#include#defineN100intM=0;structstudent{charnum[10];charname[10];chartel[12];};voidmyprint(){system("cls");printf("|-----------------------------------------------|\n");printf("|:-)请输入选项编号(0-7):|\n");printf("|-----------------------------------------------|\n"...全部

小修改一下,如下:#include//通讯录#include#include#include#defineN100intM=0;structstudent{charnum[10];charname[10];chartel[12];};voidmyprint(){system("cls");printf("|-----------------------------------------------|\n");printf("|:-)请输入选项编号(0-7):|\n");printf("|-----------------------------------------------|\n");printf("|--------------1--创建通讯录--------------------|\n");printf("|--------------2--显示通讯录--------------------|\n");printf("|--------------3--查询通讯录--------------------|\n");printf("|--------------4--修改通讯录--------------------|\n");printf("|--------------5--添加通讯录--------------------|\n");printf("|--------------6--删除通讯录--------------------|\n");printf("|--------------7--排序通讯录--------------------|\n");printf("|--------------0--退出--------------------------|\n");printf("|-----------------------------------------------|\n");}voidmycreat(structstudent*p,intn){structstudent*q=p;FILE*fp=NULL;fp=fopen("d:\\jilu。

dat","w");if(fp==NULL){printf("error,无法创建文件");return;}printf("\n初始创建,输入要创建同学的个数(后期可以添加):");do{scanf("%d",&M);}while(M9);n=M;for(p=q;p-qnum);}while(strcmp(p->num,"")==0);printf("姓名:");gets(p->name);printf("电话:");gets(p->tel);fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);}}voidmydisplay(structstudent*p,intn){FILE*fp=NULL;fp=fopen("d:\\jilu。

dat","r");if(fp==NULL){printf("error");return;}system("cls");printf("%23s%15s%15s","学号","姓名","电话\n");while(n>0){fscanf(fp,"%23s%15s%15s",p->num,p->name,p->tel);printf("%23s%15s%15s\n",p->num,p->name,p->tel);p++;n--;}}voidmysearch(structstudent*p,intn){structstudent*q=p;intflag=0;charc='\0',nm[10]="",nam[10]="";printf("\n按照学号查询(h)或姓名查询(m):\n");c=getche();if(c=='h'||c=='H'){printf("请输入要查询记录的学号:");gets(nm);for(p=q;p-qnum)==0){printf("%23s%15s%15s","学号","姓名","电话\n");printf("%23s%15s%15s\n",p->num,p->name,p->tel);flag=1;}if(flag==0)printf("wrong。

。。\n");}elseif(c=='m'||c=='M'){printf("请输入要查询记录的姓名:");gets(nam);for(p=q;p-qname)==0){printf("%23s%15s%15s","学号","姓名","电话\n");printf("%23s%15s%15s\n",p->num,p->name,p->tel);flag=1;}if(flag==0)printf("wrong。

。。\n");}elseprintf("wrong。。。\n");}voidmymodify(structstudent*p,intn){structstudent*q=p;FILE*fp=NULL;charnam[10]="";mydisplay(p,n);printf("请输入您想要修改记录的姓名:\n");gets(nam);for(p=q;p-qname)==0)break;if(p-q==n)printf("wrong。

。。");else{printf("请输入正确的学号:");dogets(p->num);while(strcmp(p->num,"")==0);printf("请输入正确的姓名:");gets(p->name);printf("请输入正确的电话:");gets(p->tel);}fp=fopen("d:\\jilu。

dat","w");if(fp==NULL){printf("error");exit(0);}for(p=q;p-qnum,p->name,p->tel);fclose(fp);}voidmyadd(structstudent*p,intn){FILE*fp=NULL;structstudent*q=p;charc='\n',tempnum[10]="",tempname[10]="",temptel[10]="";printf("\n");while(strcmp(p->num,"")!=0){printf("%23s%15s%15s\n",p->num,p->name,p->tel);p++;}n=p-q;do{printf("请输入新同学的学号:");dogets(tempnum);while(strcmp(tempnum,"")==0);printf("请输入新同学的姓名:");gets(tempname);printf("请输入新同学的电话:");gets(temptel);for(p=q;p-qnum)==0||strcmp(temptel,p->tel)==0){printf("学号或电话号码需要重新输入吗(Y/N)?");c=getche();putchar('\n');break;}if(p-q==n){strcpy(p->num,tempnum);strcpy(p->name,tempname);strcpy(p->tel,temptel);break;}}while(c=='y'||c=='Y');fp=fopen("d:\\jilu。

dat","w");if(fp==NULL){printf("error");return;}for(p=q;p-qnum,p->name,p->tel);fclose(fp);M++;}voidmydelete(structstudent*p,intn){FILE*fp=NULL;structstudent*q=p;charc[10]="",tempnum[10]="",tempname[10]="",temptel[10]="",choose='\0';mydisplay(p,n);printf("选择删除记录的方式:学号(h)姓名(m)");choose=getche();printf("\n");if(choose=='m'||choose=='M'){printf("删除的记录:");gets(c);for(;p-qname)==0)break;if(p-qnum,(p+1)->num);strcpy(p->name,(p+1)->name);strcpy(p->tel,(p+1)->tel);}elseprintf("no\n");}elseif(choose=='h'||choose=='H'){printf("删除的记录:");gets(c);for(;p-qnum)==0)break;if(p-qnum,(p+1)->num);strcpy(p->name,(p+1)->name);strcpy(p->tel,(p+1)->tel);}elseprintf("no");}elseprintf("wrong\n");fp=fopen("d:\\jilu。

dat","w");if(fp==NULL){printf("error");return;}for(p=q;p-qnum,p->name,p->tel);fclose(fp);M--;}voidmysort(structstudent*p,intn){FILE*fp=NULL;structstudent*q=p,*w=p,*a=p;chartemp[10]="",c1='\0',c2='\0';mydisplay(p,n);printf("选择按照学号(h)或姓名(m)排序:\n");c1=getche();if(c1=='h'||c1=='H'){printf("升序(s)或者降序(j)排列:");c2=getche();if(c2=='s'||c2=='S')for(;p-anum,q->num)>0)w=q;strcpy(temp,w->num);strcpy(w->num,p->num);strcpy(p->num,temp);strcpy(temp,w->name);strcpy(w->name,p->name);strcpy(p->name,temp);strcpy(temp,w->tel);strcpy(w->tel,p->tel);strcpy(p->tel,temp);}elseif(c2=='j'||c2=='J')for(;p-anum,q->num)num);strcpy(w->num,p->num);strcpy(p->num,temp);strcpy(temp,w->name);strcpy(w->name,p->name);strcpy(p->name,temp);strcpy(temp,w->tel);strcpy(w->tel,p->tel);strcpy(p->tel,temp);}elseprintf("555wrong。

。。\n");}elseif(c1=='m'||c1=='M'){printf("升序(s)或者降序(j)排列:");c2=getche();if(c2=='s'||c2=='S')for(;p-aname,q->name)>0)w=q;strcpy(temp,w->num);strcpy(w->num,p->num);strcpy(p->num,temp);strcpy(temp,w->name);strcpy(w->name,p->name);strcpy(p->name,temp);strcpy(temp,w->tel);strcpy(w->tel,p->tel);strcpy(p->tel,temp);}elseif(c2=='j'||c2=='J')for(;p-aname,q->name)num);strcpy(w->num,p->num);strcpy(p->num,temp);strcpy(temp,w->name);strcpy(w->name,p->name);strcpy(p->name,temp);strcpy(temp,w->tel);strcpy(w->tel,p->tel);strcpy(p->tel,temp);}elseprintf("555wrong。

。。\n");}elseprintf("555wrong。。。\n");fp=fopen("d:\\jilu。dat","w");if(fp==NULL){printf("error");return;}for(p=a;p-anum,p->name,p->tel);fclose(fp);}main(){charchoose='\0',yes_no='\0';structstudentrecord[N]={0};do{myprint();printf(":-)请选择(0-7):");choose=getche();switch(choose){case'1':mycreat(record,M);break;case'2':mydisplay(record,M);break;case'3':mysearch(record,M);break;case'4':mymodify(record,M);break;case'5':myadd(record,M);break;case'6':mydelete(record,M);break;case'7':mysort(record,M);break;case'0':exit(0); ("\nerror。

。。

\n");}printf("\n:-)继续选择吗(y/n)?\n");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no=='Y'||yes_no=='y');}。收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值