| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1901 人关注过本帖
标题:帮忙编个程序
只看楼主 加入收藏
szf2004szf
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-12-9
收藏
 问题点数:0 回复次数:20 
帮忙编个程序

1.程序运行时,首先显示主菜单如下:

1.新建数据

2.添加数据

3.删除数据

4.排序

5.查询

6.退出

请输入序号选择相应操作

2.在主菜单中选择序号4,弹出子菜单选择排序方式,子菜单如下


1.数学成绩排序

2.程序设计成绩排序

3.总分排序。

4.返回主菜单

请按序号选择相应操作

选择子菜单的序号后,程序能正确运行并在屏幕上显示按要求排序后的相关信息。

3.在主菜单中选择序号5,弹出子菜单选择查询方式,子菜单如下:

1.学号查询

2.姓名查询

3.数学成绩查询

4.程序设计成绩查询

5.总分查询

6.返回主菜单

请按序号选择相应操作

在子菜单中选择序号后,程序按以下方式工作。

(1)学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:查询到满足条件的结果后,查询即可结束)

(2)姓名查询:输入姓名后,若该姓名存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:使用字符串比较函数进行比较)

(3)按科目查询:输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的同学的学号、姓名以及该科成绩并统计满足条件的人数;

(4)总分查询:输入指定分数,程序运行后显示总分成绩大于等于指定分数的同学的学号、姓名以及各科成绩并统计满足条件的人数。

搜索更多相关主题的帖子: 数学 菜单 序号 数据 
2005-12-13 12:36
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

这种类型的题已经有人问了很多次了,
自己这里找吧!


天行健,君子以自强不息!!QQ:68660681
2005-12-13 12:39
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
菜单用switch

用结构体

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-13 18:28
吹风
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2005-11-10
收藏
得分:0 
数组~~~

2005-12-13 18:32
騎著蝸牛航海
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-12-13
收藏
得分:0 

要把你上面写的都做出来~~我想~~大概什么都能用到吧~


数组,,结构体,,循环体,,

光循环体就够你烦的了.

2005-12-13 19:33
等待
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2005-12-1
收藏
得分:0 

好麻烦哦,我们老师也布置了同样的作业


2005-12-13 22:18
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 


程序如下自己看去!不过看完要写份感想或者意见给我!
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#define NULL 0
#define Q 10
#define LEN sizeof(struct student)
struct student /*定义一个学生考试信息的结构体*/
{char name[Q]; /*用来存放姓名的*/
char sex[Q]; /*用来存放性别的*/
long id; /*用来存放准考证号的*/
int score[4]; /*用来存放分数的*/
int total; /*用来存放总分数的*/
int m_c; /*用来存放名次的*/
struct student *next;/*定义指向下一个结构体的指针*/
};
int n; /*用来统计考生人数的*/
char ch[Q]; /*用来存放姓名的*/
struct student *creat() /*定义一个指向struct student的结构体指针函数*creat()用来修改考生信息.*/
{int i;
struct student *head,*p1,*p2;/*定义三个指向struct student的结构体指针*/
p1=p2=(struct student *)malloc(LEN);/*调用malloc()函数用来开辟一个新的存储单元*/
n=0;
printf("请输入学生考试信息!\n");
printf("请在姓名处键以\"!\"结束输入。\n");
printf("姓名:");
scanf("%s",ch);
head=NULL; /*给指针head赋初值*/
while (strcmp(ch,"!")!=0) /*调用字符比较函数strcmp()用来判断是否继续输入*/
{p1=(struct student *)malloc(LEN);/*调用malloc()函数用来开辟一个新的存储单元*/
strcpy(p1->name,ch); /*将循环结构前面输入的姓名复制到结构体名为p1的数组name中*/
printf("性别:");
scanf("%s",p1->sex);
printf("准考证号(8位):");
scanf("%ld",&p1->id);/*将输入的准考证号存放到p1所指结构体的数组id中*/
printf("数学成绩:");
scanf("%d",&p1->score[0]);/*将输入的数学成绩存放到p1所指结构体的数组score中*/
printf("物理成绩:");
scanf("%d",&p1->score[1]);/*将输入的物理成绩存放到p1所指结构体的数组score中*/
printf("英语成绩:");
scanf("%d",&p1->score[2]);/*将输入的英语成绩存放到p1所指结构体的数组score中*/
printf("C语言成绩:");
scanf("%d",&p1->score[3]);/*将输入的C语言成绩存放到p1所指结构体的数组score中*/
p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];/*计算总分 */
if(n==0)head=p1;/*如果是输入第一组学生考试信息就将指针p1赋给指针head*/
else p2->next=p1;/*否则将p1赋给p2所指结构体的next指针*/
p2=p1;/*将指针p1赋给指针p2*/
n++; /*将n的值加1*/
printf("姓名:");
scanf("%s",ch);/*将输入的姓名存放到字符数组ch中*/
}
p2->next=NULL;/*将p2所指结构体的next指针重新赋空值*/
return (head);/*将输入的第一组学生考试信息返回*/
}
void output(struct student *head) /*定义output()函数将考生的信息从头指针所指内容开始输出*/
{struct student *p;/*定义一个指向struct student的结构体指针p*/
printf("-----------------------------------------------------------------------\n");
printf(" *学生考试成绩信息表*\n");
printf("-----------------------------------------------------------------------\n"); /*71个“-”*/
printf("准考证号 姓 名 性别 数学 物理 英语 C语言 平均分 总分\n");
printf("-----------------------------------------------------------------------\n");
p=head;/*将头指针赋给p*/
if(head!=NULL)/*如果头指针非空则继续*/
do{printf("%8ld %6s %4s %2d %2d %2d %2d %-.2f %3d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->score[3],p->total/4.0,p->total);
printf("-----------------------------------------------------------------------\n");
p=p->next;/*将下一组考生信息的next指针赋给p*/
}while(p!=NULL);/*若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出.*/
}
count(struct student *head)/*定义函数count()统计考生总数*/
{if(head==NULL)return(0);/*若指针head为空返回值为0*/
else return(1+count(head->next));/*函数的递归调用*/
}
struct student *insert(struct student*head) /*插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加考生信息.*/
{struct student *p1,*p2,*p3;/*定义三个指向struct student的结构体指针*/
printf("请输入修改信息!\n");
p1=(struct student *)malloc(LEN); /*使p1指向插入的新结点*/
printf("准考证号(8位):");
scanf("%ld",&p1->id); /*将输入的准考证号存放到p1所指结构体的数组id中*/
printf("姓名:");
scanf("%s",p1->name); /*将输入的姓名存放到结构体名为p1的数组name中*/
printf("性别:");
scanf("%s",p1->sex);
printf("数学成绩:");
scanf("%d",&p1->score[0]);/*将输入的数学成绩存放到p1所指结构体的数组score中*/
printf("物理成绩:");
scanf("%d",&p1->score[1]);/*将输入的物理成绩存放到p1所指结构体的数组score中*/
printf("英语成绩:");
scanf("%d",&p1->score[2]);/*将输入的英语成绩存放到p1所指结构体的数组score中*/
printf("C语言成绩:");
scanf("%d",&p1->score[3]);/*将输入的C语言成绩存放到p1所指结构体的数组score中*/
p1->total=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];/*计算总分 */
p2=head;/*将头指针赋给p2*/
if(head==NULL) /*若没调用次函数以前的头指针head为空*/
{head=p1;p1->next=NULL;}/*则将p1赋给头指针head并将p1所指结构体成员指针next赋空值*/
else {while((p1->id>p2->id)&&(p2->next!=NULL))
{p3=p2;/*p3指向原p2指向的结点*/
p2=p2->next;}/*p2后移一个结点*/
if(p1->id<=p2->id)
{if(head==p2){p1->next=head;head=p1;} /*插入到第一个结点之前*/
else {p3->next=p1;p1->next=p2;} /*插入到p3所指结点之后*/
}
else{p2->next=p1;p1->next=NULL;} /*插入到尾结点之后*/
}
n++;/*将学生人数加1*/
return(head);
}
struct student *delete (struct student *head,long int num)/*定义一个指向struct student的结构体指针函数*delete()用来删除考生信息.*/
{struct student *p1,*p2; /*定义两个指向struct student的结构体指针*/
printf("要删除的学生准考证号为:%ld\n",num);
if(head==NULL)/*若调用次函数以前的头指针head为空*/
{printf("这是一个空表,没有可删除的学生准考证号!\n");return(head);}
else{p1=head;/*否则将头指针赋给p1*/
while(num!=p1->id&&p1->next!=NULL)/*寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空*/
{p2=p1;p1=p1->next;}/*p2指向原p1指向的结点p1后移一个结点*/
if(num==p1->id)/*如果输入的学生准考证号是p1所指的学生准考证号*//*结点找到后删除*/
{if(p1==head) head=p1->next;/*如果head指针和p1指针相等则将下一个结点赋给指针head*/
else p2->next=p1->next;/*否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去*/
printf("删除准考证号为%ld的学生\n",num);
n--;}/*将学生人数减1*/
else printf("没找到准考证号为%ld的学生!\n",num); /*结点没找到*/
return(head);/*将头指针返回*/
}
}
struct student *find(struct student *head,long int num) /*定义一个指向struct student的结构体指针函数*find()用来查找考生信息.*/
{struct student *p1; /*定义一个指向struct student的结构体指针*/
printf("要查找的学生准考证号为:%ld\n",num);
if(head==NULL)/*若调用次函数以前的头指针head为空*/
{printf("这是一个空表,没有要查找的学生准考证号!\n");return(head);}
else{p1=head;/*否则将头指针赋给p1*/
while(num!=p1->id&&p1->next!=NULL)/*寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空*/
{p1=p1->next;}/*p2指向原p1指向的结点p1后移一个结点*/
if(num==p1->id)/*如果要查找的学生准考证号是p1所指的学生准考证号*/
{ printf("------------------------------------------------------------------------------\n");/*71个“-”*/
printf("准考证号 姓 名 性别 数学 物理 英语 C语言 平均分 总分 名次\n");
printf("------------------------------------------------------------------------------\n");/*71个“-”*/
printf("%8ld %6s %4s %2d %2d %2d %2d %-.2f %3d %-2d\n",p1->id,p1->name,p1->sex,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->total/4.0,p1->total,p1->m_c);
printf("------------------------------------------------------------------------------\n");
}
else printf("没找到准考证号为%ld的学生!\n",num); /*结点没找到*/
return(head);
}
}
paixu(struct student *head) /*定义paixu()函数将考生的总分从大到小排列并输出*/
{int i,k,m,j;
struct student *p1,*p2,*p[Q];/*定义一个指向struct student的结构体指针数组p*/
m=count(head);
if(head==NULL)/*如果头指针是空则继续*/
{printf("这是一个空表,请先输入考生成绩!\n");}
else {printf("------------------------------------------------------------------------------\n");/*78个“-”*/
printf(" *学生考试成绩统计表*\n");
printf("------------------------------------------------------------------------------\n");/*78个“-”*/
printf("准考证号 姓 名 性别 数学 物理 英语 C语言 平均分 总分 名次\n");
printf("------------------------------------------------------------------------------\n");/*78个“-”*/
p1=head;
for(k=0;k<m;k++)
{p[k]=p1;p1=p1->next;}
for(k=0;k<m-1;k++) /*选择排序法*/
for(j=k+1;j<m;j++)
if(p[k]->total<p[j]->total)
{p2=p[k];p[k]=p[j];p[j]=p2;} /*从大到小排列的指针*/
}
for(i=0;i<m;i++)
{printf("%8ld %6s %4s %2d %2d %2d %2d %-.2f %3d %-2d\n",p[i]->id,p[i]->name,p[i]->sex,p[i]->score[0],p[i]->score[1],p[i]->score[2],p[i]->score[3],p[i]->total/4.0,p[i]->total,i+1);
printf("------------------------------------------------------------------------------\n");/*78个“-”*/
p[i]->m_c=i+1;
}
}
dkarg(struct student *head)
{struct student *p1;
int k,m;
float arg1=0,arg2=0,arg3=0,arg4=0;
m=count(head);
p1=head;
for(k=0;k<m;k++)
{arg1+=p1->score[0];
arg2+=p1->score[1];
arg3+=p1->score[2];
arg4+=p1->score[3];
p1=p1->next;}
arg1/=m;arg2/=m;arg3/=m;arg4/=m;
printf(" *全班单科成绩平均分*\n");
printf("------------------------------------------------------------------------------\n");/*71个“-”*/
printf("数学平均分:%.2f 物理平均分:%.2f 英语平均分:%.2f C语言平均分:%.2f \n",arg1,arg2,arg3,arg4);
printf("------------------------------------------------------------------------------\n");/*71个“-”*/
}
void main()
{int k;
struct student *head;
long i;
printf("************************\n");
printf("|学生成绩系统主菜单界面|\n");
printf("| 1.输入学生成绩 |\n");
printf("| 2.显示学生成绩 |\n");
printf("| 3.修改学生成绩 |\n");
printf("| 4.删除学生成绩 |\n");
printf("| 5.排序学生成绩 |\n");
printf("| 6.查找学生成绩 |\n");
printf("| 7.安全退出系统 |\n");
printf("| ->学生成绩管理程序<- |\n");
printf("************************\n");
head=creat();
do{printf("************************\n");
printf("|学生成绩系统主菜单界面|\n");
printf("| 1.输入学生成绩 |\n");
printf("| 2.显示学生成绩 |\n");
printf("| 3.修改学生成绩 |\n");
printf("| 4.删除学生成绩 |\n");
printf("| 5.排序学生成绩 |\n");
printf("| 6.查找学生成绩 |\n");
printf("| 7.安全退出系统 |\n");
printf("| ->学生成绩管理程序<- |\n");
printf("************************\n");
printf("请输入选择号(1--7):");
scanf("%d",&k);
switch(k)
{ case 1:head=creat();break;
case 2:output(head);printf("参加考试的学生人数为:%d人\n",count(head));printf("请按任意键显示主菜单!\n");getch();break;
case 3:head=insert(head);output(head);printf("请按任意键显示主菜单!\n");getch(); break;
case 4:printf("请输入要删除的准考证号(8位):");scanf("%ld",&i);head=delete(head,i);output(head);printf("请按任意键显示主菜单!\n");getch(); break;
case 5:paixu(head);dkarg(head);printf("参加考试的学生人数为:%d人\n",count(head));printf("请按任意键显示主菜单!\n");getch();break;
case 6:printf("请输入要查找的准考证号(8位):");scanf("%ld",&i);head=find(head,i);printf("请按任意键显示主菜单!\n");getch();break;
default:break;
}
}while(k!=7);

}


♂ 死后定当长眠,生前何须久睡。♀
2005-12-14 01:39
lihuiyi
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-12-14
收藏
得分:0 
7楼 I彻底服了YOU 
2005-12-14 06:55
闪电一号
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-12-14
收藏
得分:0 
2005-12-15 17:16
吹风
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2005-11-10
收藏
得分:0 
狠~~~~

2005-12-15 17:31
快速回复:帮忙编个程序
数据加载中...
 
   



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

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