经过一个多月和组员的努力,终于写出了我们人生中第一个系统,现将它分享在这里。希望给大家提供一些帮助。
因为自己的指针没怎么学好,所以整个编程我使用的是结构体。

头文件

自己使用的头文件较少,但都是必要的哦

#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

结构体

结构体的元素是按照老师要求来的。

struct magazine
{char name[40];          //姓名char sex[10];           //性别char addr[100];          //地址char tel[12];           //电话号码float price;            //杂志单价int num;                //订阅数float total;            //总费用char date[30];          //截止订阅的期限
}student[20];           //容纳的最大数为20

一开始定义了一个全局变量当做已经输入的人数。有一些在程序中运行不出来的,我也放到了这里。

int a,d,s;                      //定义全局变量a,表示已经输入的人数

主菜单界面

为了界面的好看,自己设计了一些东西。

int menu()                 //主菜单界面
{char b[80];int c;                 //定义整型变量system("cls");printf("\t\t\t\t\t***********************************\n");printf("\t\t\t\t\t       欢迎来到XX杂志订阅管理中心  \n");printf("\t\t\t\t\t           0.添加新的订户信息      \n");printf("\t\t\t\t\t           1.查找订户的信息        \n");printf("\t\t\t\t\t          2.删除过期的订户信息     \n");printf("\t\t\t\t\t       3.统计所有订户的账单信息    \n");printf("\t\t\t\t\t               4.退出界面          \n");printf("\t\t\t\t\t***********************************\n");do{printf("\t\t\t\t\t          请从0--4中选择您的操作: \n");scanf("%s",b);c=atoi(b);         //将字符串转换成长整型数}while(c<0||c>4);return c;
}

添加函数

因为是使用的结构体,所以添加部分写的很简单。每个部分我都加上了清屏函数,下面的部分我就不提了。添加完之后会返回到菜单界面。

int add()              //添加订户信息
{system("cls");for(a=0;a<20;a++){printf("\t\t\t**************** 请输入用户信息 ****************\n");printf("\t\t\t请输入订户的姓名:\n");scanf("%s",&student[a].name);printf("\t\t\t请输入订户的性别:\n");scanf("%s",&student[a].sex);printf("\t\t\t请输入订户的地址:\n");scanf("%s",&student[a].addr);printf("\t\t\t请输入订户的电话号码:\n");scanf("%s",&student[a].tel);printf("\t\t\t请输入杂志单价:\n");scanf("%f",&student[a].price);printf("\t\t\t请输入订阅数:\n");scanf("%d",&student[a].num);printf("\t\t\t请输入截止订阅的期限(月):\n");scanf("%s",&student[a].date);printf("\t\t\t输入1继续添加输入0结束:\n");scanf("%d",&s);if(s==0)break;}menu();return(0);
}

查找函数

查找部分为了简便易观,写的稍微长点。这个稍微有点问题,第一遍输入它会显示没有相同姓名的用户记录。推荐先打开统计函数,再打开这个查找函数。或者你进入两边查找函数,也可以解决问题。

int find()       //查找函数
{int mark=0;int e;printf("\t\t\t************** 按姓名查找 **************\n");char name[20];printf("\t\t\t 请输入需要查找的姓名:\n");scanf("%s",&name);for(e=0;e<a;e++){if(strcmp(student[e].name,name)==0){printf("\t\t\t********** 以下是您查找的用户信息 ********\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价  订阅数  订阅期限\n");printf("\t\t\t%s  %s   %s  %s    %f        %d       %s\n",student[e].name,student[e].sex,student[e].addr,student[e].tel,student[e].price,student[e].num,student[e].date);mark++;if((e+1)<a){printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");if(getch()=='y' || getch()=='Y'){continue;}elsereturn(0);}else{printf("\t\t\t按任意键返回主菜单");getch();return(0);}}}if(mark == 0){printf("\t\t\t没有相同姓名的用户纪录\n");printf("\t\t\t按任意键返回主菜单\n");getch();return(0);}return 0;
}

删除函数

删除函数稍微麻烦一点,这个折腾了我们很久,后来参照别人的有了灵感写出来了。

void dele()    //删除函数
{int i,j;int deletemark=0;char phone[20];printf("\t\t\t请输入要删除用户电话号码:\n");scanf("%s",phone);if(a==0){printf("\t\t\t对不起,文件中无任何纪录\n");printf("\t\t\t按任意键返回主菜单\n");getch();return;}for (i=0;i<a;i++){if (strcmp(student[i].tel,phone)==0){printf("\t\t\t以下是您要删除的用户纪录:\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价  订阅数  订阅期限\n");printf("\t\t\t%s  %s   %s  %s    %f        %d       %s\n",student[i].name,student[i].sex,student[i].addr,student[i].tel,student[i].price,student[i].num,student[i].date);printf("\t\t\t是否删除?(y/n)");if (getch()=='y' || getch()=='Y'){for (j=i;j<a-1;j++)student[j]=student[j+1];a--;deletemark++;printf("\t\t\t删除成功\n");printf("\t\t\t是否继续删除?(y/n)\n");if (getch()=='y' || getch()=='Y')dele();return;}elsereturn;}continue;}if (deletemark==0){printf("\t\t\t没有该用户的纪录\n");printf("\t\t\t是否继续删除?(y/n)\n");if(getch()=='y' || getch()=='Y')dele();return;}return;
}

统计函数

这个很简单,利用循环把所有记录的东西显示出来即可。

void statistics()      //统计函数
{for(a=0;a<20;a++){student[a].total=student[a].price*student[a].num;} system("cls");printf("\t\t\t************************* 以下为通讯录所有信息**********************\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价    订阅数   总费用     订阅期限\n");for(a=0;a<20;a++)printf("\t\t\t%s  %s   %s  %s    %f     %d       %f   %s\n",student[a].name,student[a].sex,student[a].addr,student[a].tel,student[a].price,student[a].num,student[a].total,student[a].date);printf("\t\t\t********************************************************************\n");getch();                        //无回显的输入字符,输入的字符不会显示return;
}

主函数

主函数主要就是调用以上的函数,我利用switch将它们连接起来,虽然大部分写程序都是这样,哈哈。

int main()
{int selectnum;while(1){selectnum=menu();   //将menu函数赋给变量selectnumswitch(selectnum)   //将selectnum变量作为switch的运行条件{case 0:add();break;case 1:find();break;case 2:dele();break;case 3:statistics();break;case 4:printf("\t\t\t\t\t退出成功,下次再见!\n");system("pause");getchar();exit(0);}}system("cls");getchar();return 0;
}

就是如此,这个程序是在VC++2010版本上写的,应该在其他的版本上面也能运行。
下面就是完整的源代码:

#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct magazine
{char name[40];          //姓名char sex[10];           //性别char addr[100];          //地址char tel[12];           //电话号码float price;            //杂志单价int num;                //订阅数float total;            //总费用char date[30];          //截止订阅的期限
}student[20];        //容纳的最大数为20
int a,d,s;                      //定义全局变量a,表示已经输入的人数
int menu()                 //主菜单界面
{char b[80];int c;                 //定义整型变量system("cls");printf("\t\t\t\t\t***********************************\n");printf("\t\t\t\t\t       欢迎来到XX杂志订阅管理中心  \n");printf("\t\t\t\t\t           0.添加新的订户信息      \n");printf("\t\t\t\t\t           1.查找订户的信息        \n");printf("\t\t\t\t\t          2.删除过期的订户信息     \n");printf("\t\t\t\t\t       3.统计所有订户的账单信息    \n");printf("\t\t\t\t\t               4.退出界面          \n");printf("\t\t\t\t\t***********************************\n");do{printf("\t\t\t\t\t          请从0--4中选择您的操作: \n");scanf("%s",b);c=atoi(b);         //将字符串转换成长整型数}while(c<0||c>4);return c;
}
int add()              //添加订户信息
{system("cls");for(a=0;a<20;a++){printf("\t\t\t**************** 请输入用户信息 ****************\n");printf("\t\t\t请输入订户的姓名:\n");scanf("%s",&student[a].name);printf("\t\t\t请输入订户的性别:\n");scanf("%s",&student[a].sex);printf("\t\t\t请输入订户的地址:\n");scanf("%s",&student[a].addr);printf("\t\t\t请输入订户的电话号码:\n");scanf("%s",&student[a].tel);printf("\t\t\t请输入杂志单价:\n");scanf("%f",&student[a].price);printf("\t\t\t请输入订阅数:\n");scanf("%d",&student[a].num);printf("\t\t\t请输入截止订阅的期限(月):\n");scanf("%s",&student[a].date);printf("\t\t\t输入1继续添加输入0结束:\n");scanf("%d",&s);if(s==0)break;}menu();return(0);
}
int find()       //查找函数
{int mark=0;int e;printf("\t\t\t************** 按姓名查找 **************\n");char name[20];printf("\t\t\t 请输入需要查找的姓名:\n");scanf("%s",&name);for(e=0;e<a;e++){if(strcmp(student[e].name,name)==0){printf("\t\t\t********** 以下是您查找的用户信息 ********\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价  订阅数  订阅期限\n");printf("\t\t\t%s  %s   %s  %s    %f        %d       %s\n",student[e].name,student[e].sex,student[e].addr,student[e].tel,student[e].price,student[e].num,student[e].date);mark++;if((e+1)<a){printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");if(getch()=='y' || getch()=='Y'){continue;}elsereturn(0);}else{printf("\t\t\t按任意键返回主菜单");getch();return(0);}}}if(mark == 0){printf("\t\t\t没有相同姓名的用户纪录\n");printf("\t\t\t按任意键返回主菜单\n");getch();return(0);}return 0;
}
void dele()    //删除函数
{int i,j;int deletemark=0;char phone[20];printf("\t\t\t请输入要删除用户电话号码:\n");scanf("%s",phone);if(a==0){printf("\t\t\t对不起,文件中无任何纪录\n");printf("\t\t\t按任意键返回主菜单\n");getch();return;}for (i=0;i<a;i++){if (strcmp(student[i].tel,phone)==0){printf("\t\t\t以下是您要删除的用户纪录:\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价  订阅数  订阅期限\n");printf("\t\t\t%s  %s   %s  %s    %f        %d       %s\n",student[i].name,student[i].sex,student[i].addr,student[i].tel,student[i].price,student[i].num,student[i].date);printf("\t\t\t是否删除?(y/n)");if (getch()=='y' || getch()=='Y'){for (j=i;j<a-1;j++)student[j]=student[j+1];a--;deletemark++;printf("\t\t\t删除成功\n");printf("\t\t\t是否继续删除?(y/n)\n");if (getch()=='y' || getch()=='Y')dele();return;}elsereturn;}continue;}if (deletemark==0){printf("\t\t\t没有该用户的纪录\n");printf("\t\t\t是否继续删除?(y/n)\n");if(getch()=='y' || getch()=='Y')dele();return;}return;
}
void statistics()      //统计函数
{for(a=0;a<20;a++){student[a].total=student[a].price*student[a].num;} system("cls");printf("\t\t\t************************* 以下为通讯录所有信息**********************\n");printf("\t\t\t姓名    性别 地址          电话号码       杂志单价    订阅数   总费用     订阅期限\n");for(a=0;a<20;a++)printf("\t\t\t%s  %s   %s  %s    %f     %d       %f   %s\n",student[a].name,student[a].sex,student[a].addr,student[a].tel,student[a].price,student[a].num,student[a].total,student[a].date);printf("\t\t\t********************************************************************\n");getch();                        //无回显的输入字符,输入的字符不会显示return;
}
int main()
{int selectnum;while(1){selectnum=menu();   //将menu函数赋给变量selectnumswitch(selectnum)   //将selectnum变量作为switch的运行条件{case 0:add();break;case 1:find();break;case 2:dele();break;case 3:statistics();break;case 4:printf("\t\t\t\t\t退出成功,下次再见!\n");system("pause");getchar();exit(0);}}system("cls");getchar();return 0;
}

没有思路的学弟学妹们,可以来看看哦,嘿嘿。

C语言杂志订阅管理系统相关推荐

  1. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...

    C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...

  2. 杂志订阅管理系统C语言课程设计

    杂志订阅管理系统(只列出了大体的框架,需要源码的朋友请私信联系.) 1.问题描述 使用计算机对杂志进行管理,该杂志最多拥有订阅用户不超过50人,每个订户的信息包括:编号,姓名,性别,电话号码,杂志单位 ...

  3. C/C++杂志订阅管理系统[2022-12-31]

    C/C++杂志订阅管理系统[2022-12-31] 题目26 "杂志订阅管理系统设计" 1.问题描述 使用计算机对杂志进行管理,该杂志最多拥有订阅用户不超过 50 人,每个订户的信 ...

  4. C 杂志订阅管理系统

    支持管理员和普通用户两种角色登录 支持用户注册和密码修改 支持杂志增删改查和统计 #include <stdio.h> #include <stdlib.h> #include ...

  5. 杂志订阅管理系统c++_电池管理系统BMS功能安全开发流程详解

    点击上面 "电动知家"可以订阅哦! BMS功能安全开发流程详解 BMS和ISO26262 - BMS & ISO26262简介 BMS即Battery Management ...

  6. 杂志订阅管理系统c++_有哪些值得收藏的室内设计杂志?

    干货千万别贪多. 在信息爆炸的时代身边虽然资源很多,但只有潜心认真学习自己喜欢的几个项目,深入研究,才能有所收获.另外可能有些网站国内无法打开. 本篇只介绍海外的室内设计有关杂志,以后有新的杂志会再补 ...

  7. 【C++课设】——杂志订阅管理系统(VS2019+MySQL+EasyX)

  8. 完成杂志续订c语言程序,C语言程序设计报告杂志订阅管理软件.doc

    C语言程序设计报告杂志订阅管理软件 C 语 言 程 序 设 计 学院: 工程学院 班级序号: 学号: 20071003303 姓名: 华进 指导老师: 刘文中 前言 我们学习C语言课程设计的主要目的是 ...

  9. 基于SSM框架实现期刊杂志稿件管理系统【附项目源码】

    基于SSM框架实现期刊杂志稿件管理系统演示 系统后台: 模块一: 系统基本信息(系统管理员) 投稿人信息管理(检索/添加/修改/删除): 编号.登录名.登录密码.姓名.性别.电话.通讯地址 作者信息管 ...

最新文章

  1. vue-component
  2. 抽象工厂模式_常用设计模式--抽象工厂模式
  3. http各种中的各种timeout
  4. JAVA入门[23]-SpringBoot配置Swagger2
  5. 免 sudo 使用 docker
  6. AIX下RAC搭建 Oracle10G(六)dbca建库
  7. 上传文件实时显示网速怎么实现_担心PC程序吃内存占网速?有了它终于放心了...
  8. photozoompro 8 解锁代码_能够在手机上实现代码编写的APP——Pydroid 3
  9. windows安装wget
  10. Jenkins控制台出现中文乱码
  11. 怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
  12. php 1---100之间的和 几种方法
  13. 谷歌离线地图二次开发源代码
  14. 树木分形迭代图 matlab,园林设计中分形理论的引入
  15. matlab直方图均衡化函数
  16. Oracle树形结构拖拽之插队重新排序
  17. 数列的单调有界和极限值
  18. php中的 -是什么
  19. 韩国中产的今天!76岁的快递员,70岁的站街女......
  20. 蓝桥杯算法训练-强力党逗志芃

热门文章

  1. Flow 3D学习记录
  2. 密码学中的同态加密算法,保证数据的安全,你了解吗?
  3. Android 开发艺术探索笔记(17),android开发艺术探索
  4. 《哥斯拉2》迅雷BT高清下载[MP4/mkv/1.42GB/2.35GB]超高清系画质[HD720p/1080p]
  5. 电路复习——电路的等效变换
  6. 原料采购流程图模板分享
  7. PYTHON---下三角矩阵的判断
  8. IPC清晰的分类总结
  9. python永真循环_python永真循环_Python学习(一)
  10. 韩博士一键重装电脑系统教程,小编教你韩博士怎么重装电脑win7系统