Welcome To Heike07's Blog.

欢迎来到Heike07官方博客

[c/c++] 学校实训作业,开源给大家分享!(之前那个有权限,这个没有,放心阅读哈!)

  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. //———————————结构体定义————————————-//
  6. struct record   //数据结构体
  7. {
  8.     char id[10];     //学号
  9.     char name[20];   //姓名
  10.     char phone[20];  //电话
  11.     char adress[40]; //班级
  12.     char qq[10] ;    //qq
  13.     char sex;     //性别
  14.     char e_mail[30]; //邮箱
  15. }student[500];
  16. //———————————全局变量————————————-//
  17. int num=0;//外部变量num为文件中的记录数
  18. FILE *fp;
  19. int m_1=0,f_1=0;
  20. //具有数据插入、修改、删除、显示、查询和统计功能的通讯录管理程序。
  21. //———————————函数定义————————————-//
  22. void mainmenu();//主菜单
  23. void newrecord();//新添记录
  24. void searchmenu();//查询菜单
  25. void searchbyid();//按学号查询
  26. void searchbyname();//按姓名查询
  27. void searchbyphone();//按电话查询
  28. void deletemenu();//删除菜单
  29. void deleteall();//删除所有
  30. void deleteone();//删除单个
  31. void deletebyid();//按学号删除
  32. void deletebyname();//按姓名删除
  33. void showall();//显示所有
  34. void readfromfile();//读取文件
  35. void writetofile();//写入文件
  36. void listmenu();//排序菜单
  37. void listbyid();//按学号排序
  38. void listbyname();//按姓名排序
  39. void movedel();//修改信息函数
  40. void statisticalnumber();//统计人数函数
  41. void sexinof(char s);//性别比较函数
  42. void about(); //关于
  43. //———————————欢迎页面————————————-//
  44. int key()
  45.     {
  46.     char password[10];
  47.     static char key_1[10]=”123″;
  48. printf(” \n  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n”);
  49. printf(” +                                                                        +\n”);
  50. printf(” +                                                                          +\n”);
  51. printf(” +                            ( .@.@ )                                  +\n”);
  52. printf(” +                 +——-oOOo—–(_)—–oOOo———+                  +\n”);
  53. printf(” +                 |                   |                  +\n”);
  54. printf(” +                 |       电 话 簿 管 理 系 统       |                  +\n”);
  55. printf(” +                 |                   |                  +\n”);
  56. printf(” +                 +———————Oooo————+                  +\n”);
  57. printf(” +                                                        c:小蚂蚁程序组   +\n”);
  58. printf(” ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n”);
  59.     printf(“请输入登陆口令:”);
  60.     scanf(“%s”,&password);
  61.     printf(“\n”);printf(“\n”);
  62.     printf(“\n”);printf(“\n”);
  63.     printf(“\n”);printf(“\n”);
  64.     printf(“\n”); printf(“\n”);
  65.      printf(“\n”); printf(“\n”);
  66. printf(”                             ._________________.                           \n”);
  67. printf(”                             | _______________ |                           \n”);
  68. printf(”                             | I             I |                           \n”);
  69. printf(”                             | I             I |                           \n”);
  70. printf(”                             | I   欢迎使用  I |                           \n”);
  71. printf(”                             | I             I |                           \n”);
  72. printf(”                             | I_____________I |                           \n”);
  73. printf(”                             !_________________!                           \n”);
  74. printf(”                                ._[_______]_.                              \n”);
  75. printf(”                            .___|___________|___.                          \n”);
  76. printf(”                                                                           \n”);
  77. printf(”                 本程序由< 小蚂蚁程序组 >制作,祝您使用愉快!              \n”);
  78. printf(”                      最终解释权归< 小蚂蚁程序组 >所有                     \n”);
  79. printf(“_____________________________________________________________________________\n”);
  80. printf(“\n”); printf(“\n”); printf(“\n”); printf(“\n”);printf(“\n”);
  81. //———————————密码验证————————————-//
  82. if(strcmp(password,key_1)==0)
  83.     return 1;
  84. else
  85.     return 0;
  86.     }
  87. //———————————主函数————————————-//
  88. int  main()
  89. {
  90.     int c;
  91.     c=key();
  92.     if(c==1)
  93.     {
  94.         readfromfile(); //文件建立,导入系统
  95.         while (1)
  96.          {
  97.             mainmenu(); //主菜单界面
  98.          }
  99.     }
  100.     else
  101.     printf(“!系统提示:抱歉您不是我的主人!系统即将关闭…”);
  102.     exit(1);
  103. }
  104. //—————————文件导入系统————————————-//
  105. void readfromfile()
  106. {
  107.     if((fp=fopen(“student.bin”,”rb”))==NULL)
  108.     {
  109.         printf(“\n\t\t!系统提示:通讯录文件不存在”);
  110.         if ((fp=fopen(“student.bin”,”wb”))==NULL)
  111.         {
  112.             printf(“\n\t\t!系统提示:建立失败”);
  113.             exit(0);
  114.         }
  115.         else
  116.         {
  117.             printf(“\n\t\t通讯录文件已建立”);
  118.             printf(“\n\t\t按任意键进入主菜单”);
  119.             getch();
  120.             return;
  121.         }
  122.         exit(0);
  123.     }
  124.     fseek(fp,0,2); /*文件位置指针移动到文件末尾*/
  125.     if (ftell(fp)>0) /*文件不为空*/
  126.     {
  127.         rewind(fp); /*文件位置指针移动到文件开始位置*/
  128.         for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
  129.         printf(“\n\t\t#系统提示:文件导入成功”);
  130.         printf(“\n\t\t按任意键返回主菜单”);
  131.         getch();
  132.         return;
  133.     }
  134.     printf(“\n\t\t#系统提示:\t\t文件导入成功”);
  135.     printf(“\n\t\t\t\t\t通讯录文件中无任何记录”);
  136.     printf(“\n\t\t\t\t\t按任意键返回主菜单”);
  137.     getch();
  138.     return;
  139. }
  140. //———————————主菜单————————————-//
  141. void mainmenu()
  142. {
  143.     char choic;
  144.     system(“cls”);
  145.     printf(“\n\t ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n”);
  146.     printf(“\t+                    の电话薄管理系统v2.0の                +\n”);
  147.     printf(“\t+                                                          +\n”);
  148.     printf(“\t+                 1. ☆〖新添记录〗 (>^ω^<)               +\n”);
  149.     printf(“\t+                 2. ☆〖查询菜单〗 (>^ω^<)               +\n”);
  150.     printf(“\t+                 3. ☆〖删除电话〗 (>^ω^<)               +\n”);
  151.     printf(“\t+                 4. ☆〖记录排序〗 (>^ω^<)               +\n”);
  152.     printf(“\t+                 5. ☆〖 保  存 〗 (>^ω^<)               +\n”);
  153.     printf(“\t+                 6. ☆〖修改系统〗 (>^ω^<)               +\n”);
  154.     printf(“\t+                 7. ☆〖统计人数〗 (>^ω^<)               +\n”);
  155.     printf(“\t+                 8. ☆〖 退  出 〗 (>^ω^<)               +\n”);
  156.     printf(“\t+                 9. ☆〖 关  于 〗 (>^ω^<)               +\n”);
  157.     printf(“\t+                                                          +\n”);
  158.     printf(“\t++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n”);
  159.     printf(“\t   温馨提示:退出前请执行5保存操作,防止数据丢失!(切记!)\n”);
  160.     printf(“\n\t\t请选择:”);
  161.     choic=getch();
  162.     switch (choic)
  163.     {
  164.     case ‘1’:newrecord();            break;
  165.     case ‘2’:searchmenu();            break;
  166.     case ‘3’:deletemenu();            break;
  167.     case ‘4’:listmenu();            break;
  168.     case ‘5’:writetofile();            break;
  169.     case ‘6’:movedel();                  break;
  170.     case ‘7’:statisticalnumber();    break;
  171.     case ‘8’:exit(0);
  172.     case ‘9’:about();                break;
  173.     default:mainmenu();
  174.     }
  175. }
  176. //———————————查询菜单————————————-//
  177. void searchmenu()
  178. {
  179.     char choic;
  180.     system(“cls”);
  181.     printf(“\n\t\t****************    の查询菜单の   **********************”);
  182.     printf(“\n\t\t**********     1.☆〖 显示所有 〗 (>^ω^<)      *********”);
  183.     printf(“\n\t\t**********     2.☆〖按学号查询〗 (>^ω^<)      *********”);
  184.     printf(“\n\t\t**********     3.☆〖按姓名查询〗 (>^ω^<)      *********”);
  185.     printf(“\n\t\t**********     4.☆〖按电话查询〗 (>^ω^<)      *********”);
  186.     printf(“\n\t\t**********     5.☆〖返回主菜单〗 (>^ω^<)      *********”);
  187.     printf(“\n\t\t*********************************************************”);
  188.     printf(“\n\t\t请选择:”);
  189.     choic=getch();
  190.     switch (choic)
  191.     {
  192.     case ‘1’:showall();break;
  193.     case ‘2’:searchbyid();break;
  194.     case ‘3’:searchbyname();break;
  195.     case ‘4’:searchbyphone();break;
  196.     case ‘5’:mainmenu();break;
  197.     }
  198. }
  199. //———————————删除菜单————————————-//
  200. void deletemenu()
  201. {
  202.     char choic;
  203.     if(num==0)
  204.     {
  205.         printf(“\n\t\t对不起,文件中无任何记录”);
  206.         printf(“\n\t\t按任意键返回主菜单”);
  207.         getch();
  208.         return;
  209.     }
  210.     system(“cls”);
  211.     printf(“\n\t\t****************    の删除菜单の   **********************”);
  212.     printf(“\n\t\t**********     1.☆〖 删除所有 〗 (>^ω^<)      *********”);
  213.     printf(“\n\t\t**********     2.☆〖 删除单个 〗 (>^ω^<)      *********”);
  214.     printf(“\n\t\t**********     3.☆〖返回主菜单〗 (>^ω^<)      *********”);
  215.     printf(“\n\t\t*********************************************************”);
  216.     printf(“\n\t\t请选择:”);
  217.     choic=getch();
  218.     switch (choic)
  219.     {
  220.     case ‘1’:deleteall();        break;
  221.     case ‘2’:deleteone();        break;
  222.     case ‘3’:mainmenu();        break;
  223.     default:mainmenu();            break;
  224.     }
  225. }
  226. //————————–删除-删除所有————————————-//
  227. void deleteall()
  228. {
  229.     printf(“\n\t\t确认删除?(y/n)”);
  230.     if (getch()==’y’)
  231.     {
  232.         fclose(fp);
  233.         if ((fp=fopen(“student.bin”,”wb”))==NULL)
  234.         {
  235.             printf(“\n\t\t不能打开文件,删除失败”);
  236.             readfromfile();
  237.         }
  238.         num=0;
  239.         printf(“\n\t\t记录已删除,按任意键返回主菜单”);
  240.         getch();
  241.         return;
  242.     }
  243.     else
  244.         return;
  245. }
  246. //————————删除-按姓名删除————————————-//
  247. void deletebyname()
  248. {
  249.     int a=0;
  250.     int findmark=0;
  251.     int j;
  252.     int deletemark=0;
  253.     int i;
  254.     char name[20];
  255.     printf(“\n\t\t请输入要删除学生姓名:”);
  256.     scanf(“%s”,name);
  257.     for (i=a;i<num;i++)
  258.     {
  259.         if (strcmp(student[i].name,name) == 0)
  260.         {
  261.             printf(“\n\t\t以下是您要删除的学生记录:”);
  262.             findmark++;
  263.             printf(“\n\t\t________________________________”);
  264.             printf(“\n\t\t学号: %s”,student[i].id);
  265.             printf(“\n\t\t姓名: %s”,student[i].name);
  266.             printf(“\n\t\t性别: %c”,student[i].sex);
  267.             printf(“\n\t\t电话: %s”,student[i].phone);
  268.             printf(“\n\t\t班级: %s”,student[i].adress);
  269.             printf(“\n\t\t Q Q: %s”,student[i].qq);
  270.             printf(“\n\t\te-mail:%s”,student[i].e_mail);
  271.             printf(“\n\t\t________________________________”);
  272.             printf(“\n\t\t是否删除?(y/n)”);
  273.             if (getch()==’y’)
  274.             {
  275.                 for (j=i;j<num-1;j++) /*记录移动,从stud数组中删除之*/
  276.                     student[j]=student[j+1];
  277.                 num–;
  278.                 deletemark++;
  279.                 printf(“\n\t\t删除成功”);
  280.                 if((i+1)<num)
  281.                 {
  282.                     printf(“\n\t\t是否继续删除相同姓名的同学信息?(y/n)”);
  283.                     if (getch()==’y’)
  284.                     {
  285.                         a=i;
  286.                         continue;
  287.                     }
  288.                 }
  289.                 printf(“\n\t\t是否继续删除?(y/n)”);
  290.                 if (getch()==’y’)
  291.                     deletebyname();
  292.                 return;
  293.             }
  294.             if((i+1)<num)
  295.             {
  296.                 printf(“\n\t\t是否继续删除相同姓名的同学信息?(y/n)”);
  297.                 if (getch()==’y’)
  298.                 {
  299.                     a=i;
  300.                     continue;
  301.                 }
  302.             }
  303.         }
  304.         else
  305.             continue;
  306.     }
  307.     if ((deletemark==0)&&(findmark==0))
  308.     {
  309.         printf(“\n\t\t没有该同学的记录”);
  310.         printf(“\n\t\t是否继续删除?(y/n)”);
  311.         if (getch()==’y’)
  312.             deletebyid();
  313.         return;
  314.         return;
  315.     }
  316.     else if (findmark!=0)
  317.     {
  318.         printf(“\n\t\t没有重名信息”);
  319.         printf(“\n\t\t没有该同学的记录”);
  320.         printf(“\n\t\t是否继续删除?(y/n)”);
  321.         if (getch()==’y’)
  322.             deletebyid();
  323.         return;
  324.         return;
  325.     }
  326. }
  327. //————————-删除—按学号删除————————————-//
  328. void deletebyid()
  329. {
  330.     int i,j;
  331.     int deletemark=0;
  332.     char id[20];
  333.     printf(“\n\t\t请输入要删除学生学号:”);
  334.     scanf(“%s”,id);
  335.     if(num==0)
  336.     {
  337.         printf(“\n\t\t对不起,文件中无任何记录”);
  338.         printf(“\n\t\t按任意键返回主菜单”);
  339.         getch();
  340.         return;
  341.     }
  342.     for (i=0;i<num;i++)
  343.     {
  344.         if (strcmp(student[i].id,id)==0)
  345.         {
  346.             printf(“\n\t\t以下是您要删除的学生记录:”);
  347.             printf(“\n\t\t学号: %s”,student[i].id);
  348.             printf(“\n\t\t姓名: %s”,student[i].name);
  349.             printf(“\n\t\t性别: %c”,student[i].sex);
  350.             printf(“\n\t\t电话: %s”,student[i].phone);
  351.             printf(“\n\t\t班级: %s”,student[i].adress);
  352.             printf(“\n\t\t Q Q: %s”,student[i].qq);
  353.             printf(“\n\t\te-mail:%s”,student[i].e_mail);
  354.             printf(“\n\t\t是否删除?(y/n)”);
  355.             if (getch()==’y’)
  356.             {
  357.                 for (j=i;j<num-1;j++) /*记录移动,从stud数组中删除之*/
  358.                     student[j]=student[j+1];
  359.                 num–;
  360.                 deletemark++;
  361.                 printf(“\n\t\t删除成功”);
  362.                 printf(“\n\t\t是否继续删除?(y/n)”);
  363.                 if (getch()==’y’)
  364.                     deletebyid();
  365.                 return;
  366.             }
  367.             else
  368.                 return;
  369.         }
  370.         continue;
  371.     }
  372.     if (deletemark==0)
  373.     {
  374.         printf(“\n\t\t没有该同学的记录”);
  375.         printf(“\n\t\t是否继续删除?(y/n)”);
  376.         if (getch()==’y’)
  377.             deletebyid();
  378.         return;
  379.     }
  380. }
  381. //—————————–添加函数————————————-//
  382. void newrecord()//添加记录
  383. {
  384.     printf(“\n\t\t**************** 请输入学生信息 ****************\n”);
  385.     printf(“\n\t\t输入学号:”);
  386.     scanf(“%s”,&student[num].id);
  387.     printf(“\n\t\t输入姓名:”);
  388.     scanf(“%s”,&student[num].name);
  389.     getchar();
  390.     printf(“\n\t\t输入性别(男:m,女:f):”);
  391.     scanf(“%c”,&student[num].sex);
  392.     sexinof(student[num].sex);
  393.     printf(“\n\t\t输入电话号码:”);
  394.     scanf(“%s”,&student[num].phone);
  395.     printf(“\n\t\t输入班级:”);
  396.     scanf(“%s”,&student[num].adress);
  397.     printf(“\n\t\t输入QQ:”); ///
  398.     scanf(“%s”,&student[num].qq);///
  399.     printf(“\n\t\t输入e-mail:”);
  400.     scanf(“%s”,&student[num].e_mail);
  401.     num++;
  402.     printf(“\n\t\t是否继续添加?(Y/N):”);
  403.     if (getch()==’y’)
  404.         newrecord();
  405.     return;
  406. }
  407. //—————————–显示所有————————————-//
  408. void showall()//显示所有
  409. {
  410.     int i;
  411.     system(“cls”);
  412.     if(num!=0)
  413.     {
  414.         printf(“\n\t\t*************** 以下为通讯录所有信息************”);
  415.         for (i=0;i<num;i++)
  416.         {
  417.         printf(“\n学号\t姓名\t性别\t电话\t班级\tqq\temail”);
  418.         printf(“\n%s\t%s\t%c\t%s\t%s\t%s\t%s”,student[i].id,student[i].name,student[i].sex,student[i].phone,student[i].adress,student[i].qq,student[i].e_mail);
  419.             printf(“\t\t”);
  420.             if (i+1<num)
  421.             {
  422.                 printf(“\n\t\t__________________________”);
  423.                 system(“pause”);
  424.             }
  425.         }
  426.         printf(“\n\t\t************************************************”);
  427.     }
  428.     else
  429.         printf(“\n\t\t通讯录中无任何记录”);
  430.     printf(“\n\t\t按任意键返回主菜单:”);
  431.     getch();
  432.     return;
  433. }
  434. //—————————-按电话查询————————————//
  435. //按电话查询
  436. void searchbyphone()
  437. {
  438.     int mark=0;
  439.     int i;
  440.     int a=0;
  441.     char phone[10];
  442.     printf(“\n\t\t****************** 按电话查找 ******************”);
  443.     printf(“\n\t\t请输入电话:”);
  444.     scanf(“%s”,phone);
  445.     for(i=0;i<num;i++)
  446.     {
  447.         if (strcmp(student[i].phone,phone)==0)
  448.         {
  449.             printf(“\n\t\t************** 以下是您查找的学生信息 **********”);
  450.         printf(“\n\t\t学号: %s”,student[i].id);
  451.         printf(“\n\t\t姓名: %s”,student[i].name);
  452.         printf(“\n\t\t性别: %c”,student[i].sex);
  453.         printf(“\n\t\t电话: %s”,student[i].phone);
  454.         printf(“\n\t\t班级: %s”,student[i].adress);
  455.         printf(“\n\t\t Q Q: %s”,student[i].qq);
  456.         printf(“\n\t\te-mail:%s”,student[i].e_mail);
  457.             printf(“\n\t\t************************************************”);
  458.             printf(“\n\t\t按任意键返回主菜单:”);
  459.             mark++;
  460.             getch();
  461.             return;
  462.         }
  463.     }
  464.     if (mark==0)
  465.     {
  466.         printf(“\n\t\t没有改学生的信息”);
  467.         printf(“\n\t\t按任意键返回主菜单”);
  468.         getch();
  469.         return;
  470.     }
  471. }
  472. //—————————–按姓名查询————————————//
  473. void searchbyname()//按姓名查询
  474. {
  475.     int mark=0;
  476.     int i;
  477.     int a=0;
  478.     char name[20];
  479.     printf(“\n\t\t***************** 按姓名查找 *******************”);
  480.     printf(“\n\t\t请输入姓名:”);
  481.     scanf(“%s”,name);
  482.     for(i=a;i<num;i++)
  483.     {
  484.         if (strcmp(student[i].name,name)==0)
  485.         {
  486.             printf(“\n\t\t************* 以下是您查找的学生信息 ***********”);
  487.         printf(“\n\t\t学号: %s”,student[i].id);
  488.         printf(“\n\t\t姓名: %s”,student[i].name);
  489.         printf(“\n\t\t性别: %c”,student[i].sex);
  490.         printf(“\n\t\t电话: %s”,student[i].phone);
  491.         printf(“\n\t\t班级: %s”,student[i].adress);
  492.         printf(“\n\t\t Q Q: %s”,student[i].qq);
  493.         printf(“\n\t\te-mail:%s”,student[i].e_mail);
  494.             printf(“\n\t\t************************************************”);
  495.             mark++;
  496.             if ((i+1)<num)
  497.             {
  498.                 printf(“\n\t\t是否继续查找相同名字的学生信息:(y/n)”);
  499.                 if (getch()==’y’)
  500.                 {
  501.                     a=i;
  502.                     continue;
  503.                 }
  504.                 else
  505.                     return;
  506.             }
  507.             else
  508.             {
  509.                 printf(“\n\t\t按任意键返回主菜单”);
  510.                 getch();
  511.                 return;
  512.             }
  513.         }
  514.     }
  515.     if(mark!=0)
  516.     {
  517.         printf(“\n\t\t没有相同姓名的学生记录”);
  518.         printf(“\n\t\t按任意键返回主菜单”);
  519.         getch();
  520.         return;
  521.     }
  522.     else
  523.     {
  524.         printf(“\n\t\t没有相同姓名的学生记录”);
  525.         printf(“\n\t\t按任意键返回主菜单”);
  526.         getch();
  527.         return;
  528.     }
  529. }
  530. //————————-按学号查询————————————-//
  531. void searchbyid()//按学号查询
  532. {
  533.     int mark=0;
  534.     int i;
  535.     int a=0;
  536.     char id[10];
  537.     printf(“\n\t\t****************** 按学号查找 ******************\n”);
  538.     printf(“\n\t\t请输入学号:”);
  539.     scanf(“%s”,id);
  540.     for(i=0;i<num;i++)
  541.     {
  542.         if (strcmp(student[i].id,id)==0)
  543.         {
  544.             printf(“\n\t\t************** 以下是您查找的学生信息 **********”);
  545.         printf(“\n\t\t学号: %s”,student[i].id);
  546.         printf(“\n\t\t姓名: %s”,student[i].name);
  547.         printf(“\n\t\t性别: %c”,student[i].sex);
  548.         printf(“\n\t\t电话: %s”,student[i].phone);
  549.         printf(“\n\t\t班级: %s”,student[i].adress);
  550.         printf(“\n\t\t Q Q: %s”,student[i].qq);
  551.         printf(“\n\t\te-mail:%s”,student[i].e_mail);
  552.             printf(“\n\t\t************************************************”);
  553.             printf(“\n\t\t按任意键返回主菜单:”);
  554.             mark++;
  555.             getch();
  556.             return;
  557.         }
  558.     }
  559.     if (mark==0)
  560.     {
  561.         printf(“\n\t\t没有改学生的信息”);
  562.         printf(“\n\t\t按任意键返回主菜单”);
  563.         getch();
  564.         return;
  565.     }
  566. }
  567. //——————————-写入文件系统————————————-//
  568. void writetofile()//写入文件
  569. {
  570.     int i;
  571.     if ((fp=fopen(“student.bin”,”wb”))==NULL)
  572.     {
  573.         printf(“\n\t\t文件打开失败”);
  574.     }
  575.     for (i=0;i<num;i++)
  576.     {
  577.         if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
  578.         {
  579.             printf(“\n\t\t写入文件错误!\n”);
  580.         }
  581.     }
  582.     fclose(fp);
  583.     printf(“\n\t\t通讯录文件已保存”);
  584.     printf(“\n\t\t按任意键退出程序\n\t\t”);
  585.     exit(0);
  586. }
  587. //——————————–删除单个———————————-//
  588. void deleteone()//删除单个
  589. {
  590.     char choic;
  591.     printf(“\n\t\t1-按学号删除 2-按姓名删除”);
  592.     printf(“\n\t\t请选择:”);
  593.     choic=getch();
  594.     switch (choic)
  595.     {
  596.     case ‘1’:deletebyid();break;
  597.     case ‘2’:deletebyname();break;
  598.     }
  599. }
  600. //—————————–按姓名排序————————————-//
  601. void listbyname()//按姓名排序
  602. {
  603.     int i,j;
  604.     struct record tmp;
  605.     for (i=1;i<num;i++)
  606.     {
  607.         if(strcmp(student[i].name,student[i-1].name)<0)
  608.         {
  609.             tmp=student[i];
  610.             j=i-1;
  611.             do
  612.             {
  613.                 student[j+1]=student[j];
  614.                 j–;
  615.             }while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
  616.             student[j+1]=tmp;
  617.         }
  618.     }
  619.     printf(“\n\t\t排序成功,是否显示?(y/n)”);
  620.     if (getch()==’y’)
  621.         showall();
  622.     return;
  623. }
  624. //—————————-按学号排序————————————//
  625. void listbyid()//按学号排序
  626. {
  627.     int i,j;
  628.     struct record tmp;
  629.     for (i=1;i<num;i++)
  630.     {
  631.         if(strcmp(student[i].id,student[i-1].id)<0)
  632.         {
  633.             tmp=student[i];
  634.             j=i-1;
  635.             do
  636.             {
  637.                 student[j+1]=student[j];
  638.                 j–;
  639.             }while ((strcmp(tmp.id,student[j].id)<0)&&j>=0);
  640.             student[j+1]=tmp;
  641.         }
  642.     }
  643.     printf(“\n\t\t排序成功,是否显示?(y/n)”);
  644.     if (getch()==’y’)
  645.         showall();
  646.     return;
  647. }
  648. //——————————-排序菜单————————————-//
  649. void listmenu()//排序菜单
  650. {
  651.     char choic;
  652.     if(num==0)
  653.     {
  654.         printf(“\n\t\t对不起,文件中无任何记录”);
  655.         printf(“\n\t\t按任意键返回主菜单”);
  656.         getch();
  657.         return;
  658.     }
  659.     system(“cls”);
  660. printf(“\n\t\t****************    の排序菜单の  ***********************”);
  661. printf(“\n\t\t**********     1.☆〖按学号排序〗 (>^ω^<)      *********”);
  662. printf(“\n\t\t**********     2.☆〖按姓名排序〗 (>^ω^<)      *********”);
  663. printf(“\n\t\t**********     3.☆〖返回主菜单〗 (>^ω^<)      *********”);
  664. printf(“\n\t\t*********************************************************”);
  665.     printf(“\n\t\t请选择:”);
  666.     choic=getch();
  667.     switch(choic)
  668.     {
  669.     case ‘1’:listbyid();break;
  670.     case ‘2’:listbyname();break;
  671.     case ‘3’:mainmenu();break;
  672.     default:mainmenu();break;
  673.     }
  674. }
  675. //———————————统计人数函数————————————-//
  676. void statisticalnumber()//统计人数函数
  677.   {
  678.   system(“cls”);
  679.   printf(“\n\t\t************************统计结果*************************”);
  680.   printf(“\n\t\t男生人数共%d,女生人数共%d”,m_1,f_1);
  681.   printf(“\n\t\t*********************************************************”);
  682.   getchar();
  683.   //system(“cls”);
  684.   //    mainmenu();
  685.   }
  686.   //——————————-判断男女函数————————————-//
  687. void sexinof(char s)//判断男女函数
  688. {
  689.       if(s==’m’)
  690.       m_1++;
  691.       else
  692.       f_1++;
  693. }
  694. //———————————修改信息函数————————————-//
  695. void movedel() //修改函数
  696. {
  697.      int i,j;
  698.     int deletemark=0;
  699.     char id[20];
  700.     printf(“\n\t\t请输入要修改学生学号:”);
  701.     scanf(“%s”,id);
  702.     if(num==0)
  703.     {
  704.         printf(“\n\t\t对不起,文件中无任何记录”);
  705.         printf(“\n\t\t按任意键返回主菜单”);
  706.         getch();
  707.         return;
  708.     }
  709.     for (i=0;i<num;i++)
  710.     {
  711.         if (strcmp(student[i].id,id)==0)
  712.         {
  713.             printf(“\n\t\t以下是您要修改的学生记录:”);
  714.             printf(“\n\t\t学号: %s”,student[i].id);
  715.             printf(“\n\t\t姓名: %s”,student[i].name);
  716.             printf(“\n\t\t性别: %c”,student[i].sex);
  717.             printf(“\n\t\t电话: %s”,student[i].phone);
  718.             printf(“\n\t\t班级: %s”,student[i].adress);
  719.             printf(“\n\t\t Q Q: %s”,student[i].qq);
  720.             printf(“\n\t\te-mail:%s”,student[i].e_mail);
  721.             printf(“\n\t\t是否修改?(y/n)”);
  722.             if (getch()==’y’)
  723.             {
  724.                 for (j=i;j<num-1;j++) /*记录移动,从stud数组中删除之*/
  725.                     student[j]=student[j+1];
  726.                 num–;
  727.                 deletemark++;
  728.                 printf(“\n\t\t删除成功”);
  729.                 printf(“\n\t\t是否输入新的信息?(y/n)”);
  730.                 if (getch()==’y’)
  731.                 newrecord();
  732.                 return;
  733.             }
  734.             else
  735.                 return;
  736.         }
  737.         continue;
  738.     }
  739.     if (deletemark==0)
  740.     {
  741.         printf(“\n\t\t没有该同学的记录”);
  742.         printf(“\n\t\t是否继续修改?(y/n)”);
  743.         if (getch()==’y’)
  744.             movedel();
  745.         return;
  746.     }
  747. }
  748. //—————————  -关    于————————————//
  749. void about()
  750. {
  751.       system(“cls”);
  752.       printf(“\n”);
  753.       printf(“\t\t________________关于本程序_____________\n”);
  754.       printf(“\n”);
  755.       printf(“\n”);
  756.       printf(“\t\t本程序由小蚂蚁程序组开发制作:\n”);
  757.       printf(“\n”);
  758.       printf(“\t\t组长:heike07\t      组员:张**\n”);
  759.     printf(“\t\t组员:姜 *\t      组员:孙 *\n”);
  760.       printf(“\t\t组员:康**\t      组员:康**\n”);
  761.       printf(“\t\t美工:孙 *\n”);
  762.       printf(“\t\t指导教师:康*老师\n”);
  763.       printf(“\t\t______________________________________\n”);
  764.       printf(”                    \t\t感谢您对我们的支持!\n”);
  765.     printf(“\n”);
  766.     printf(“\t\t\t!系统提示:请按任意键返回主页面!”);
  767.     getchar();
  768. }

复制代码

就此我说几件事,大家注意下!

  • 1.希望大家可以在此代码中学到东西!反正我写的时候学到了不少!
  • 2.这个代码是改的,在网上找的思路。但是这个程序的版权是我的,嘿嘿!
  • 3.我是你们的(电脑杂谈)版主 heike07 关于帖子的问题可以来找我!
  • 4.希望我们共同进步哈!
点赞