学生信息登录录入c语言编程,学生信息录入小程序,大家都来帮忙看看哈!!!...

/*基于C-Free 5.0*/

#include"stdio.h"

#include"stdlib.h"

#include"ctype.h"

#include"process.h"

#include"string.h"

#include"conio.h"

typedef struct node

{

char name[10];

char age[3];

char sex[5];

char telephonenumber[20];

char adress[50];

struct node *link;

}STU;

STU *head=NULL;/*全局变量head,指向链表的头地址*/

/*函数申明*/

STU *Creat();

STU *First_Add(STU *h);/*添加第一个联系人,返回第一个节点的头指针*/

STU *Futher_Add(STU *front);/*添加联系人,返回添加结点的首地址*/

STU *Search(STU *h,char *x);/*查找联系人,返回查找节点的头指针*/

STU *FSearch(STU *h,char *x);/*查找所查联系人的前节点,返回前节点的指针*/

void OutPut(STU *search);/*输出一条记录*/

void Delete(char *x);/*删除一条记录*/

void AllShow(STU *h);/*显示所有联系人*/

void SaveRecord(STU *head);/*将记录保存到c:\通讯录.txt中*/

void End();/*退出函数*/

/*程序的主函数*/

int main()

{

char s[20];

int i;

STU *h=NULL,*search=NULL;

char _name[10];

head=Creat();

while(1)

{

system("cls");/*TC2.0中用 clrscr(),以下类似*/

printf("\t\t-----------**\1欢迎来到通讯录系统\1**--------\n");

printf("\t\t            版本号:1.0 作者: **           \n");

printf("\t\t-------------------------------------------\n");

printf("\t\t-------------------主要功能----------------\n");

printf("\t\t     1:     \2 |* 添加首个联系人 *| \2      \n");

printf("\t\t     2:     \2 |*   追加联系人   *| \2      \n");

printf("\t\t     3:     \2 |*   查找联系人   *| \2      \n");

printf("\t\t     4:     \2 |*   删除联系人   *| \2      \n");

printf("\t\t     5:     \2 |* 显示所有联系人 *| \2      \n");

printf("\t\t     6:     \2 |*   保存到文件   *| \2      \n");

printf("\t\t     0:     \2 |*     退 出      *| \2      \n");

printf("\t\t     \3\7 友情提示:请输入0~6来选择功能:");

do{

scanf("%s",s);

i=atoi(s);

}while(i<0||i>6);/*输入不在0~6之间,重输入*/

switch(i)

{

case 1:system("cls");h=First_Add(head);break;

case 2:{

system("cls");

if(head->link==NULL)  printf("\1\7警告:请先创建第一个联系人!\n");

else  h=Futher_Add(h);

getch();

}break;

case 3:{

system("cls");

printf("\7小提示:请输入您要查找人的姓名:\n");

scanf("%s",_name);

search=Search(head,_name);

if(search!=NULL)

{

printf("*姓名*     *年龄*     *性别*        *电话号码*     *地址*                 \n");

OutPut(search);

printf("***********************************结束**********************************\n");

}

else printf("\7很遗憾,没有查到这个人哪!...\n");

getch();

}break;

case 4:{

system("cls");

printf("\7小提示:请输入您要删除人的姓名:\n");

scanf("%s",_name);

Delete(_name);

getch();

}break;

case 5:{

system("cls");

printf("*姓名*     *年龄*     *性别*        *电话号码*     *地址*                 \n");

AllShow(head);

printf("***********************************结束***********************************\n");

getch();

}break;

case 6:system("cls");SaveRecord(head);break;

case 0:End();break;

}

}

return 0;

}

STU *Creat() /*创建头结点,返回头指针*/

{

STU *h;

if((h=(STU *)malloc(sizeof(STU)))==NULL)

{

printf("\7警告:内存空间无法分配!\n");

exit(0);

}

h->name[0]='\0';

h->age[0]='\0';

h->sex[0]='\0';

h->telephonenumber[0]='\0';

h->adress[0]='\0';

h->link=NULL;

return h;

}

STU *First_Add(STU *h)/*添加第一个联系人,返回第一个节点的头指针*/

{

STU *s;

if((s=(STU *)malloc(sizeof(STU)))==NULL)

{

printf("\7警告:内存空间无法分配!\n");

exit(0);

}

h->link=s;

printf("\1请输入以下信息:\n");

printf("*姓名*     *年龄*     *性别*        *电话号码*     *地址*                 \n");

printf("-------------------------------------------------------------------------\n");

scanf("%s%s%s%s%s",s->name,s->age,s->sex,s->telephonenumber,s->adress);

printf("\2\7 恭喜你,首个联系人创建成功!\2\n");

printf("\3温馨提示:按任意键继续...");

getch();

s->link=NULL;

return s;

}

STU *Futher_Add(STU *front)/*添加联系人,返回结点的首地址*/

{

STU *s;

system("cls");

if((s=(STU *)malloc(sizeof(STU)))==NULL)

{

printf("\7警告:内存空间无法分配!\n");

exit(0);

}

front->link=s;

printf("*姓名*     *年龄*     *性别*        *电话号码*     *地址*                 \n");

printf("-------------------------------------------------------------------------\n");

scanf("%s%s%s%s%s",s->name,s->age,s->sex,s->telephonenumber,s->adress);

printf("\2\7 恭喜你,一个联系人添加成功!\2\n");

printf("\3温馨提示:按任意键继续...");

getch();

s->link=NULL;

return s;

}

/*查找函数,返回查找到结点的头指针,若没查到,返回NULL*/

STU *Search(STU *h,char *x)

{

STU *p;

char *name;

system("cls");

p=h->link;

while(p!=NULL)

{

name=p->name;

if(strcmp(name,x)==0) return p;

else p=p->link;

}

return p;

}

/*查找函数,返回查找结点前结点的首地址,若没查到,返回最后结点的首地址*/

STU *FSearch(STU *h,char *x)

{

STU *p,*s;

char *name;

system("cls");

s=h;

p=h->link;

while(p!=NULL)

{

name=p->name;

if(strcmp(name,x)==0) return s;

else

{

p=p->link;

s=s->link;

}

}

return s;

}

void OutPut(STU *search)/*输出一条记录*/

{

printf("-------------------------------------------------------------------------\n");

printf("%-12s%-12s%-12s%-15s%-12s\n",search->name,search->age,search->sex,search->telephonenumber,search->adress);

}

void Delete(char *x)/*删除联系人*/

{

STU *p=NULL,*fp=NULL;

p=Search(head,x);

system("cls");

if(p==NULL) printf("\2通讯录中没有这个人呀!...");

else{

fp=FSearch(head,x);

fp->link=p->link;

free(p);

printf("\2\7提示:联系人成功删除!");

}

}

void AllShow(STU *h)/*显示所有联系人*/

{

STU *p=h->link;

while(p!=NULL)

{

OutPut(p);

p=p->link;

}

}

void SaveRecord(STU *h)/*将记录保存到c:通讯录.txt中*/

{

STU *p=h->link;

FILE *fp=NULL;

printf("\7记录正在保存到C:\\通讯录.txt中……\n");

if((fp=fopen("C:\\通讯录.txt","w"))==NULL)

{

printf("\7文件无法打开哦……\n");/*没打开*/

exit(1);  /*退出*/

}

fprintf(fp,"*姓名*     *年龄*     *性别*        *电话号码*     *地址*                 \r\n");

fprintf(fp,"-------------------------------------------------------------------------\r\n");

while(p!=NULL)

{

fprintf(fp,"%-12s%-12s%-12s%-15s%-12s\r\n",p->name,p->age,p->sex,p->telephonenumber,p->adress);

fprintf(fp,"-------------------------------------------------------------------------\r\n");

p=p->link;

}

fclose(fp);

printf("\n\2\7提示:文件成功保存到C:\\通讯录.txt中!\n");

getch();

}

void End()/*退出函数*/

{

system("cls");

char s[20];

int i=0;

printf("\t\t\7您是否将通讯录信息保存到文件啦?\n");

printf("\t\t\3 1:我已经保存好了啊!\n");

printf("\t\t\3 2:没呢,请帮我保存!\n");

printf("\t\t\3 3:我不想保存了……  \n");

printf("\t\t\1 请选择:");

do{

scanf("%s",s);

i=atoi(s);

}while(i<1||i>3);

switch(i)

{

case 1:break;

case 2:SaveRecord(head);break;

case 3:break;

}

exit(0);

}

我以前写的,交流交流哈。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值