⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 communicate_sys.c

📁 学生通讯管理系统是本人的课程设计
💻 C
字号:
/*-----------------------------------------*/
/*-----------------------------------------*/
/*学生通讯管理系统
 *作者:尚方喆
 *时间:2004年
*/
/*-----------------------------------------*/
/*-----------------------------------------*/


#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define pr printf
#define sa scanf
#define LEN sizeof(struct stu)
#define NULL 0

int code;                                         /*全局变量*/
int i;
FILE *fp;
int SIZE=10;

void enter();
void face();
void start();
void save();
void input();
void del();
void search();
void search_tel();
void search_name();
void add();
void display();
void modify();

struct stu                                        /*结构体*/
{int sec;
 char name[20];
 char sex[2];
 int age;
 long int tel;
 char addr[40];
}st[5];

main()                                             /*主函数*/
{enter();
}

void enter()
{
 pr("\n");
 pr("\n");
 pr("\n");
 pr("\t\t       高   戍   由   汉   长   明\n");
 pr("\t\t       楼   客   来   下   风   月\n");
 pr("\t\t       当   望   征   白   几   出\n");
 pr("\t\t       此   边   战   登   万   天\n");
 pr("\t\t       夜   色   地   道   里   山\n");
 pr("\n");
 pr("\t\t       叹   思   不   胡   吹   苍\n");
 pr("\t\t       息   归   见   窥   度   茫\n");
 pr("\t\t       未   多   有   青   玉   云\n");
 pr("\t\t       应   苦   人   海   门   海\n");
 pr("\t\t       闲   颜   还   湾   关   间\n");sleep(1);
 pr("\n\n\n\n");
 pr("\t\t **************************************\n");
 pr("\t\t            请按任意键进入...");
 pr("\n\n\t\t      作者:科技0301   15号   尚方喆");
 getch();
 clrscr();
 pr("\n\n\n\n\n\n\n       警告:请严格按照提示语操作,否则可能造成数据丢失或系统关闭等严重问题!");sleep(1);
 pr("\n\n\n\n\n\t\t **************************************\n");
 pr("\t\t            请按任意键进入...");
 getch();
 clrscr();
 face();
}

void face()                                        /*主菜单*/
{pr("\t\t      ※欢迎使用本通讯管理系统※     \n");
 pr("\t\t **********************************\n");
 pr("\n");
 pr("\t\t           1.输入原始信息\n");
 pr("\t\t           2.查询学生信息\n");
 pr("\t\t           3.添加学生信息\n");
 pr("\t\t           4.显示全部信息\n");
 pr("\t\t           5.修改学生信息\n");
 pr("\t\t           6.删除学生信息\n");
 pr("\t\t           0.退出管理系统\n");
 pr("\n");
 pr("\n");
 pr("\t\t **********************************\n");
 pr("\t\t          ☆江山如此多娇☆\n");
 pr("\n");
 pr("\n");
 pr("请选择代码:");
 sa("%d",&code);
 if(code==1||code==2||code==3||code==4||code==5||code==6||code==0)
 {switch(code)
  {case 1:clrscr();input();break;
   case 2:clrscr();search();break;
   case 3:clrscr();add();break;
   case 4:clrscr();display();break;
   case 5:clrscr();modify();break;
   case 6:clrscr();del();break;
   case 0:clrscr();
    pr("\n\n\n\n");
    pr("\t\t        唯     孤     烟     故\n");
    pr("\t\t        见     帆     花     人\n");
    pr("\t\t        长     远     三     西\n");
    pr("\t\t        江     影     月     辞\n");
    pr("\t\t        天     碧     下     黄\n");
    pr("\t\t        际     空     扬     鹤\n");
    pr("\t\t        流     尽     州     楼\n");sleep(1);
    pr("\n");
    pr("\t\t**************************************\n");
    pr("\t\t     ※你已退出系统,欢迎再次使用※");break;
  }
 }
 else
 {clrscr();
  start();
 }
}

void start()
{face();
}

void input()                                       /*输入模块*/
{int y,k;
 pr("\t\t     ※你现在进行的是输入原始数据操作※\n");
 pr("\t\t  ***************************************\n");
 pr("\t\t             ☆煮酒论英雄☆\n");
 pr("\n警告:继续操作将删除一切原有数据!并且数据需要重新输入!\n");
 pr("按1键继续,按2键返回:");
 sa("%d",&k);
 if(k==2) {clrscr();face();}
 else if(k==1)
 {clrscr();
  fp=fopen("st_list","wb");
  for(i=1;i<=SIZE;i++)
  {pr("现在输入第%d个学生的信息\n",i);
   st[i].sec=8461;
   pr("姓名:");sa("%s",st[i].name);
   pr("性别:");sa("%s",st[i].sex);
   pr("年龄:");sa("%d",&st[i].age);
   pr("电话:");sa("%ld",&st[i].tel);
   pr("地址:");sa("%s",st[i].addr);
   fwrite(&st[i],LEN,1,fp);
   pr("\n");
   pr("\n\t\t  **********************************\n");
   pr("\t\t       按1键继续添加,按2键返回:");
   sa("%d",&y);
   switch(y)
   {case 1:fclose(fp);clrscr();continue;
    case 2:clrscr();face();break;
   }
  }
  fclose(fp);
 }
}

void search()                                      /*查找模块*/
{int code2;
 clrscr();
 pr("\t\t     ※欢迎使用通讯录管理系统※     \n");
 pr("\t\t***********************************\n");
 pr("\n");
 pr("\t\t          请选择查询方式\n");
 pr("\t\t           1.按姓名查询\n");
 pr("\t\t           2.按电话查询\n");
 pr("\t\t           0.返回上一页\n");
 pr("\n");
 pr("\n");
 pr("\t\t***********************************\n");
 pr("\t\t         ☆师夷长技以自强☆");
 pr("\n\n");
 pr("请选择代码:");
 sa("%d",&code2);
 if(code2==1||code2==2||code2==0)
 {switch(code2)
  {case 1:clrscr();search_name();break;
   case 2:clrscr();search_tel();break;
   case 0:clrscr();start();break;
  }
}
else
  {clrscr();
   search();
  }
}

void search_name()                                 /*姓名查找*/
{char x[20];
 int y;
 fp=fopen("st_list","rb");
 pr("\t\t     ※你现在进行的是姓名查询※\n");
 pr("\t\t***********************************\n");
 pr("\t\t         ☆天涯何处无芳草☆\n");
 pr("\n");
 pr("请输入姓名:");
 sa("%s",x);
 for(i=1;i<=SIZE;i++)
  fread(&st[i],LEN,1,fp);
 fclose(fp);
 pr("\n        姓名      性别  年龄     电话          地址\n");
 pr("  ———————‖——‖——‖——————‖——————————\n");
 for(i=1;i<=SIZE;i++)
 {if(strcmp(x,st[i].name)==0)
   if(st[i].sec==8461)
    pr("%15s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);

 }

 pr("\n");
 pr("\n\t\t **********************************\n");
 pr("\t\t     按1键继续查询,按2键返回:");
 sa("%d",&y);
 switch(y)
 {case 1:clrscr();search_name();break;
  case 2:clrscr();search();break;
 }
}

void search_tel()                                  /*电话查找*/
{int y,j;
 long x;
 fp=fopen("st_list","rb");
 pr("\t\t     ※你现在进行的是电话查询※\n");
 pr("\t\t***********************************\n");
 pr("\t\t         ☆众里寻她千百度☆\n");
 pr("\n");
 pr("请输入电话:");
 sa("%ld",&x);
 for(i=1;i<=SIZE;i++)
  fread(&st[i],LEN,1,fp);
 pr("\n        姓名      性别  年龄     电话          地址\n");
 pr("  ———————‖——‖——‖——————‖——————————\n");
 for(i=1;i<=SIZE;i++)
  if(x==st[i].tel)
   if(st[i].sec==8461)
    pr("%15s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);
 fclose(fp);
 pr("\n");
 pr("\n\t\t **********************************\n");
 pr("\t\t     按1键继续查询,按2键返回:");
 sa("%d",&y);
 switch(y)
 {case 1:clrscr();search_tel();break;
  case 2:clrscr();search();break;
 }
}

void display()                                     /*显示模块*/
{int m,f;
 int num=0;
 pr("\t\t       ※以下是通讯录全部信息※\n");
 pr("\t\t   *******************************\n");
 pr("\t\t           ☆千古风流人物☆\n");
 fp=fopen("st_list","rb");
 for(i=1;i<=SIZE;i++)
  fread(&st[i],LEN,1,fp);
 pr("\n序号       姓名       性别  年龄     电话          地址\n");
 pr("——‖———————‖——‖——‖——————‖——————————\n");
 for(i=1;i<=SIZE;i++)
  if(st[i].sec==8461)
  {pr("%3d%16s%5s%6d%13ld    %-20s\n",++num,st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);}
 pr("——‖———————‖——‖——‖——————‖——————————\n");
 fclose(fp);
 pr("\n\n\t\t  ******************************\n");
 pr("\t\t       按任意键返回上一页...");
 getch();
 clrscr();
 face();
}

void add()                                         /*添加模块*/
{int x,k;
 pr("\t\t         ※你现在进行的是添加操作※\n");
 pr("\t\t     *********************************\n");
 pr("\t\t         ☆有朋自远方来,不亦乐乎☆\n");
 pr("\n");
 pr("你确定要添加吗?按1键确定,按2键返回:");
 sa("%d",&k);
 if(k==2) {clrscr();face();}
 else if(k==1)
 {clrscr();
  pr("请输入新的学生信息\n");
  fp=fopen("st_list","a+");
  st[i].sec=8461;
  pr("姓名:");sa("%s",st[i].name);getchar();
  pr("性别:");sa("%s",st[i].sex);getchar();
  pr("年龄:");sa("%d",&st[i].age);getchar();
  pr("电话:");sa("%ld",&st[i].tel);getchar();
  pr("地址:");sa("%s",st[i].addr);getchar();
  pr("%16s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);
  fwrite(&st[i],LEN,1,fp);
  fclose(fp);
  pr("—————\n");
  pr("添加成功!\n");
  pr("\n\t\t **********************************\n");
  pr("\t\t     按1键继续添加,按2键返回:");
  sa("%d",&x);
  if(x==1) {clrscr();add();}
  else {clrscr();face();}
 }
}

void del()                                         /*删除模块*/
{int y,j,k;
 char d[20];
 fp=fopen("st_list","rb");
 for(i=1;i<=SIZE;i++)
  fread(&st[i],LEN,1,fp);
 fclose(fp);
 pr("\t\t       ※你现在进行的是删除操作※\n");
 pr("\t\t   *********************************\n");
 pr("\t\t           ☆一江春水向东流☆\n");
 pr("\n");
 pr("请输入被删除的学生姓名:");
 sa("%s",d);
 for(i=1;i<=SIZE;i++)
 {if(strcmp(d,st[i].name)==0&&st[i].sec==8461)
  {pr("\n此学生信息如下\n\n");
   pr("       姓名      性别  年龄     电话          地址\n");
   pr("  ———————‖——‖——‖——————‖——————————\n");
   pr("%15s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);
   pr("\n你确定要删除吗?按1键确定,按2键返回上一页:");
   sa("%d",&k);
   if(k==2) {clrscr();face();}
   else if(k==1)
    {st[i].sec=1;pr("—————\n已成功删除!\n");}
  }
 }
 fp=fopen("st_list","wb");
 for(i=1;i<=SIZE;i++)
  fwrite(&st[i],LEN,1,fp);
 fclose(fp);
 pr("\n\t\t  **********************************\n");
 pr("\t\t      按1键继续删除,按2键返回:");
 sa("%d",&y);
 if(y==1) {clrscr();del();}
 else {clrscr();face();}
}

void modify()                                      /*修改模块*/
{char x[20];
 int y,k;
 int st_age;
 long st_tel;
 char st_addr[40];
 fp=fopen("st_list","rb");
 for(i=1;i<=SIZE;i++)
  fread(&st[i],LEN,1,fp);
 fclose(fp);
 pr("\t\t       ※你现在进行的是修改操作※\n");
 pr("\t\t    ******************************\n");
 pr("\t\t           ☆浪子回头金不换☆\n");
 pr("\n");
 pr("请输入被修改信息的学生姓名:");
 sa("%s",x);
 for(i=1;i<=SIZE;i++)
  if(strcmp(x,st[i].name)==0)
  {pr("原信息如下:\n\n");
   pr("        姓名      性别  年龄     电话          地址\n");
   pr("  ———————‖——‖——‖——————‖——————————\n");
   pr("%15s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);
  }
 pr("\n你确定要修改吗?按1键修改,按2键返回:");
 sa("%d",&k);
 if(k==2) {clrscr();face();}
 else if(k==1)
 {pr("\n");
  pr("请输入新的信息:\n");
  pr("年龄:");sa("%d",&st_age);
  pr("电话:");sa("%ld",&st_tel);
  pr("地址:");sa("%s",st_addr);
  for(i=1;i<=SIZE;i++)
   if(strcmp(x,st[i].name)==0)
   {st[i].age=st_age;
    st[i].tel=st_tel;
    strcpy(st[i].addr,st_addr);
    pr("—————\n已成功修改!新信息如下:\n\n");
    pr("        姓名      性别  年龄     电话          地址\n");
    pr("  ———————‖——‖——‖——————‖——————————\n");
    pr("%15s%5s%6d%13ld    %-20s\n",st[i].name,st[i].sex,st[i].age,st[i].tel,st[i].addr);
   }
  fp=fopen("st_list","r+");
  for(i=1;i<=SIZE;i++)
   fwrite(&st[i],LEN,1,fp);
  fclose(fp);
  pr("\n\t\t *********************************\n");
  pr("\t\t     按1键继续修改,按2键返回:");
  sa("%d",&y);
  if(y==1) {clrscr();modify();}
  else {clrscr();face();}
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -