| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:C语言课程设计关于排班系统的一些问题
只看楼主 加入收藏
王珊珊33
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-1-28
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
C语言课程设计关于排班系统的一些问题
小女大一,课程设计是百度排班系统(虽然不知老师干嘛现在布置类似小系统的作业),在论坛中找到个代码,其实只要交了代码就好,但看懂了些还有很大一部分不懂好难受,求大神助攻
声明下在“vc++6.0”环境下进行编译通过。
1。按照提示输入,输入一个星期按回车,例如:赵选择的是星期二,星期四。输入的时候输入“星期二+回车”,提示你是否还有选择有“y+回车”再输入星期四。。。。。。。。。
2。输入完成后自动打印轮休表。
3。代码一次修改,待优化的地方很多。。。楼主则优,优化
4。程序仅供参考;
程序代码:
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
struct st
{
    char *a[7];
    char b[7][8];
    int c;
};
void panduan(struct st *s);
void main()
{
    struct st s[7];
    int i=0;
    int j=0;
    char k;
    for(i=0;i<7;i++)
        for(j;j<7;j++)
            s[i].b[j][0]='\0';
        s[0].a[0]  = "赵";
        s[1].a[1]  = "钱";
        s[2].a[2]  = "孙";
        s[3].a[3]  = "李";
        s[4].a[4]  = "周";
        s[5].a[5]  = "吴";
        s[6].a[6]  = "陈";
        printf("请输入每个人的轮休选择:\n");
        for(i=0;i<7;i++)
        {
            printf("%s:\n",s[i].a[i]);
            for(j=0;j<7;j++)
            {   
                s[i].c = j;
                printf("请输入:");
                scanf("%s",s[i].b[j]);
                printf("%s还有选择吗?(y/n)",s[i].a[i]);
                fflush(stdin);
                k=getchar();
                if(k=='N'||k=='n')
                    break;
                fflush(stdin);
            }
            system("cls");
        }
        system("cls");
        panduan(s);
}
void panduan(struct st *s)
{
    int i,j,k,l,m,n,z;
    for(i=0;i<=s[0].c;i++)
    {
        for(j=0;j<=s[1].c;j++)
        {   
           
            if(strcmp(s[1].b[j],s[0].b[i])==0)
                continue;
            for(k=0;k<=s[2].c;k++)
            {
                if(strcmp(s[2].b[k],s[1].b[j])==0)
                    continue;
                if(strcmp(s[2].b[k],s[0].b[i])==0)
                    continue;
                for(l=0;l<=s[3].c;l++)
                {
                    if(strcmp(s[3].b[l],s[0].b[i])==0)
                        continue;
                    if(strcmp(s[3].b[l],s[1].b[j])==0)
                        continue;
                    if(strcmp(s[3].b[l],s[2].b[k])==0)
                        continue;
                    for(m=0;m<=s[4].c;m++)
                    {
                        if(strcmp(s[4].b[m],s[0].b[i])==0)
                            continue;
                        if(strcmp(s[4].b[m],s[1].b[j])==0)
                            continue;
                        if(strcmp(s[4].b[m],s[2].b[k])==0)
                            continue;
                        if(strcmp(s[4].b[m],s[3].b[l])==0)
                            continue;
                        for(n=0;n<=s[5].c;n++)
                        {
                            if(strcmp(s[5].b[n],s[0].b[i])==0)
                                continue;
                            if(strcmp(s[5].b[n],s[1].b[j])==0)
                                continue;
                            if(strcmp(s[5].b[n],s[2].b[k])==0)
                                continue;
                            if(strcmp(s[5].b[n],s[3].b[l])==0)
                                continue;
                            if(strcmp(s[5].b[n],s[4].b[m])==0)
                                continue;
                            for(z=0;z<=s[6].c;z++)
                            {
                                if(strcmp(s[6].b[z],s[0].b[i])==0)
                                    continue;
                                if(strcmp(s[6].b[z],s[1].b[j])==0)
                                    continue;
                                if(strcmp(s[6].b[z],s[2].b[k])==0)
                                    continue;
                                if(strcmp(s[6].b[z],s[3].b[l])==0)
                                    continue;
                                if(strcmp(s[6].b[z],s[4].b[m])==0)
                                    continue;
                                if(strcmp(s[6].b[z],s[5].b[n])==0)
                                    continue;
                                printf("%-4s,%-4s,%-4s,%-4s,%-4s,%-4s,%-4s\n",s[0].a[0],s[1].a[1],s[2].a[2],s[3].a[3],s[4].a[4],s[5].a[5],s[6].a[6]);
                                printf("=============================================================\n");
                                printf("%s,%s,%s,%s,%s,%s,%s\n",s[0].b[i],s[1].b[j],s[2].b[k],s[3].b[l],s[4].b[m],s[5].b[n],s[6].b[z]);
                              
                            }
                        }
                    }
                }
            }
           
        }
    }
}
搜索更多相关主题的帖子: include 百度 C语言 课程 
2015-01-28 15:48
王珊珊33
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-1-28
收藏
得分:0 
1     s[i].b[j][0]='\0'这个是什么意思呢
        2    s[i].c = j;   还有这个...
        3     void panduan(struct st *s)这个函数是用来比较星期的吗,如果相同是怎么进行下一步的。。。


谢谢   QQ564508523

2015-01-28 15:51
朱大哥
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:72
专家分:123
注 册:2015-1-16
收藏
得分:5 
我还是去喝茶了
妹子一起吧 别墨迹了。。。。。。。。。。
2015-01-28 17:04
王珊珊33
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-1-28
收藏
得分:0 
回复 3楼 朱大哥
大哥啊。。。这样子好咩。。
2015-01-28 19:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:5 
这个“排班系统”有点意思,相当于在一个n×n的棋盘中有数个棋子,找出n个棋子,使得这n个棋子既不同行亦不同列。
(算法可能有问题,先删除)


[ 本帖最后由 rjsp 于 2015-1-29 10:48 编辑 ]
2015-01-29 10:40
王珊珊33
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-1-28
收藏
得分:0 
回复 5楼 rjsp
好像是的哦,可是才学了半学期C,很多东西理解不了。
2015-01-29 12:56
快速回复:C语言课程设计关于排班系统的一些问题
数据加载中...
 
   



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

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