C语言学生通信录系统管理项目

简介: 1.定义变量2.主函数3.菜单函数4.创建文件并打开5.保存文件函数6.添加学生信息7.修改学生信息8.删除学生信息9.查询学生信息(按位置)10.查询学生信息(按编号)11.查询学生信息(按姓名)12.整体学生信息查看

目录


1.定义变量


2.主函数


3.菜单函数


4.创建文件并打开


5.保存文件函数


6.添加学生信息


7.修改学生信息


8.删除学生信息


9.查询学生信息(按位置)


10.查询学生信息(按编号)


11.查询学生信息(按姓名)


12.整体学生信息查看


题目要求:


设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。

1.主要功能:

(1) 能建立、修改、增加和删出学生通讯录,

(2) 能够按位置、编号、姓名方式进行查询和进行整体查询。

2.要求:界面友好,易于操作,采用二进制文件存储数据。


小结:


本文采用纯c语言输入 但是会导致内存浪费,比较复杂化。适合新手,有的函数运用“goto语句”会大大简化方便代码。会根据这篇博客阅读量等 来判断是否写下一篇博客——动态版通讯录和链表通讯录


废话不多说,直接上代码。


1.定义变量

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<io.h>

#define max 200

         //功能函数

int menu();    //菜单函数

int  add();    //添加函数

int read_a();  //读取创建文件

int save();    //保存信息到文件

int look();    //查看整体学生信息函数

int update();   //修改一个学生信息

int delete();   //删除一个学生信息

int inquire();

int inquiree();

int inquireee();

struct student

{

char name[20];   //姓名、家庭地址、邮政编码、电话号码、编号

char address[20];

char mail[20];

char number[20];

char bianhao[20];

};

struct date

{

   int count;

   struct student stu[max];

}da;


2.主函数

int main()

{

int a;

read_a();   //文件操作

menu();

printf("请输入功能号:\n");

while (1)

{  

scanf("%d",&a);

switch (a)  

{  

case 1:

  add();

  break;

case 2:  

 update();

 break;  

case 3:  

 dalete();

 break;  

case 4:

 inquire();

 break;  

case 5:  

  inquiree();

  break;  

case 6:

  inquireee();

  break;  

case 7:

  look();  

  break;  

default:

 printf("输入错误,请重新输入");

}

}

return 0;

}


3.菜单函数

int menu()

{

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

printf("\t\t\t***   (1)添加信息        ***\n");

printf("\t\t\t***   (2)修改信息        ***\n");

printf("\t\t\t***   (3)删除信息        ***\n");

printf("\t\t\t***   (4)查询信息(按位置)***\n");

printf("\t\t\t***   (5)查询信息(按编号)***\n");

printf("\t\t\t***   (6)查询信息(按姓名)***\n");

printf("\t\t\t***   (7)查看信息        ***\n");

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

printf("请输入功能号:");

   return 0;

}


4.创建文件并打开

int read_a()

{

struct student st;

FILE* pa;

int i, k=0;

if (access("D:\\bsk_1.txt", 0) == -1)

{

 pa = fopen("D:\\bsk_1.txt", "w");

 fwrite(&k, sizeof(int), 1, pa);

 fclose(pa);

}            

//判断是否存在,不存在会自动创建一个

pa = fopen("D:\\bsk_1.txt", "r");

fread (&k, sizeof(int), 1, pa);

da.count = k;

for (i = 0; i < k; i++)

{                      //写入学生信息到文件      

 fread(&st, sizeof(struct student ), 1, pa);

 strcpy(da.stu[i].name, st.name);

 strcpy(da.stu[i].address, st.address);

 strcpy(da.stu[i].mail, st.mail);

 strcpy(da.stu[i].number, st.number);

 strcpy(da.stu[i].bianhao, st.bianhao);

}

fclose(pa);

return 0;

}


5.保存文件函数

int save()

{

   FILE*pa;

   int i,k;

   k=da.count;

   pa=fopen("D:\\bsk_1.txt","w");

   fwrite(&k,sizeof(int),1,pa);

   for(i=0;i<k;i++)

       fwrite(&da.stu[i],sizeof(struct student),1,pa);

   fclose(pa);

   return 0;

}

6.添加学生信息

int add()

{

 int i,b,k,j;

 struct student st;

while(1)

{

 j=0;

q:printf("请输入学生信息\n");

printf("请输入学生姓名:");

scanf("%s",st.name);

printf("请输入学生地址:");

scanf("%s",st.address);

printf("请输入学生邮箱:");

scanf("%s",st.mail);

printf("请输入学生电话:");

scanf("%s",st.number);

printf("请输入学生编号:");

scanf("%s",st.bianhao);

for (i = 0; i < da.count; i++)

{

 if (strcmp(da.stu[i].name, st.name) == 0)

 {

  printf("输入重复,请重新输入\n");

  j = 1;

  break;

 }

 }

 if (j == 1)

  continue;

 if (j == 0)

 {

  k = da.count;

  strcpy(da.stu[k].name, st.name);

  strcpy(da.stu[k].address, st.address);

  strcpy(da.stu[k].mail, st.mail);

  strcpy(da.stu[k].number, st.number);

  strcpy(da.stu[k].bianhao, st.bianhao);

  da.count++;

   save();

   x:printf("是否继续添加信息:1 是  2 否\n");

    scanf("%d",&b);

    if(b==2)

       goto s;

   else if (b==1)

      goto q;

    else

       printf("输入有误,请重新输入:");

       goto x;

}

}

   s: menu();

return 0;

}


7.修改学生信息

int update()

{

   int a,i,b,flag;

 while(1)

{

  flag=0;

  printf("请输入要修改的学生信息的位置:\n");

  scanf("%d",&a);

  a=a-1;

  for(i=0;i<da.count;i++)

{

   if(i==a)

{

    printf("请输入学生姓名:");

    scanf("%s",da.stu[i].name);

    printf("请输入学生地址:");

    scanf("%s",da.stu[i].address);

    printf("请输入学生邮箱:");

    scanf("%s",da.stu[i].mail);

    printf("请输入学生电话:");

    scanf("%s",da.stu[i].number);

    printf("请输入学生编号:");

    scanf("%s",da.stu[i].bianhao);

flag=1;

save();

a:printf("修改成功,是否继续修改:1 是 2 否");

scanf("%d",&b);

if(b==1)

       ;

else if(b==2)

 goto x;

else

  printf("输入有误\n");

  goto a;

}

}

  if(flag==0)

 printf("输入学生位置不存在,请重新输入\n");

}

   x: menu();

   return 0;

}


8.删除学生信息

int dalete()

{

   int i,a,b;

   int flag;

   while(1)

   {

       flag=0;

       printf("请输入删除学生的位置\n");

   scanf("%d",&a);

   a=a-1;          

//减一:是为了与现实生活更接近,因为只有程序员知道第一个元素的数组下标是0

   for(i=0;i<da.count;i++)

   {

       if(i==a)

       {

           for(i=a;i<da.count;i++)

           {

           strcpy(da.stu[i].name,da.stu[i+1].name);

           strcpy(da.stu[i].address,da.stu[i+1].address);

           strcpy(da.stu[i].mail,da.stu[i+1].mail);

           strcpy(da.stu[i].number,da.stu[i+1].number);

           strcpy(da.stu[i].bianhao,da.stu[i+1].bianhao);

           da.count--;

           save();

           flag=1;

           printf("删除成功");

           a:printf("是否继续删除:1 是 2 否\n");

           scanf("%d",&b);

           if(b==1)

               break;

           else if(b==2)

               goto x;

           else

               printf("输入有错误\n");

               goto a;

               break;

   }

   }

   }

   if(flag==0)

   printf("输入学生位置不存在,请重新输入:\n");

   }

    x: menu();

   return 0;

}


9.查询学生信息(按位置)

int inquire()

{    int i,a,b;

    int k;

    while(1)

   {

   k=1;

   printf("请输入需要查询学生信息的位置\n");

   scanf("%d",&a);

   a=a-1;

   for(i=0;i<da.count;i++)

   {

    if(i==a)

   {  printf("%s\t%s\t%s\t%s\t%s\t",da.stu[i].name,da.stu[i].address,da.stu[i].mail,da.stu[i].number,da.stu[i].bianhao);

        k=0;

        a:printf("\n是否继续查询:1 是 2 否");

        scanf("%d",&b);

        if(b==2)

           goto x;

        else if(b==1)

                 ;

        else

           printf("输入错误");

           goto a;

   }

   }

   if(k==1)

       printf("输入错误\n");

       printf("\n");

   }

   x: menu();

   return 0;

}


10.查询学生信息(按编号)

int inquiree()

{

   int i,b;

   char a[20];

   int flag;

   while(1)

   {

       flag=0;

   printf("请输入学生编号:");

   scanf("%s",&a);

   for(i=0;i<da.count;i++)

   {

   if(strcmp(da.stu[i].bianhao,a)==0)

   {

       printf("已找到\n");

       flag=1;

       printf("%s\t%s\t%s\t%s\t%s\t",da.stu[i].name,da.stu[i].address,da.stu[i].mail,da.stu[i].number,da.stu[i].bianhao);

       a:printf("\n是否继续查询:1 是 2 否");

        scanf("%d",&b);

        if(b==2)

           goto x;

        else if(b==1)

           break;

        else

           printf("输入错误\n");

           goto a;

           break;

    }

    }

     if(flag==0)

       printf("输入错误\n");

   }

   x: menu();

   return 0;

}


11.查询学生信息(按姓名)

int inquireee()

{

   int i,b;

   char a[20];

   int flag;

   while(1)

   {

       flag=1;

   printf("请输入学生姓名:");

   scanf("%s",&a);

   for(i=0;i<da.count;i++)

   {

       if(strcmp(da.stu[i].name,a)==0)

   {

        printf("已找到\n");

        flag=0;

      printf("%s\t%s\t%s\t%s\t%s\t",da.stu[i].name,da.stu[i].address,da.stu[i].mail,da.stu[i].number,da.stu[i].bianhao);

      a: printf("\n是否继续查询:1 是 2 否");

      scanf("%d",&b);

      if(b==2)

           goto x;

      else if(b==1)

           break;

      else

           printf("输入错误\n");

           goto a;

    }

    }

     if(flag==1)

       printf("输入错误\n");

   }

   x: menu();

   return 0;

}


12.整体学生信息查看

int look()

{

   int i;

   for(i=0;i<da.count;i++)

       printf("%s\t%s\t%s\t%s\t%s\t\n",da.stu[i].name,da.stu[i].address,da.stu[i].mail,da.stu[i].number,da.stu[i].bianhao);

   menu();

   return 0;

}


目录
相关文章
|
8天前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
34 1
|
8天前
|
程序员 C语言
【C语言实战项目】猜数字游戏
【C语言实战项目】猜数字游戏
34 0
【C语言实战项目】猜数字游戏
|
3天前
|
编译器 C语言
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
13 1
|
8天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
8天前
|
程序员 C语言
【C语言实战项目】通讯录(动态增容版)
【C语言实战项目】通讯录(动态增容版)
23 0
|
8天前
|
存储 编译器 C语言
【C语言实战项目】通讯录
【C语言实战项目】通讯录
29 0
|
8天前
|
编译器 定位技术 C语言
【C语言实战项目】扫雷游戏
【C语言实战项目】扫雷游戏
28 0
|
8天前
|
存储 关系型数据库 MySQL
C语言/C++实战项目雷霆飞机(代码改进)
C语言/C++实战项目雷霆飞机(代码改进)
|
8天前
|
人工智能 C语言
C语言实战项目(AI代码)
C语言实战项目(AI代码)
118 0
|
8天前
|
存储 关系型数据库 MySQL
经典C语言/C++项目,雷霆战机
经典C语言/C++项目,雷霆战机