程序设计语言课程设计.docx
《程序设计语言课程设计.docx》由会员分享,可在线阅读,更多相关《程序设计语言课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
程序设计语言课程设计
本题:
学生通讯系统
要求:
如下:
学生通信录信息包括:
姓名、学号、年龄、性别、家庭住址、联系电话、寝室号等信息。
现要求编写程序来完成如下功能:
1)学生通信录信息的输入;
2)学生的通信录信息删除和修改;
3)学生的通信录信息查询和统计功能;
4)学生的通信录信息输出显示。
(答案如下:
)
学生通讯系统
*、程序的算法流程图;
*、程序中所用的数据结构说明;
*、程序代码;
#include
#include/*与malloc.h差不多*/
#include
#include
usingnamespacestd;
#definemaxlen15
structpersons
{intnum;/*定义结构体数组用于缓存数据*/
charname[20];
chare_addr[20];
chartel_no[15];
charage;
chararch;
charsex
charxuehao;
}persons[maxlen];
typedefstructlnode
{/*通讯录结构中结点的定义*/
intnum;
charname[20];
chare_addr[20];
chartel_no[15];
charage;
chararch;
charsex;
charxuehao;
structlnode*next;
}listnode,*linklist;
linklisthead=NULL,r=NULL;/*定义头指针和尾指针*/
listnode*s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
inti;
charname1[10],ch;
chartel_no1[15];
chararch1;
charage;
chare_addr1[20];
chars1[20]
charsex[4];
charxuehao[30];
FILE*fp;/*定义文件指针*/
voidcreat()/*将文件的信息读入结构体数组在转存入链表中*/
{intj;
longk;
fp=fopen("数据文件.txt","rt");/*打开文件*/
if(fp!
=NULL)
{for(i=0;i<=maxlen;i++)
{j=fgetc(fp);
if(j==EOF)
return;
k=i;
fseek(fp,k*sizeof(structpersons),0);/*读取一个人的信息*/
fread(&persons[i],sizeof(structpersons),1,fp);
s=(linklist)malloc(sizeof(listnode));/*装存入链表中*/
s->num=persons[i].num;
strcpy(s->name,persons[i].name);
strcpy(s->e_addr,persons[i].e_addr);
strcpy(s->tel_no,persons[i].tel_no);
s->sim_no=persons[i].sim_no;
s->arch=persons[i].arch;
if(head==NULL)/*用尾插法将其插入链表中*/
{head=s;r=head;head->next=NULL;}
else
{r->next=s;
r=s;r->next=NULL;
}
}fclose(fp);
}
else
{fp=fopen("数据文件.txt","w");/*不能打开另开辟一个文件*/
i=1;
}
}
voidShow()
{printf("成功调用该函数\n");}
voidDelete()
{printf("成功调用该函数\n");}
voidInput()/*向.通讯录中输入一个人的信息*/
{s=(linklist)malloc(sizeof(listnode));
printf("\n\n\t请输入该用户的信息:
");
printf("姓名:
");
scanf("%s",&s->name);
printf("学号:
");
scanf("%s",&s->xuehao);
printf("电话号码:
");
scanf("%s",&s->tel_no);
printf("年龄:
");
scanf("%s",&s->age);
printf("性别:
");
scanf("%s",&s->sex);
printf("地址:
");
scanf("%s",&s->e_addr);
printf("寝室号:
");
scanf("%s",&s->arch);
if(head==NULL)printf("\n\n");
else
{p8=head;
while(p8!
=NULL&&strcmp(s->name,p8->name)!
=0&&strcmp(s->tel_no,p8->tel_no)!
=0)
p8=p8->next;
if(p8!
=NULL)
{printf("您添加的用户已存在!
");
free(s);}}
if(head==NULL)
{
s->next=0;
head=s;
r=s;
}
else
{
s->next=0;
r->next=s;
r=s;
}
}
voidAlter()
{printf("success!
\n");}
intmain()
{
system("colora");
creat();
do
{
printf("\n\n\t\t请选择操作:
");
printf("\n\t\t1.显示通讯录");
printf("\n\t\t2.删除通讯录");
printf("\n\t\t3.添加通讯录");
printf("\n\t\t4.编辑通讯录");
printf("\n\n\n");
printf("\t请选择:
");
cin>>ch;
switch(ch)
{case'1':
Show();/*用单条件多选择语句实现调用与循环*/
break;
case'2':
Delete();
break;
case'3':
Input();
break;
case'4':
Alter();
break;
fclose(fp);
exit(0);
break;
default:
printf("\n\tThenumshould1-6!
!
!
\n");
break;
}
}
while
(1);
inti,m,a;
i=0;
CARDcontact[100],*cp;
cp=contact;
if((fp=fopen("contact_list.bin","a+"))==NULL)
{
printf("erroronopenfile\n");
getch();
exit
(1);
}
while(!
feof(fp))
{
if(fread(cp+n,sizeof(CARD),1,fp)==1)
n++;
}
fclose(fp);
printf("\t\topenfilesuccess");
printf("\n\n\n\t\tNow%dcontactsonfile",n);
printf("\n\t\tpessanykeytocontinue");
getch();
while
(1)
{
menu();
printf("\t%dcontactsonfile",n);
printf("\n\t\tchoosethenumber:
");
scanf("%d",&m);
switch((int)m)
{
case1:
system("cls");
printf("%dcontacts",n);
list(cp,n);
printf("\n\n\t\tpressanykeytocontinue");
getch();
break;
case2:
cp=contact;
for(i=n;i<100;i++)
{
input(cp+i);
state2:
printf("\n\n\t1.continue\n\t2.done\n");
fflush(stdin);
scanf("%d",&a);
switch((int)a)
{
case1:
break;
case2:
n=i;
gotostate1;
default:
printf("error:
wrongkeypressed\n");
gotostate2;
}
}
state1:
n=n+1;
break;
case3:
system("cls");
search(contact,n);
getch();
break;
case4:
system("cls");
cp=contact;
n=del(cp,n);
break;
case5:
sort(cp,n);
break;
case6:
save(cp,n);
break;
case7:
reload(cp,fp);
break;
case8:
gotostate;
}
}
state:
system("cls");
printf("\n\n\n\t\t\t\tBye\n");
getch();
}
voidinput(CARD*cp)
{
intx;
system("age");
printf("name:
");
fflush(stdin);
gets(cp->name);
printf("\nphonenumber:
");
gets(cp->phonenumber);
printf("\naddress:
");
gets(cp->address);
printf("\ne-sex:
");
gets(cp->sex);
printf("\ngroup:
chooseanumber\n1.family\n2.colleague\n3.friend\n");
scanf("%d",&x);
switch((int)x)}
intsearch(CARD*cp,intn)
{
ints,i;
charnamefor[20],phonenumberfor[20];
printf("\n\nsearchon:
\n1.name2.phonenumber\n");
fflush(stdin);
scanf("%d",&s);
if(s==1)
{
printf("pleaseenterthename:
\n");
fflush(stdin);
gets(namefor);
for(i=0;i<=n;i++)
{
if(strcmp((cp+i)->name,namefor)==0)
{
printf("\n\n\nSearchresult:
\n\n");
printf("%s\t",(cp+i)->age);
printf("%s\t",(cp+i)->name);
printf("%s\t",(cp+i)->phonenumber);
printf("%s\t",(cp+i)->address);
printf("%s\t",(cp+i)->sex);
printf("%s\t",(cp+i)->xuehao);
return(i);
}
}
}
elseif(s==2)
{
printf("pleaseenterthephonenumber:
\n");
gets(phonenumberfor);
for(i=0;i<=n;i++)
{
if(strcmp((cp+i)->phonenumber,phonenumberfor)==0)
{
printf("\n\n\nSearchresult:
\n\n");
printf("%s\t",(cp+i)->age);
printf("%s\t",(cp+i)->name);
printf("%s\t",(cp+i)->phonenumber);
printf("%s\t",(cp+i)->address);
printf("%s\t",(cp+i)->sex);
printf("%s\t",(cp+i)->xuehao);
return(i);
}
}
}
printf("\nNosuchfileexist,pressanykeytocontinue\n\t");
getch();
return-1;
}
voidmenu()
{
system("cls");
printf("\n\nWelcometothecontactsystem\n");
printf("\n\n-----------copyright-----DongChao---------------------\n\n\n\n");
printf("\n\nPleasechoosethenumber\n\n\n\n");
printf("\t1.list2.input3.search4.delete\n\t5.sort6.save7.reload\n\n");
printf("\t8.exit\n\n\n\n\t");
}
intdel(CARD*cp,intn)
{
intd,i,a;
printf("\n\n\tDeletecontact:
");
d=search(cp,n);
if(d!
=-1)
{
printf("\n\nAreyousuretodeletethiscontact?
\n\t1.Yes2.No\n");
scanf("%d",&a);
if(a==1)
{
for(i=d;i<=n;i++)
{
strcpy((cp+i)->name,(cp+i+1)->age);
strcpy((cp+i)->name,(cp+i+1)->name);
strcpy((cp+i)->phonenumber,(cp+i+1)->phonenumber);
strcpy((cp+i)->address,(cp+i+1)->address);
strcpy((cp+i)->mail,(cp+i+1)->sex);
strcpy((cp+i)->group,(cp+i+1)->xuehao);
}
n=n-1;
return(n);
}
elseif(a==2)
{
printf("\n\tpressanykeytocontinue");
getch();
}
}
if(d==-1)
{
printf("Nosuchfileexist,pressanykeytocontinue\n\t");
getch();
}
}
voidlist(CARD*cp,intn)
{
inti;
printf("\nnamephonenumber\taddress\t\te-mail\tgroup\n");
i=0;
while(i{
printf("%s\t",(cp+i)->age);
printf("%s\t",(cp+i)->name);
printf("%s\t",(cp+i)->phonenumber);
printf("%s\t",(cp+i)->address);
printf("%s\t",(cp+i)->sex);
printf("%s\t",(cp+i)->xuehao);
i++;
}
}
voidsave(CARD*cp,intn)
{
FILE*fp;
inti=0;
if((fp=fopen("contact_list.bin","w"))==NULL)
{
printf("erroronopenfile\n");
getch();
exit
(1);
}
for(i=0;i{
if(fwrite(cp+i,sizeof(CARD),1,fp)==1)
{
continue;
}
else
{
break;
}
}
if(i>0)
{
system("cls");
printf("\n\tSavecomplete,pressanykeytocontinue");
getch();
}
else
{
system("cls");
printf("\n\tnocontactissaved");
getch();
}
fclose(fp);
}
voidsort(CARD*cp,intn)
{
inti,j;
CARDcontactsort[100],*sp;
sp=contactsort;
j=0;
system("cls");
printf("\n\n\tsortthecontactsof\n\n\t\t1.family2.colleague3.friend\n\t\t");
states:
printf("pleasechoose:
");
scanf("%d",&i);
switch((int)i)
{
case1:
for(i=0;i{
if(strcmp((cp+i)->group,"family")==0)
{
strcpy((cp+i)->name,(cp+i+1)->age);
strcpy((cp+i)->name,(cp+i+1)->name);
strcpy((cp+i)->phonenumber,(cp+i+1)->phonenumber);
strcpy((cp+i)->address,(cp+i+1)->address);
strcpy((cp+i)->mail,(cp+i+1)->sex);
strcpy((cp+i)->group,(cp+i+1)->xuehao);
j++;
}
}
list(sp,j);
if(j==0)
{
printf("\t\tNofileoffamily");
}
printf(",pressanykeytocontinue");
getch();
break;
case2:
for(i=0;i{
if(strcmp((cp+i)->group,"colleague")==0)
{
strcpy((cp+i)->name,(cp+i+1)->age);
strcpy((cp+i)->name,(cp+i+1)->name);
strcpy((cp+i)->phonenumber,(cp+i+1)->phonenumber);
strcpy((cp+i)->address,(cp+i+1)->address);
strcpy((cp+i)->mail,(cp+i+1)->sex);
strcpy((cp+i)->group,(cp+i+1)->xuehao);
j++;
}
}
list(sp,j);
if(j==0)
{
printf("\t\tNofileofcolleague");
}
printf(",pressanykeytocontinue");
getch();
break;
case3:
for(i=0;i{
if(strcmp((cp+i)->group,"friend")==0)
{
strcpy((cp+i)->name,(cp+i+1)->age);
strcpy((cp+i)->name,(cp+i+1)->name);
strcpy((cp+i)->phonenumber,(cp+i+1)->phonenumber);
strcpy((cp+i)->address,(cp+i+1)->address);
strcpy((cp+i)->mail,(cp+i+1)->sex);
strcpy((cp+i)->group,(cp+i+1)->xuehao);
j++;
}
}
list(sp,j);
if(j==0)
{
printf("\n\n\t\tNofileoffriend");
}
printf(",pressanykeytocontinue");
getch();
break;
default:
printf("\nerror:
wrongkeypressed,pressanykeytocontinue");
getch();
gotostates;
}
}
voidreload(CARD*cp,FILE*fp)
{
inti=0;
system("cls");
fp=fopen("contact_list.bin","r");
while(!
feof(fp))
{
if(fread(cp+i,sizeof(CARD),1,fp)==1);
i++;
}
printf("\n\n\n\t\t\t%dcontactsonfile,pressanykeytocontinue\n\t\t",i-1);
getch();
fclose(fp);
}
*、心得体会。
1,开始
第一次真正的感觉到自己是学计算机专业的,第一次真正自己完成一个大型的程序,
刚开始拿到汇编程序设计题的时