8会游泳鱼 发表于 2009-12-25 12:23

求助,增加功能。自己太菜了。。

求助,,我想增加下面几个功能,想请会c语言的帮忙。。

        建立一个某种信息的文件。对文件可以进行以下操作:
        1.添加记录。
        2.修改记录。
        3.删除记录。
        4.插入记录。
        5.查询记录。

部分简单的程序如下,深一点的都不会。。
/***********************************************************
******星座辨别系统:用于判别某一指定日期是处于什么星座
******创作人:
******创作日期:2009年12月
************************************************************/
#include "stdlib.h"
#include "stdio.h"

void welcome();   /*定义函数*/
void year();
void month();
void dis1();
void dis2();
void dis3();      
void dis4();
void dis5();
void dis6();
void dis7();
void dis8();
void dis9();
void dis10();
void dis11();
void dis12();
int ye,mon,data,test,exi;


void welcome()/*进入欢迎界面*/
{
printf("*******************************************************************\n");
printf("                         欢迎使用星座辨别系统\n                ");
printf("专业班级:         学号:             制作人:            \n");
printf("*******************************************************************\n");
printf("请按任意键继续");
getchar();
}

void year() /*判别是否为闰年,是的话将二月份限定为29日,否的话将二月份限定为28日*/
{
printf("\n");       
printf("请输入年份:");
scanf("%d",&ye);
getchar();
if((ye%4==0&&ye%100!=0)||ye%400==0)
{test=29;}
else
test=28;
month();        
}


void month()   /*月份辨别*/
{
printf("请输入月份:");
while(1)
{
   scanf("%d",&mon);
   getchar();
if(mon>0&&mon<13)   /*如果输入的月份在1——12之间,则进入*/
{
if(mon==1) dis1();
else if(mon==2) dis2();
else if(mon==3) dis3();
else if(mon==4) dis4();
else if(mon==5) dis5();
else if(mon==6) dis6();
else if(mon==7) dis7();
else if(mon==8) dis8();
else if(mon==9) dis9();
else if(mon==10) dis10();
else if(mon==11) dis11();
else if(mon==12) dis12();       
   }
printf("请输入正确的月份:");
}       
}

void dis1()   /*一月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=20)
        {printf("%d年%d月%d日为魔羯座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为水瓶座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
        }
printf("请输入正确的日期:");
}
}

void dis2()   /*二月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=test)
   {
        if(data>0&&data<=19)
        {printf("%d年%d月%d日为水瓶座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为双鱼座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis3()   /*三月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=20)
        {printf("%d年%d月%d日为双鱼座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为白羊座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis4()   /*四月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=30)
   {
        if(data>0&&data<=20)
        {printf("%d年%d月%d日为白羊座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为金牛座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis5()   /*五月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=21)
        {printf("%d年%d月%d日为金牛座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为双子座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis6()   /*六月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=30)
   {
        if(data>0&&data<=21)
        {printf("%d年%d月%d日为双子座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为巨蟹座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis7()   /*七月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=22)
        {printf("%d年%d月%d日为巨蟹座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为狮子座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis8()   /*八月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=23)
        {printf("%d年%d月%d日为狮子座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为处女座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis9()   /*九月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=30)
   {
        if(data>0&&data<=23)
        {printf("%d年%d月%d日为处女座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为天秤座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis10()   /*十月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=23)
        {printf("%d年%d月%d日为天秤座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为天蝎座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis11()   /*十一月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=30)
   {
        if(data>0&&data<=22)
        {printf("%d年%d月%d日为天蝎座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为射手座!\n",ye,mon,data);}
        printf("输入1返回输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void dis12()   /*十二月份的辨别*/
{
printf("请输入日期:");
while (1)
{scanf("%d",&data);
getchar();
if(data>0&&data<=31)
   {
        if(data>0&&data<=21)
        {printf("%d年%d月%d日为射手座!\n",ye,mon,data);}
        else
        {printf("%d年%d月%d日为魔羯座!\n",ye,mon,data);}
        printf("输入1返回,输入2退出:");
        scanf("%d",&exi);
        getchar();
        if(exi==1)
        {year();}
        else if(exi==2)
        {exit(0);}
   }
printf("请输入正确的日期:");
}
}

void main()   /*主函数*/
{
welcome();
year();
}

8会游泳鱼 发表于 2009-12-25 12:23

沙发。。。

F_Friends 发表于 2009-12-25 12:26

俺连什么叫C语言都不知道啊~~

小平31 发表于 2009-12-25 12:40

作业直接拿这个交上去可以吗

炫。 发表于 2009-12-25 12:42

看不懂

019871119 发表于 2009-12-25 12:42

什么来的啊?

司机弟弟 发表于 2009-12-25 12:43

如果还是大一,应该会

F_Friends 发表于 2009-12-25 12:51

回复 7# 司机弟弟


我很不高兴啊~~

8会游泳鱼 发表于 2009-12-25 12:54

老师说太简单。要我回去把报告写好一点。。
求帮忙改功能强大一点。

灰机鬼 发表于 2009-12-25 13:06

LZ不够强不够大。

隐·湮 发表于 2009-12-25 13:08

看到头先晕了

?天已? ̄微蓝 发表于 2009-12-25 13:10

LZ不够强不够大。
灰机鬼 发表于 2009-12-25 13:06 https://www.gdutbbs.com/images/common/back.gif


    直接引用

不会游泳鱼 发表于 2009-12-25 13:38

为什么会有那么多disxx()
0号你嫌代码太短吗

8会游泳鱼 发表于 2009-12-25 13:40

1号,我严重不懂。乱来的。。就是需要求助

=。=大灰娘 发表于 2009-12-25 13:52

头晕了...

最爱Loli蓝 发表于 2009-12-25 13:53

鱼叔叔忧郁了。

不会游泳鱼 发表于 2009-12-25 13:55

数据添加, 修改, 删除, 插入, 查询, 这不是数据库吗

不会游泳鱼 发表于 2009-12-25 14:19

本帖最后由 不会游泳鱼 于 2009-12-25 14:29 编辑

星座判断可以先定义好星座:
char *zodiac[] = {"白羊", "金牛", ... , "双鱼"};
以及12星座在一年中哪一天开始 (不用考虑闰年):
int zday[] = {第几天, 第几天, ..., 第几天};
然后定义每个月的最大天数 (不用考虑闰年):
int days[] = {31, 28, 31, ... , 31};
然后把月份转换为天数:
printf("请输入生日(m-d):");
scanf("%d-%d",&mon, &date);
int dayofy = 0; //day of year, 一年中的第几天
for (i = 0; i < mon; i++) {
dayofy += days;
}
然后把日期加上去..
dayofy += date;
然后判断dayofy在数组zday中的位置, 获得星座:
for (i = 0; i < 12; i++) {
if (dayofy >= zday) break;
}
printf(zodiac);
//以上代码未经调试....

最爱Loli蓝 发表于 2009-12-25 14:20

看不懂。

不会游泳鱼 发表于 2009-12-25 14:25

啱先google到一种更好的办法, 将月份乘以100加上日期, 彻底解除闰年烦恼.
页: [1] 2 3
查看完整版本: 求助,增加功能。自己太菜了。。