勉强可以使用的小程序。。
程序代码:
#include<stdio.h> #include<string.h> struct student { int num; char name[20]; char sex; int date; int l; }; //定义结构体。 int main() { void head(); //声明界面函数。 int find(struct student a[],int n); //声明查找函数。 int add(struct student a[],int n); //声明添加函数。 int delate(struct student a[],int n); //声明删除函数。 int altet(struct student a[],int n); //声明修改函数。 int print(struct student a[],int n); //声明打印函数。 struct student a[50]={{1110,"xiaosan",'m',19920423,1234593},{2201,"lisi",'m',19921102,3847294}, {1293,"laoxie",'m',19910221,2938263},{2736,"xiening",'w',19920530,3847292}}; //定义结构体数组。 int k,f,b,d=1; //d 控制循环,b控制选择。 do { head(); scanf("%d",&b); //输入选择的功能。 switch (b) { case 1: find(a,50);break; case 2: add(a,50);break; case 3: delate(a,50);break; case 4: altet(a,50);break; case 5: print(a,50);break; //调用各功能函数。 case 6: d=0;break; default: d=0;break; } } while(d==1); printf("谢谢使用!!!\n"); return 0; } void head() //定义界面函数。 { printf("\t\t欢迎使用同学录系统\n"); printf("*****************************************************\n"); printf("请选择服务:\n"); printf("\n\n\n"); printf("1、查找 2、添加 3、删除 4、修改 5、打印 6、退出"); printf("\n\n\n"); printf("*****************************************************\n"); } int find(struct student a[],int n) //定义查找函数。实参是struct student a[50]这个结构体数组。 { //这里的struct student a[],是形参。 int i,h=1; //局部变量。 char name[20]; //定义数组,用于存放输入的名字。 printf("请输入要查找的人的姓名:"); scanf("%s",name); for(i=0;a[i].num!=0;i++) { //这里比较输入的名字与原来定义的结构体数组中的名字,等于零则 if(strcmp(a[i].name,name)==0) { //输出相应的信息。 printf("**********************************************************\n"); printf("您要查找的人的信息如下:\n\n\n"); printf("学号\t姓名\t\t性别\t生日\t\t联系方式\n"); printf("%d\t%s\t\t%c\t%d\t%d\n",a[i].num,a[i].name,a[i].sex, a[i].date,a[i].l); printf("\n\n"); printf("谢谢使用!!\n"); printf("**********************************************************\n"); h=0; break; } } if(h==1) { printf("**********************************************************\n"); printf("\n\n\n"); printf("\t\t没找到您要找的人!\n"); printf("\t\t谢谢使用!!\n\n\n"); printf("**********************************************************\n"); } printf("\n\n\n"); return 0; } int add(struct student a[],int n) //定义添加函数。 { printf("*******************************************************************\n\n"); printf("\t请输入同学的信息:\n"); int i; for(i=0;i<n;i++) { if(a[i].num==0) //查找到第一个没存放数据的数组单元,然后在其后的数组单元进行输入添加。 { printf("输入学号:"); scanf("%d",&a[i].num); printf("输入姓名:"); scanf("%s",a[i].name); getchar(); //接收enter键的输入结束对名字的输入。 printf("输入性别:"); scanf("%c",&a[i].sex); getchar(); printf("输入生日:"); scanf("%d",&a[i].date); printf("输入联系方式:"); scanf("%d",&a[i].l); printf("\n\n添加成功!!! 谢谢使用!!!\n\n"); break; } } printf("********************************************************************\n\n"); return 0; } int delate(struct student a[],int n) // 定义删除函数。。 { int i,j,h=1; char name[20]; printf("*******************************************************************\n\n"); printf("\t请输入要删除的人的名字: "); scanf("%s",name); getchar(); for(i=0;a[i].num!=0;i++) { if(strcmp(a[i].name,name)==0)//首先查找,找到了对应的人所在的数组单元 { //然后其后面的数组单元的值往前移 j=i; //用for循环控制前移。 for(;j<n;j++) { a[j]=a[j+1]; } printf("删除成功!谢谢使用!!\n\n"); h=0; break; } } if(h==1) { printf("没找到这个人。谢谢使用!!\n\n"); } printf("*******************************************************************\n"); return 0; } int altet(struct student a[],int n) //定义修改函数。 { int i,h=1; char name[20]; printf("*******************************************************************\n\n"); printf("请输入您要修改的人的名字:"); scanf("%s",name); getchar(); for(i=0;a[i].num!=0;i++) { if(strcmp(a[i].name,name)==0) //首先查找,再处理。 { printf("请重新输入同学的信息:\n"); printf("学号:"); scanf("%d",&a[i].num); printf("姓名:"); scanf("%s",a[i].name); getchar(); printf("性别:"); scanf("%c",&a[i].sex); printf("生日:"); scanf("%d",&a[i].date); printf("联系方式:"); scanf("%d",&a[i].l); printf("修改成功!! 谢谢使用!!\n\n"); h=0; break; } } if(h==1) { printf("没找到您要找的人。谢谢使用!!\n\n"); } printf("*****************************************************************\n\n\n\n"); return 0; } int print(struct student a[],int n) //定义打印函数。 { int i; printf("*****************************************************************\n"); printf("所有同学的信息如下:\n"); printf("学号\t姓名\t\t性别\t生日\t\t联系方式\n"); for(i=0;a[i].num!=0;i++) { printf("%d\t%s\t\t%c\t%d\t%d",a[i].num,a[i].name,a[i].sex,a[i].date,a[i].l); printf("\n\n"); } printf("*****************************************************************\n\n\n\n"); return 0; } 虽然还是有小问题而且是比较笨的方法,但还是想分享分享。 呵呵。。。。。写代码的过程真的很有收获,首先是考验自己的耐性,然后是考验自己的细心,而且通过写代码会暴露自己平时某些相当然的逻辑思维和一些常犯的小错误。大错误是很难出现的,因为大错误我们都比较留心,出现错误的往往是自己不在意的小细节。。