| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2717 人关注过本帖
标题:杂志订阅管理系统
只看楼主 加入收藏
Keshawn7
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-6-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
杂志订阅管理系统
萌新求教,杂志订阅管理系统的问题。   
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define max 50
struct magazine
{
char  name[11];
char  sex[6];
char  addr[11];
char  phone_number[12];
char  unit_price[5];
char  amount[4];
char  time_limit[11];
}
order[max];
void save(int n);//保存函数
int  record();
void search();
void printf_n(int n);//输出n条信息
void printf_one(int i);//输出一条信息
void input(int i);
void statistic();//统计函数
void add();
void menu();
void main()
{
FILE *fp;
fp=fopen("record.txt","w");/*在C:\Documents and Settings\Administrator里建立一个"record.txt"记事本*/
fclose(fp);
menu();
}
void menu()
{
void clrscr();
int w,    n;
do
{
system("color E");
putchar(73);
printf("                    ****************\n");
printf("                 ****                ****\n");
printf("             ****                        ****\n");
printf("           **                                **\n");
printf("         **                                    **\n");
printf("       **                                        **\n");
printf("     **       *******                *******       **\n");
printf("     **   ****      ****        ****       ****   **\n");
printf("   **   *************    **    *************    **   **\n");
printf("   **     ****       **          ****       ****     **\n");
printf(" **                                                     **\n");
printf(" **                                                     **\n");
printf(" **                                                     **\n");
printf(" **                                                     **\n");
printf(" **    **                                        **     **\n");
printf(" **    **                                        **     **\n");
printf(" **    **                                        **     **\n");
printf(" **      **                                    **       **\n");
printf("   **    **                                    **     **\n");
printf("   **      **                                **       **\n");
printf("     **    **                                **     **\n");
printf("     **      **                            **       **\n");
printf("       **      ****                    ****       **\n");
printf("         **        ****            ****         **\n");
printf("           **          ************           ** \n");
printf("             ****                         ****\n");
printf("                * * * * * * QAQ * * * * * * * * * * * *\n");
printf("\t\t*                                                 *\n");
printf("\t\t*             欢迎来到杂志订阅系统!           *\n");
printf("\t\t*                       Blibili                   *\n");
printf("\t\t*                  Keshawn7                       *\n");
printf("\t\t*                                                 *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\n\n\t\t  *********************************************\n\n");
printf("\t\t      *        1:添加新用户信息     *\n");
printf("\t\t      *        2:浏览用户信息       *\n");
printf("\t\t      *        3:统计               *\n");   
printf("\t\t      *        4:退出               *\n\n");
printf("\t\t  *********************************************\n\n");
printf("  输入数字(1-4):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>4) w=1;
else w=0;
}
while (w==1);
/***************选择功能****************/
switch(n)
   {
        case 1:add();break;          /*增加新订户记录*/
        case 2:search();break;       /*查找过期的订户记录并删除*/
    case 3:statistic();break;    /*统计*/
    case 4:break;         /*退出*/
   }
}
/*********************添加模块************************/
void add()
{
int t,i,m;
system("cls");
t=record();//负荷记录
printf("您需要添加多少用户的信息?\n");
printf("输入号码:[  ]\b\b\b");
scanf("%d",&m);
for(i=0;i<m;i++)   
{
printf("\n输入 %dth subscriber record.\n",i+1);
input(t+i);                  /*调用输入函数*/
}
save(t+m);                   /*调用保存函数 保存t+m组数据*/
system("cls")  ;                /*******清屏*********/
menu();                      /*返回登陆界面*/
}
void input(int i)
{
    printf("请输入:\n编号 姓名 性别 电话号码 杂志价格 订阅数量 订阅期限");
        scanf("%s%s%s%s%s%s%s",&order[i].addr,&order[i].name,&order[i].sex,order[i].phone_number,order[i].unit_price,order[i].amount,order[i].time_limit);

}
/**************************统计模块****************************/
void statistic()
{
int t;
t=record();
printf("订阅者的数量[%d]\b\b\b",t);
printf_n(t);
printf("\n\n\n按任意键返回...\n\n");
getch();
menu();
}
void printf_one(int i)    /*显示一个仪器记录的函数*/
{
printf("%-10s  %-5s  %-10s  %-11s    %-4s   %-3s      %-10s\n\n",order[i].name,order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,&order[i].time_limit);
}
void printf_n(int n)      /*显示n个仪器记录的函数*/
{
int j;
system("cls");                /**********清屏************/
printf("姓名  性别  地址  电话号码   价格  数量  时间期限\n\n");
for(j=0;j<n;j++)
 {
  if((j+1)%10==0)         /*控制显示,每屏显示10行*/
   {
   printf("\n\n按任意键继续 ...");
   getch();
   puts("\n\n");
   }
printf_one(j);            /*调用显示一个仪器记录的函数*/
 }
}
/***************查询模块****************/
void search()
{
FILE *fp;
char date[11],str[2];
int t,i,sum=0;
t=record();
system("cls");
printf("请输入日期:[          ]\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",date);
printf("\n");
if((fp=fopen("record.txt","w"))==0)/*以只写方式打开*/
      {
       printf("\n无法打开文件\n");
       exit(0);
      }
system("cls");
printf("\n");
   for(i=0;i<t;i++)
     {
       if(strcmp(order[i].time_limit,date)<0)
       {
          sum++;
         
          printf("\n");
          printf_one(i);          /**********把符合条件的记录显示出来*********/
          printf("\n\n记录已过期!");
          printf("\n\n你想要删除此条信息吗?('Y'or'N'):[ ]\b\b");
          scanf("%s",str);;
        if(strcmp(str,"Y")==0||strcmp(str,"y")==0)
        continue;
       }
fwrite(&order[i],sizeof(struct magazine),1,fp);
      }
fclose(fp);
     if(sum==0)
     {
     printf("***************************************************\n\n");
     printf("很遗憾! 无法找到您想要的条件\n\n");
     printf("***************************************************\n\n");
     }
     printf("\n\n\n按任意键返回前一步...\n");
     getch();
     menu();
}/****************************公共函数************************************/
int record()/***加载仪器信息并计算记录仪器个数的函数***/
{
FILE *fp;
int i;
   if((fp=fopen("record.txt","r"))==NULL)/*以只读方式打开*/
     {
      printf("\n无法打开文件\n");
      exit(0);
     }
for(i=0;!feof(fp);i++)/*从文件中读入数据并保存在结构体数组中*/
fread(&order[i],sizeof(struct magazine),1,fp);
fclose(fp);
return(i-1);
}void save(int n)/*n表示保存n组数据,m表示保存在哪个文件夹里*/
{
FILE *fp;
int i;
fp=fopen("record.txt","w");/*以只写方式打开*/
if(fp==NULL)
{
printf("\n无法打开文件\n");
exit(0);
}
for(i=0;i<n;i++)   
  {   
    fwrite(&order[i],sizeof(struct magazine),1,fp);
                  
  }   
   fclose(fp);   
}
search部分char date[11],str[2];和 if(strcmp(order[i].time_limit,date)<0)怎么理解!
求教!!谢大佬!!
搜索更多相关主题的帖子: amount search include 管理系统 magazine 
2017-06-23 21:17
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:20 
char date[11],记录日期:可能是这种格式2017,06,27再加上个'\0'刚好11个字符
str[2]存储Y或者N的,加上'\0'刚好2个字符
if(strcmp(order[i].time_limit,date)<0)
如果输入日期的超出了期限,可以像理解食品超过保质期一样,日期越大的ASCII码越大,strcmp可以比较

............
2017-06-27 12:23
快速回复:杂志订阅管理系统
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018401 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved