求大牛们帮忙解决C语言问题(学生管理系统4.0)很急在线等,刷夜等~!

qq1787781214 2012-05-29 11:31:43
这个是本人编写的程序,编译没有错误,但是实现不了功能,请大牛们帮忙看下
最好能有输入的实例,我感觉输入有点问题,大牛们能指出正确的输入最好,指出错误更好,谢谢了~!真的很急

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 30
#define m 12
#define z 3
void Searchbyname(int (*compare)(int a,int b),long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]);
void Swap(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]); /*为避免每次函数中都单独写交换,特地将交换写为一个函数*/
void averageofstudent(int n,int project[][z],int everysum[],float everyaverage[],char name[][m],long num[]);
void Listrecord(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[],float everyaverage[]);
void dictionary(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]);
void PrintfScore(int project[][z],long num[],int n,char name[][m],int everysum[]); /*根据需求打印排序过后的成绩(根据功能3和4)*/
int Readscore(int project[][z],long num[],char name[][m]);
void Average(int n,int project[][z]);
void DataSort(int (*compare)(int a,int b),long num[],int n,int project[][z],int *pstr[N],int everysum[],char name[][m]);
void SN4(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]);
void SB5(long num[],int n,int (*compare)(int a,int b),int project[][z],int *pstr[],char name[][m],int everysum[]);
void SA6(int project[][z],int n);
int Ascending(int a,int b);
int Descending(int a,int b);
main()
{
int *pstr[N];
int *temp2=NULL;
int everysum[N];
float everyaverage[N];
int project[N][z];
char name[N][m];
int n,choice;
int code;
long num [N];
start: printf("1.Append record\n");
printf("2.Caculate total and average score of course\n");
printf("3.Caculate total and average score of student\n");
printf("4,sort in descending order by every student\n");
printf("5.Sort in ascending order by every student\n");
printf("6.Sort in ascending order by number\n");
printf("7.Sort in dictionary order by name\n");
printf("8.Search by number\n");
printf("9.Search by name\n");
printf("10.Statistic analysis for every course\n");
printf("11.List record\n");
printf("0.Exit\n");
printf("please enter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
n=Readscore(project,num,name); /*录入每个学生的学号,姓名,和成绩(3门)*/
printf("Total student are %d\n",n); /*打印学生人数*/
goto start; /*返回i作为学生的人数*/
break;
case 2:
Average(n,project);
goto start;
break;
case 3:
averageofstudent(n,project,everysum,everyaverage,name,num);
goto start;
break;
case 4:
DataSort(Descending,num,n,project,pstr,everysum,name);
PrintfScore(project,num,n,name,everysum);
goto start;
break;
case 5:
DataSort(Ascending,num,n,project,pstr,everysum,name);
PrintfScore(project,num,n,name,everysum);
goto start;
break;
case 6:
SN4(num,n,project,pstr,name,everysum);
goto start;
break;
case 7:
dictionary(num,n,project,pstr,name,everysum);
goto start;
break;
case 8:
SB5(num,n,Descending,project,pstr,name,everysum);
goto start;
break;
case 9:
Searchbyname(Descending,num,n,project,pstr,name,everysum);
goto start;
break;
case 10:
SA6(project,n);
goto start;
break;
case 11:
Listrecord(num,n,project,pstr,name,everysum,everyaverage);
goto start;
break;
case 0:
printf("Thanks for your use!\n");
code=0;
exit(code);
default:
printf("input error!please intput again\n");
goto start;
}
}
int Readscore(int project[N][z],long num[],char name[][m]) /*录入成绩和姓名学号*/
{
int i=-1,j;
do{
i++;
printf("Iuput student's name(maximum 12 characters)ID and score of three(输入负值时结束):");
scanf("%ld,%s",&num[i],name);
for(j=0;j<z;j++)
{
scanf("%d",project[i]+z);
}
}while(num[i]>0&&project[i][z]>0);
return i;
}
void Average(int n,int project[][z]) /*计算每门课程的平均分*/
{
int i,u=0,sum=0,sum1=0,sum2=0;
float j,k,l;
for(u=0;u<z;u++)
{
for(i=0;i<n;i++)
{
sum1+=project[i][u];
sum2+=project[i][u];
sum+=project[i][u];
}
}
printf("数学的总分为%d\n",sum);
printf("英语的总分为%d\n",sum1);
printf("物理的总分为%d\n",sum2);
j=(float)sum/n;
k=(float)sum1/n;
l=(float)sum2/n;
printf("数学平均分为%f\n",j);
printf("英语平均分为%f\n",k);
printf("物理平均分为%f\n",l); /*打印平均分,同时打印总分*/
}
void averageofstudent(int n,int project[N][z],int everysum[],float everyaverage[],char name[][m],long num[])
{
int sum,i,u;
float j;
for(i=0;i<n;i++) /*计算每个学生的平均分和总分*/
{
for(u=0;u<z;u++)
{
sum+=project[i][u];
}
everysum[i]=sum;
j=(float)sum/3;
everyaverage[i]=j;
printf("%10d",num[i]);
puts(name[m]);
printf("%d",project[i][u]);
printf("总分为%4d",everysum[i]);
printf("平均分为%4d\n",everyaverage[i]);
}
}
void DataSort(int (*compare)(int a,int b),long num[],int n,int project[][z],int *pstr[N],int everysum[],char name[][m])
/*功能3按成绩由高到低或由低到高排出名次表*/
{
int u,i,j,k;
for(u=0;u<n;u++)
{
pstr[u]=project[u];
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if((*compare)(everysum[j],everysum[i]))
{
k=j;
}
if(k!=i)
{
Swap(num,n,project,pstr,name,everysum);
}
}
}
}
void Swap(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]) /*为避免每次函数中都单独写交换,
特地将交换写为一个函数*/
{
int j,i,k;
int temp;
long temp1;
int *temp2=NULL;
char temp3[m];
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
temp=everysum[j];
everysum[j]=everysum[i];
everysum[i]=temp;

temp1=num[j];
num[j]=num[i];
num[i]=temp;

temp2=pstr[i];
pstr[i]=pstr[j];
pstr[j]=temp2;

strcpy(temp3,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp3);
}
}
}
int Ascending(int a,int b)
{
return a<b; /*学生成绩按升序排列*/
}
int Descending(int a,int b)
{
return a>b; /*学生成绩按降序排列*/
}
void SN4(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]) /*功能4按学号由小到大排出成绩表,原理算法跟上面按成绩一样*/
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(num[j]<num[i])
{
Swap(num,n,project,pstr,name,everysum);
}
}
}
PrintfScore(project,num,n,name,everysum);
}
void PrintfScore(int project[][z],long num[],int n,char name[][m],int everysum[]) /*根据需求打印排序过后的学号,姓名,成绩,(根据功能3和4)*/
{
int i,u;
for(i=0;i<n;i++)
{
for(u=0;u<z;u++)
{
printf("%-l0ld",num[i]);
printf("%6s",name[i]);
printf("%10d",project[i][u]);
printf("%4d\n",everysum[i]);
}
}
printf("\n");
}
void SB5(long num[],int n,int (*compare)(int a,int b),int project[][z],int *pstr[],char name[][m],int everysum[]) /*根据输入的学号来输出各科成绩及排名*/
{
long a;
int i,u;
int j;
printf("请输入学号:");
scanf("%ld",&a);
for(i=0;i<n;i++)
{
u=0;
if(a==everysum[i]&&u<3)
{
DataSort(Descending,num,n,project,pstr,everysum,name);
j=i+1;
printf("%-l0d",num[i]);
printf("%6s",name[i]);
printf("%10d",project[i][u]);
printf("%4d\n",everysum);
printf("该同学排名为%d\n",j);
u++;
}
else
continue;
}
}
void Searchbyname(int (*compare)(int a,int b),long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]) /*根据输入的姓名查询学生的排名和各科考试成绩*/
{
char a[m];
int i,j,u;
printf("请输入姓名:");
scanf("%s",&a);
for(i=0;i<n;i++)
{
u=0;
if(strcmp(name[i],a)==0&&u<3)
{
DataSort(Descending,num,n,project,pstr,everysum,name);
j=i+1;
printf("%-l0d",num[i]);
printf("%6s",name[i]);
printf("%10d",project[i][u]);
printf("%4d\n",everysum);
printf("该同学排名为%d\n",j);
u++;
}
else
continue;
}
}
void dictionary(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[]) /*按照字典顺序排除成绩表*/
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(name[j],name[i])<0)
{
Swap(num,n,project,pstr,name,everysum);
}
}
}
PrintfScore(project,num,n,name,everysum);
}
void SA6(int project[][z],int n) /*功能6统计人数及类别*/
{
int i,u;
float a,b,c,d,e;
int A=0,B=0,C=0,D=0,E=0;
for(i=0;i<n;i++)
{
for(u=0;u<z;u++)
{
if(project[i][u]>89)
A++;
if(project[i][u]<90&&project[i][u]>79)
B++;
if(project[i][u]<80&&project[i][u]>69)
C++;
if(project[i][u]<70&&project[i][u]>59)
D++;
if(project[i][u]<60&&project[i][u]>=0)
E++;
a=(float)A/n*100;
b=(float)B/n*100;
c=(float)C/n*100;
d=(float)D/n*100;
e=(float)E/n*100;
printf("第%d门课程各类别的人数所占百分比为:\n",u+1);
printf("优秀的人数为%d,所占百分比为%f%%\n",A,a);
printf("良好的人数为%d,所占百分比为%f%%\n",B,b);
printf("中等的人数为%d,所占百分比为%f%%\n",C,c);
printf("及格的人数为%d,所占百分比为%f%%\n",D,d);
printf("不及格的人数为%d,所占百分比为%f%%\n",E,e);
}
}
}
void Listrecord(long num[],int n,int project[][z],int *pstr[N],char name[][m],int everysum[],float everyaverage[])
{
int i,u;
int Sum;
float l;
for(i=0;i<n;i++) /*实现最后一个功能*/
{
for(u=0;u<z;u++)
{
Sum+=project[i][u];
}
}
printf("总分为%d",Sum);
l=(float)Sum/n;
printf("平均分为%f",l);
Average(n,project);
averageofstudent(n,project,everysum,everyaverage,name,num);
}
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
灼眼的超哥 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

谢谢楼上的大牛啊,看了您写的代码,我才知道自己写的代码太粗糙了,难怪实现不了功能,多谢了~!
[/Quote]
交作业的时候又改了一下,input函数里,输入性别和三科成绩没有用到input_score和input_sex函数,不嫌麻烦的话,请修改input函数里那几段代码,再把input_score和input_sex函数的代码剪切并粘贴至input函数前面。
qq1787781214 2012-06-05
  • 打赏
  • 举报
回复
谢谢楼上的大牛啊,看了您写的代码,我才知道自己写的代码太粗糙了,难怪实现不了功能,多谢了~!
灼眼的超哥 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

贴个我写的:
C/C++ code

/************************************************
选题2:学员成绩管理系统
要求能够完成下列功能,并在主函数中给出主菜单,供用户调用和实现:
1、输入:函数input把N学生的学号、姓名、性别、年龄、3科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、3科成绩由键盘输入,然后计算出平均成绩……
[/Quote]
反正都是“XX管理系统”,大致框架是一样的,最多是修改数据结构,以及增添没有的功能,你可以参考一下。
灼眼的超哥 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

贴个我写的:
C/C++ code

/************************************************
选题2:学员成绩管理系统
要求能够完成下列功能,并在主函数中给出主菜单,供用户调用和实现:
1、输入:函数input把N学生的学号、姓名、性别、年龄、3科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、3科成绩由键盘输入,然后计算出平均成绩……
[/Quote]
这个是最近老师布置C语言期末题目。
我这其他的同学,大多是百度搜索源代码,只为完成任务;他们百度谷歌到的代码,有些质量比较差,编译时一大堆警告和错误,代码格式也不好,密密麻麻写的,一大坨。
本人对此现象表示蛋疼。
灼眼的超哥 2012-06-01
  • 打赏
  • 举报
回复
贴个我写的:

/************************************************
选题2:学员成绩管理系统
要求能够完成下列功能,并在主函数中给出主菜单,供用户调用和实现:
1、输入:函数input把N学生的学号、姓名、性别、年龄、3科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、3科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。
2、插入:insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。
3、排序:sort函数对所有学生按要求排序(1.学号2.总成绩),并输出。
4、查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多次。
5、删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。
6、输出:函数output输出全部学生的记录。
*************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef struct stuinfo student;
/****** 学生信息结构体 *******/
struct stuinfo
{
int id; /* 学号 */
int sex; /* 性别 */
int age; /* 年龄 */
char name[20]; /* 名称 */
int score[3]; /* 3科成绩 */
int total_score; /* 总成绩 */
double avg_score; /* 平均成绩 */

struct stuinfo *next; /* 下个学生的信息 */
};
/*****************************/

/* 功能:录入学生信息 */
void input(student **head)
{
int i, N;
student *s, *p;

if(*head == NULL)
{/* 如果表头为空,先为它分配内存 */
*head = (student *)malloc(sizeof(student));
p = *head;
}
else
{/* 否则,就说明有内容,直接切换到尾结点 */
p = *head;
while(p->next)
p = p->next;
}
printf("请输入要录入的学生信息个数:");
scanf("%d", &N);

for(i=0; i<N; i++, p->next = NULL)
{
/* 为这个结点分配内存 */
s = (student *)malloc(sizeof(student));
printf("[%d/%d]学号:", i+1, N);
scanf("%d", &s->id);

printf("学生姓名:");
scanf("%s", s->name);

printf("性别[1:男 2:女]:");
scanf("%d", &s->sex);

printf("年龄:");
scanf("%d", &s->age);

printf("三科成绩:");
scanf("%d%d%d", &s->score[0], &s->score[1], &s->score[2]);

/* 求总成绩 */
s->total_score = s->score[0];
s->total_score += s->score[1];
s->total_score += s->score[2];
/* 求平均成绩 */
s->avg_score = s->total_score / 3.0;


p->next = s; /* 保存这个结点 */
p = p->next; /* 切换至下个结点 */
}
printf("已经成功录入!\n");
}


/* 功能:删除指定学号的学生的信息 */
int delete(student *head)
{
char name[256];
int choice, id;
int found = 0;
student *p, *t;

if(head == NULL || head->next == NULL)
{/* 如果表头为空 */
printf("没有记录学生信息!\n");
return -1;
}
else
{/* 否则,就说明有内容 */
printf( "要删除学生的全部信息,请选择删除方式:\n"
"[1]通过学号来删除\n"
"[2]通过姓名来删除\n"
"选择:");
while(1)
{
scanf("%d", &choice);
if(choice > 0 && choice < 3)
break;
printf("选择错误,请重新选择:");
}
/* 接受用户输入的内容 */
if(choice == 1)
{
printf("请输入学生学号:");
scanf("%d", &id);
}
else if(choice == 2)
{
printf("请输入学生姓名:");
scanf("%s", name);
}

p = head;
while(p->next)
{
t = p;
p = p->next;
/* 根据用户输入的内容以及选择的方式,来查找匹配数据 */
if( choice == 1 && p->id == id
|| choice == 2 && strcmp(p->name, name) == 0)
{
found = 1;
break;
}
}

if(found == 1)
{/* 如果找到了 */
t->next = p->next;
free(p); /* 释放这个结点占用的内存 */
printf("已经删除!\n");
}
else
{/* 否则没有找到 */
printf("没有找到需删除信息的学生!\n");
return -1;
}
}

return 0;
}

/* 功能:查询学生信息 */
int find(student *head)
{
char name[256];
int choice, id;
int found = 0;
student *p, *t;

if(head == NULL || head->next == NULL)
{/* 如果表头为空 */
printf("没有记录学生信息!\n");
return -1;
}
else
{/* 否则,就说明有内容 */
printf( "要查询学生的全部信息,请选择查询方式:\n"
"[1]通过学号来查询\n"
"[2]通过姓名来查询\n"
"选择:");
while(1)
{
scanf("%d", &choice);
if(choice > 0 && choice < 3)
break;
printf("选择错误,请重新选择:");
}
/* 接受用户输入的内容 */
if(choice == 1)
{
printf("请输入学生学号:");
scanf("%d", &id);
}
else if(choice == 2)
{
printf("请输入学生姓名:");
scanf("%s", name);
}

p = head;
while(p->next)
{
t = p;
p = p->next;
/* 根据用户输入的内容以及选择的方式,来查找匹配数据 */
if( choice == 1 && p->id == id
|| choice == 2 && strcmp(p->name, name) == 0)
{
found = 1;
break;
}
}

printf("查询结果:\n");
if(found == 1)
{/* 如果找到了 */

/* 打印表头 */
printf(
"┌───┬────┬──┬──┬──────┬───┬────┐\n"
"│ %s │ %s │%s│%s│ %s │%s│%s│\n"
"├───┼────┼──┼──┼──────┼───┼────┤\n"
,"学号","姓名","性别","年龄","三科成绩","总成绩","平均成绩");

/* 打印表中间的内容 */
printf( "│%-6d│%-8s│%s│%4d│ %3d %3d %3d│%6d│%8.2lf│\n",
p->id, p->name, p->sex==1?" 男 ":" 女 ", p->age,
p->score[0], p->score[1], p->score[2],
p->total_score, p->avg_score );

/* 打印表尾 */
printf( "└───┴────┴──┴──┴──────┴───┴────┘\n");
}
else
{/* 否则没有找到 */
printf("没有找到符合要求的学生信息!\n");
return -1;
}

}
return 0;
}

/* 功能:用于输入学生性别 */
int input_sex()
{
int sex;
printf("性别[1:男 2:女]:");
scanf("%d", &sex);
while(sex != 1 && sex != 2)
{
printf("性别选择有误!请重新选择:");
scanf("%d", &sex);
}
return sex;
}

/* 功能:用于输入三科成绩 */
void input_score(int *score)
{
while(1)
{
printf("三科成绩:");
scanf("%d%d%d", &score[0], &score[1], &score[2]);
if( (score[0] >= 0 && score[0] <= 100)
&& (score[1] >= 0 && score[1] <= 100)
&& (score[2] >= 0 && score[2] <= 100))
break;

printf("成绩输入有误,请重新输入!\n");
}
}

/* 功能:对学生信息进行排序 */
int sort(student *head)
{
int choice, found = 0;
student *p, *s, *temp, *p_back, *s_back;

if(head == NULL || head->next == NULL)
{/* 如果表头为空 */
printf("没有记录学生信息!\n");
return -1;
}
else
{/* 否则,就说明有内容 */
p = head;
printf( "对学生信息进行排序,请选择排序方式:\n"
"[1]学号\n"
"[2]总成绩\n"
"选择:");
while(1)
{
scanf("%d", &choice);
if(choice > 0 && choice < 3)
break;
printf("选择错误,请重新选择:");
}

while(p->next)
{
p_back = p; /* 保存当前结点 */
p = p->next; /* 切换至下个结点 */
s = p; /* 保存这个结点 */
s_back = p_back;/* 保存上个结点 */

while(s)
{/* 将当前结点的学号/总成绩与后面结点的学号/总成绩对比 */
if( choice == 1 && s->id < p->id
|| choice == 2 && s->total_score > p->total_score)
{/* 如果当前结点的学号/总成绩比后面结点的学号/总成绩大 */
p_back->next = s; /* 将s结点与p结点的上个结点相连 */
s_back->next = p; /* 将p结点与s结点的上个结点相连 */

/* 备份p结点的下个结点 */
temp = p->next;

/* 交换p结点和s结点的下个结点 */
p->next = s->next;
s->next = temp;

p = p_back->next;/* p指针切换回当前结点 */
}

s_back = s;
s = s->next;
}
}
printf("已经排序!\n");
}
return 0;
}

/* 功能:插入学生信息 */
void insert(student *head)
{
student *p, *s, *p_back;
/* 为这个结点分配内存 */
s = (student *)malloc(sizeof(student));
printf("学号:");
scanf("%d", &s->id);

printf("学生姓名:");
scanf("%s", s->name);

/* 输入学生性别 */
s->sex = input_sex();

printf("年龄:");
scanf("%d", &s->age);

/* 输入三科成绩 */
input_score(s->score);

/* 求总成绩 */
s->total_score = s->score[0];
s->total_score += s->score[1];
s->total_score += s->score[2];

/* 求平均成绩 */
s->avg_score = s->total_score / 3.0;

p = head->next;
p_back = head; /* 保存当前结点 */
while(p)
{
if( p->id > s->id )
{/* 如果当前结点保存的学号比新增的小,就需要插入该结点前面 */
p_back->next = s; /* 将s结点与p结点的上个结点首尾相连 */
s->next = p; /* 将s结点尾首与p结点相连 */
break;
}

if(p->next == NULL)
{/* 如果到了链尾,直接插入至链尾 */
p->next = s;
p = p->next; /* 切换至下个结点 */
p->next = NULL; /* 表示这是链尾 */
break;
}
p_back = p;
p = p->next;/* 切换至下个结点 */
}
printf("已经成功插入新的学生信息!\n");
}

/* 功能:列表显示学生信息 */
int output(student *head)
{
student *p;
system("cls");/* 清屏 */
printf("\n\n\t\t欢迎进入浏览学生成绩界面!\n\n");
if(head == NULL || head->next == NULL)
{
printf("\t\t没有记录学生信息!");
return -1;
}

p = head->next;

/* 打印表头 */
printf(
"┌───┬────┬──┬──┬──────┬───┬────┐\n"
"│ %s │ %s │%s│%s│ %s │%s│%s│\n"
"├───┼────┼──┼──┼──────┼───┼────┤\n"
,"学号","姓名","性别","年龄","三科成绩","总成绩","平均成绩");


/* 打印表中间的内容 */
do
{
printf( "│%-6d│%-8s│%s│%4d│ %3d %3d %3d│%6d│%8.2lf│\n",
p->id, p->name, p->sex==1?" 男 ":" 女 ", p->age,
p->score[0], p->score[1], p->score[2],
p->total_score, p->avg_score
);
p = p->next;
}
while(p != NULL);

/* 打印表尾 */
printf( "└───┴────┴──┴──┴──────┴───┴────┘\n");

return 0;
}

int main()
{
int choice;
student *head = NULL;
while(1)
{
system("cls");/* 清空屏幕内容 */

printf(
"*********************************\n\n"
"*\t学员成绩管理系统\t*\n"
"*\t\t\t\t*\n"
"*\t1 --- 录入\t\t*\n"
"*\t2 --- 插入\t\t*\n"
"*\t3 --- 排序\t\t*\n"
"*\t4 --- 查找\t\t*\n"
"*\t5 --- 删除\t\t*\n"
"*\t6 --- 输出\t\t*\n"
"*\t0 --- 退出\t\t*\n"
"*********************************\n\n"
"请输入选项<0-6>:"
);
scanf("%d", &choice);
switch(choice)
{
case 0 : exit(0);
case 1 : input(&head); getch();break;
case 2 : insert(head); getch();break;
case 3 : sort(head); getch();break;
case 4 : find(head); getch();break;
case 5 : delete(head); getch();break;
case 6 : output(head); getch();break;
}
}
return 0;
}

qq1787781214 2012-06-01
  • 打赏
  • 举报
回复
呜呜,谢谢一楼的指点,我也是没办法啊,这是我们实验
modicum_lf 2012-05-30
  • 打赏
  • 举报
回复

这样贴源码 估计没人愿意去看
  • 打赏
  • 举报
回复
粗略看了下~~~首先感觉设计逻辑上有点问题~~首先那个函数指针吧~~typedef一下就行了,还有升序和排序的函数,用bool最好,因为你在DataSort里面用的是返回的int值为判断的,且效率而言,传const int& 最好,这是后话。还有你的goto设计,直接用个while( 11>=choice && 0<=choice )就行了,然后在while里坐case判断就行了,表用goto了
你的录入函数确实有问题,Readscore里形参project和name都是二级指针了,也就是说,在name的scanf里用错了,好好想想呗。。
guifeng123 2012-05-30
  • 打赏
  • 举报
回复
真猛呢~用C写管理系统。。。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧