| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3549 人关注过本帖
标题:一道超复杂的C语言程序设计题!
只看楼主 加入收藏
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

/*查找学生信息*/
int find(SLNode *head,char StudentNum[])
{
DataType data; /*定义存放结构体的数据域的变量*/
int i=0; /*定义整型变量*/
SLNode *p=NULL; /*定义指向SLNode结构体的指针变量,并赋予初值NULL*/


p=head->next; /*把链表的第一个结点的地址赋予p*/

/*查找是否有和传入的StudentNum相同的学号的学生记录*/
for(i=0;p!=NULL;i++)
{
if(strcmp(p->data.StudentNum,StudentNum)!=0)
{
p=p->next;
}
else
{
break;
}
}

/*p==NULL表示没有和StudentNum相同的学号的学生记录*/
if(p==NULL)
{
printf("There is not a student whose StudentNo is %s\n",StudentNum);
return 0;
}

ListGet(head,i,&data); /*得到结点的数据域*/
printf("No\n%s\n\n",StudentNum); /*打印学号*/
/*打印各学科成绩*/
printf("Subject1 Subject2 Subject3 Subject4 Subject5 TotalScore\n");
printf("%d %d %d %d %d ",
data.SubScore[0],
data.SubScore[1],
data.SubScore[2],
data.SubScore[3],

data.SubScore[4]);
/*打印总成绩*/
printf("%d\n",(data.SubScore[0]
+data.SubScore[1]
+data.SubScore[2]
+data.SubScore[3]
+data.SubScore[4]));
return 1;
}


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2006-12-31 22:19
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

/*建立学生记录链表*/
int StudentBuild(SLNode **head)
{
FILE *fp=NULL; /*定义一个文件类型的指针*/
FILE *fp1=NULL; /*定义一个文件类型的指针*/
DataType data; /*定义存放结构体的数据域的变量*/
char StuNum[5]; /*用来接收从文件"gidata.dat"中得到的学号*/
char SubScore[5]; /*用来接收从文件"gidata.dat"中得到的各科成绩*/
char Num[5]; /*用来接收从文件"NUM.ZXF"中得到的学生个数*/
int i,k; /*定义整型变量*/

/*以只读的形式打开"gidata.dat"文件*/
if((fp=fopen("gidata.dat","r"))==NULL)
{
printf("The file \"gidata.dat\" is lost\n");
return 0;
}

/*以只读的形式打开"gidata.dat"文件*/
if((fp1=fopen("NUM.ZXF","r"))==NULL)
{
printf("The file \"NUM.ZXF\" is lost\n");
return 0;
}

/*从文件"NUM.ZXF"中读入数据并存放在Numk中*/
fgets(Num,5,fp1);

/*从文件"gidata.dat"中读入数据*/

/*把文件位置指针的位置移到离文件开头有84个字节的位置*/
fseek(fp,84,SEEK_SET);

/*循环读入每一个学生的信息*/
for(i=0;i<(atoi(Num));i++) /*(atoi(Num))将字符串转换成整型数,学生的总个数*/
{
fgets(StuNum,5,fp); /*读入学号*/
strcpy(data.StudentNum,StuNum);/*把学号存放在data.StudentNum中*/

for(k=0;k<5;k++) /*读入五门课的成绩*/
{
if(k==0)
{
fseek(fp,3,SEEK_CUR); /*把当前文件位置指针的位置移动3个字节*/
fgets(SubScore,4,fp); /*读入课程“Subject1”的成绩*/
data.SubScore[k]=(atoi(SubScore)); /*atoi(SubScore)将字符串转换成整型数*/
}
else
{
fseek(fp,10,SEEK_CUR);/*把当前文件位置指针的位置移动10个字节*/
fgets(SubScore,4,fp);/*读入课程“Subject2”,“Subject3”,
“Subject4”,“Subject5”的成绩*/
data.SubScore[k]=(atoi(SubScore));/*atoi(SubScore)将字符串转换成整型数*/
}
}
ListInsert(*head,i,data); /*插入一个学生记录*/
fseek(fp,(84+77*(i+1)),SEEK_SET); /*把文件位置指针的位置移到下一行的开头*/
}
fclose(fp1); /*关闭文件"NUM.ZXF"*/
fclose(fp); /*关闭文件"gidata.dat"*/
return 1;
}


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2006-12-31 22:22
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

/*消息处理*/
void dealWith(SLNode **head)
{
char ch;
char StudentNum[5]; /*用来接收学号的输入*/
char Subject[9]; /*用来接收学科的输入
本程序中正确的学科有:
Subject1,Subject2,Subject3,
Subject4,Subject5*/
DataType data; /*用来接收结点的数据域*/
int SubScore[5]; /*用来接收五门学科的成绩*/
int score; /*用来对单科成绩的输入时的接收*/
while(1) /*死循环*/
{
clrscr(); /*清屏*/

/*打印主菜单*/
printf("Welcome to Student Managing System!\n\n\n");
printf("1---> find StudentData.\n");
printf("2---> change StudentData.\n");
printf("3---> add StudentData.\n");
printf("4---> delete StudentData.\n");
printf("5---> list all the StudentData.\n");
printf("6---> exit Student Managing System.\n\n");

/*输入数据*/
scanf("%c",&ch);

/*当输入的是1时*/
if(ch=='1')
{

while(1)
{
clrscr(); /*清屏*/
printf("Please input the Student Number:\n"); /*打印提示信息*/
scanf("%s",StudentNum); /*输入学生的学号*/
find(*head,StudentNum); /*调用find()函数来查找学生信息*/
getch(); /*暂停*/
clrscr(); /*清屏*/

/*打印提示信息*/
printf("1---> continue to find another student.\n");
printf("0---> back to Main Menu\n");


LOOP:scanf("%c",&ch); /*设置goto语句入口,并输入信息*/
if(ch=='1') /*当输入的是1时*/
{
continue; /*回到子循环的开始位置*/
}
else if(ch=='0') /*当输入的是0时*/
{
break; /*退出子循环*/
}
else /*其它*/
{
goto LOOP; /*回到LOOP入口点*/
}
}
}

/*当输入的是2时*/
else if(ch=='2')
{
while(1)
{
clrscr(); /*清屏*/
printf("Please input the Student Number:\n"); /*打印提示信息*/
scanf("%s",StudentNum); /*输入学生的学号*/
printf("\nPlease input a Subject:\n"); /*打印提示信息*/
scanf("%s",Subject); /*输入学科名*/
printf("\nPlease input a Score of the Subject:\n"); /*打印提示信息*/
scanf("%d",&score); /*输入学科的成绩*/
change(head,StudentNum,Subject,score); /*调用change()函数来修改学生信息*/
getch(); /*暂停*/
clrscr(); /*清屏*/

/*打印提示信息*/
printf("1---> continue to change another StudentData.\n");
printf("0---> back to Main Menu\n");


LOOP1:scanf("%c",&ch); /*设置goto语句入口,并输入信息*/
if(ch=='1') /*当输入的是1时*/
{
continue; /*回到子循环的开始位置*/
}
else if(ch=='0') /*当输入的是0时*/
{
break; /*退出子循环*/
}
else /*其它*/
{
goto LOOP1; /*回到LOOP1入口点*/
}
}
}

/*当输入的是3时*/
else if(ch=='3')
{
while(1)/*死循环*/
{
clrscr(); /*清屏*/
printf("Please input the Student Number:\n"); /*打印提示信息*/ scanf("%s",StudentNum); /*输入学生的学号*/ printf("Please input a Score of \"Subject1\":\n"); /*打印提示信息*/

scanf("%d",&SubScore[0]); /*输入学科"Subject1"的成绩*/

printf("Please input a Score of \"Subject2\":\n"); /*打印提示信息*/

scanf("%d",&SubScore[1]); /*输入学科"Subject2"的成绩*/

printf("Please input a Score of \"Subject3\":\n"); /*打印提示信息*/

scanf("%d",&SubScore[2]); /*输入学科"Subject3"的成绩*/

printf("Please input a Score of \"Subject4\":\n"); /*打印提示信息*/

scanf("%d",&SubScore[3]); /*输入学科"Subject4"的成绩*/

printf("Please input a Score of \"Subject5\":\n"); /*打印提示信息*/

scanf("%d",&SubScore[4]); /*输入学科"Subject1"的成绩*/

add(head,StudentNum,SubScore); /*调用add()函数来添加学生记录*/
getch(); /*暂停*/
clrscr(); /*清屏*/

/*打印提示信息*/
printf("1---> continue to add another StudentData.\n");
printf("0---> back to Main Menu\n");

LOOP2:scanf("%c",&ch); /*设置goto语句入口,并输入信息*/
if(ch=='1') /*当输入的是1时*/
{
continue; /*回到子循环的开始位置*/
}
else if(ch=='0') /*当输入的是0时*/
{
break; /*退出子循环*/
}
else /*其它*/
{
goto LOOP2; /*回到LOOP2入口点*/
}
}
}

/*当输入的是4时*/
else if(ch=='4')
{
while(1) /*死循环*/
{
clrscr(); /*清屏*/
printf("Please input the Student Number:\n"); /*打印提示信息*/
scanf("%s",StudentNum); /*输入学生的学号*/
delete(head,StudentNum); /*调用delete()函数来删除一个学生记录*/
clrscr(); /*清屏*/

/*打印提示信息*/
printf("1---> continue to add delete Student.\n");
printf("0---> back to Main Menu\n");

LOOP3:scanf("%c",&ch); /*设置goto语句入口,并输入信息*/

if(ch=='1') /*当输入的是1时*/
{
continue; /*回到子循环的开始位置*/
}
else if(ch=='0') /*当输入的是0时*/
{
break; /*退出子循环*/
}
else /*其它*/
{
goto LOOP3; /*回到LOOP3入口点*/
}
}
}

/*当输入的是5时*/
else if(ch=='5')
{
clrscr(); /*清屏*/
list(*head); /*调用list()函数显示全部学生信息*/
getch(); /*暂停*/
continue; /*返回到主循环的开始位置*/
}

/*当输入的是6时*/
else if(ch=='6')
{
return ; /*退出本函数,回到主函数*/
}

/*其它数据*/
else
{
continue; /*返回到主循环的开始位置*/
}
}
}


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2006-12-31 22:34
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

以"STUDATA.C"命名的文件结束
/*******************************/

[此贴子已经被作者于2006-12-31 22:37:19编辑过]


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2006-12-31 22:36
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
还有二个文件必须以附件的形式发出
"gidata.dat"."NUM.ZXF"
请楼主告诉我你的邮箱,我把这二个文件发给你。

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2006-12-31 22:42
tianmiao528
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-28
收藏
得分:0 

我的邮箱是tianmiao528@sina.com.不过说实话这个程序以我现在的水平还真是看得蛮困难,不过还是真的是非常感谢啊,我会努力的慢慢看的。呵呵!对了,新年快乐啊!

2007-01-01 14:14
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

要习惯,看别人的程序,
新年快乐


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-01 23:28
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
我已经把程序包发过去了!

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-01 23:43
heshiweij
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-7-23
收藏
得分:0 
回复 4楼 neverTheSame
可是考试的时间只有几十分钟怎么办
2013-09-12 09:47
heshiweij
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-7-23
收藏
得分:0 
回复 27楼 neverTheSame
是的 我同意你的观点,看别人的程序 模仿高手的程序 才能有很大的进步
2013-09-12 09:48
快速回复:一道超复杂的C语言程序设计题!
数据加载中...
 
   



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

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