用c语言设计一个学生信息管理系统,急啊.谢谢

作者&投稿:爨毛 (若有异议请与网页底部的电邮联系)
设计一个学生注册管理系统。(C语言)谢谢!~

按学号由小到大排出成绩表;(5) 按学号查询学生排名及其考试成绩;(6)#include #define ARR_SIZE 30 void sort(float score[],long

#include "stdio.h"
#include "string.h"
#include "malloc.h"
#include "stdlib.h"
#include "iostream.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
int numstus;
//int numsubs=5;
int lens;
typedef struct message_student /*结构体定义*/
{
char number[7];
char name[20];
char sex[4];
float subject[numsubs];
float sumscore;
float average;
int index;
}student;
extern int numstus; /*学生数目*/
student *pointer; /*指向结构体数组*/
int menu_select(); /*函数声明*/
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();
int menu_select()
{
char c;
printf("

");
printf(" ******************************************
");
printf(" ******************************************
");
printf(" ******************************************
");
printf(" **** 1. 增加学生记录 4. 学生纪录排序*****
");
printf(" **** 2. 查询学生记录 5.统计信息**********
");
printf(" **** 3. 修改学生记录 6.显示记录**********
");
printf(" **** 0.退出系统 7.写入文件*********
");
printf(" ******************************************
");
printf(" ******************************************
");
printf(" ******************************************
");
printf("

");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
int findrecord(student stud[]) /*查找信息*/
{
char str[6];
int i,num;
if(numstus==0) /*当输入的人数为零时,没有可以查询的记录*/
{
printf("没有可被查找的记录
");
return -1;
}
else /*人数不为零时,开始查询*/
{
printf("以何种方式查找?
1.学号2.姓名3.名次
");
gets(str);
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].number)==0) /*输入的学号和保存的相同时显示相关信息*/
{
display(stud,i,i); /*调用显示信息函数*/
break;
}
else
continue;
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].name)==0) /*输入的姓名和保存的相同时显示相关信息*/
{
display(stud,i,i); /*调用显示信息函数*/
break;
}
else
continue;
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:");
scanf("%d",&num);
getchar();
for(i=0;i<=numstus;i++)
if(num==stud[i].index) /*判断输入的名次是否有*/
{
display(stud,i,i); /*调用显示信息函数*/
break;
}
else continue;
}
else /*当人数不符合要求时*/
{
printf("没有查找所要的信息。
");
return -1;
}
return i;
}
}

void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供排序的记录!跳回到主菜单,请输入记录后再进行排序:"); return;
}
// while(1)
//{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)
");
printf("1.按照学号");
printf("2.按照姓名");
printf("3.按照名次
");
gets(str);
if(strlen(str)==0)
break;
if(str[0]=='1')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else
printf("请输入1~3");
printf("是否退出排序?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
break;
}
return ;
//}
}
void sortnum(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].number,stud[j].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].number,stud[j+1].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].name,stud[j].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].name,stud[j+1].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j+1].index>stud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[]) /*冒泡法实现*/
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j].index>stud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}

void statistic(student stud[]) /*输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录
");
else
{
while(1)
{
printf("下面将统计考试成绩
");
printf("请选择你要统计哪科的成绩 1.数据结构2.高等数学3.大学英语4.概率5.电路
");
c1=getchar();
printf("一共有个%d记录
",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[0];
if(stud[k].subject[0]>stud[i].subject[0])
k=i;
if(stud[j].subject[0]<stud[i].subject[0])
j=i;
}
average[0]=sum/numstus;
printf("数据结构的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("数据结构的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("数据结构的平均分是 %5.2f
",average[0]); /*平均分*/
break;
case '2':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[1];
if(stud[k].subject[1]>stud[i].subject[1]) k=i;
if(stud[j].subject[1]<stud[i].subject[1]) j=i;
}
average[1]=sum/numstus;
printf("高等数学的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("高等数学的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("高等数学的平均分是 %5.2f
",average[1]); /*平均分*/
break;
case '3':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[2];
if(stud[k].subject[2]>stud[i].subject[2]) k=i;
if(stud[j].subject[2]<stud[i].subject[2]) j=i;
}
average[2]=sum/numstus;
printf("高等数学的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("高等数学的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("高等数学的平均分是 %5.2f
",average[2]); /*平均分*/
break;
case '4':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[3];
if(stud[k].subject[3]>stud[i].subject[3]) k=i;
if(stud[j].subject[3]<stud[i].subject[3]) j=i;
}
average[3]=sum/numstus;
printf("概率的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("概率的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("概率的平均分是 %5.2f
",average[3]); /*平均分*/
break;
case '5':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[4];
if(stud[k].subject[4]>stud[i].subject[4]) k=i;
if(stud[j].subject[4]<stud[i].subject[4]) j=i;
}
average[4]=sum/numstus;
printf("电路的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("电路的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("电路的平均分是 %5.2f
",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数
");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}

void welcome()
{
printf("*************************************************************
");
printf("~~~~~~学生信息管理系统
欢迎使用!~~~~
");
printf("*************************************************************
");

}
void display(student stud[],int n1,int n2)
{
int i;
for(i=n1;i<=n2;i++)
printf("学号:%s姓名:%s性别:%s数据结构:%.0f高等数学:\
%.0f大学英语:%.0f概率:%.0f电路:%.0f总分:%.0f平均分:\
%.0f名次:%d
",stud[i].number,stud[i].name,stud[i].sex,\
stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],\
stud[i].subject[3],stud[i].subject[4],stud[i].sumscore,\
stud[i].average,stud[i].index);
/*通过循环输出数据*/

}
void display1()
{

getchar();
}
#include
void amendrecord(student stud[]) /*修改信息记录*/
{
char number1[6];
char name1[15];
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i<0)
{
i=findrecord(stud);
if(i>=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{

printf("下面请重新输入学生的信息:
");
printf("请输入学号:");
gets(number1);
strcpy(stud[i].number,number1);
// gets(stud[i].number);
printf("请输入姓名:");
gets(name1);
strcpy(stud[i].name,name1);
// gets(stud[i].name);
printf("请输入性别(男为:1~~女为:0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].sumscore=0;

// printf("%s,%s",stud[i].name,stud[i].number);

printf("请按顺序输入成绩:");
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i].subject[j]);
stud[i].sumscore+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].sumscore/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)
");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}

void deleterecord(student stu[],int i) /*删除信息*/
{
int j;

while(i>=0)
{
for(j=i;j<numstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!
");
}
}

void count(student stud[])
{
int i,j;
for(i=0;i<numstus;i++)
{
stud[i].index=1;
for(j=0;j<numstus;j++)
if(stud[j].sumscore>stud[i].sumscore)
stud[i].index++;
}
}
void addrecord(student stud[]) /*添加信息*/
{
int i=0,num;
char number2[7];
char name2[15];
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)
");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}

printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN); //追加内存
}
printf("请输入学生信息:
");
for(;i<numstus;i++) /*利用goto语句判断输入是否有误*/
{
getchar();
TNL: printf("请输入一个六位数的学号:");
gets(number2);
strcpy(pointer[i].number,number2);
// printf("%s",pointer[i].number);
//gets(pointer[i].number);
for(int j=0;j<i;j++)
//if(!strcmp(pointer[j].number,pointer[i].number))
for(int t=0;t<6;t++)
{if(pointer[j].number[t]==pointer[i].number[t]) /*判断学号不能相同*/
{ printf("");
if(t==5)
{ printf("你输入的学号重复,请重新输入!
");
goto TNL;
}
}
else
break;
}

if(*pointer[i].number>'9'||*(pointer[i].number)<'0'||strlen(pointer[i].number)!=6)/*判断输入的学号是不是合法其实只判断了首字母*/
{ printf("输入的序号有错,请回车之后重新输入学号0~9的数字:");
goto TNL ;//bug要回车之后才可以输入
}
printf("请输入姓名输入拼音:");
// gets(pointer[i].name);
gets(name2);
strcpy(pointer[i].name,name2);
// printf("%s",pointer[i].name);

printf("请输入性别(男为:1~~女为:0~):"); /*用1,0,作为男女的标志判断性别*/
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0')
strcpy(pointer[i].sex,"女");
else
strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按数据结构 高等数学 大学英语 概率 电路:的顺序):");
stud[i].sumscore=0;
for(int a=0;a<numsubs;a++)
{
scanf("%f",&stud[i].subject[a]); /*计算总分*/
stud[i].sumscore+=stud[i].subject[a];
}
stud[i].average=stud[i].sumscore/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}
int writetotext(student stud[]) /*将所有记录写入文件*/ ///////////////////////bug
{
int i=0;
// char filename[20];
FILE *fp;
if((fp=fopen("学生信息.xls","wt"))==NULL) //在判断的同时将fp指向了F.txt,wt是写入的命令
{
printf("文件“F.txt”不存在!");
exit(0);
}
else
for(int j=0;j<numstus;j++)
{
fprintf(fp,"学号%s 姓名%s 性别%s ",pointer[j].number,pointer[j].name,pointer[j].sex);
int i=0;
{
fprintf(fp,"数据结构%.2f 大学英语%.2f 高等数学%.2f 概率%.2f 电路%.2f ",\
pointer[j].subject[0],pointer[j].subject[1],pointer[j].subject[2],pointer[j].subject[3],pointer[j].subject[4]);
}
fprintf(fp,"平均分%.2f 总分%.2f 排名%d
",pointer[j].average,pointer[j].sumscore,pointer[j].index);


}
fclose(fp);



printf("已成功存储!
");

numstus=0;
return 0;
}


main() /*主函数*/
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i>0)
{
i=menu_select(); /*控制选择菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:display(pointer,0,numstus-1);break; /*显示记录*/
case 7:writetotext(pointer);
case 0:
if(numstus!=0)
printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;break; /*退出系统*/
writetotext(pointer);
default:printf("请输入数字0~7:
");i=1; /*输入错误*/
}
}
printf("欢迎使用学生信息管理系统,版权所有,翻录也不究

");
return 0;
}

#includenbsp;“stdio.h“#definenbsp;SIZEnbsp;50intnbsp;sum=0;staticnbsp;charnbsp;*str[]={“C“,“Math“,“English“};structnbsp;studentnbsp;nbsp;{nbsp;intnbsp;n;nbsp;nbsp;nbsp;nbsp;longnbsp;num;nbsp;nbsp;nbsp;nbsp;charnbsp;name[10];nbsp;nbsp;nbsp;nbsp;intnbsp;age;nbsp;nbsp;nbsp;nbsp;charnbsp;addr[10];nbsp;nbsp;nbsp;nbsp;intnbsp;score[3];nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];/*nbsp;1--Inputnbsp;*/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp;Input?nbsp;(nbsp;y/nnbsp;)nbsp;:nbsp;777“);nbsp;nbsp;f=getchar();f=getchar();nbsp;nbsp;if(f!=‘y‘)nbsp;nbsp;nbsp;nbsp;return;nbsp;nbsp;fp=fopen(“fstu“,“wb“);nbsp;nbsp;for(i=0;iamp;lt;SIZE;i++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;i=%dnbsp;Inputnbsp;No.nbsp;(i=-1,return)nbsp;i=?nbsp;“,i+1);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ifnbsp;(j==-1)nbsp;{nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Pressnbsp;anynbsp;keynbsp;return!nbsp;*nbsp;*nbsp;*
“,j);nbsp;nbsp;nbsp;fclose(fp);getch();return;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;elsenbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;num,name,age,addrnbsp;:nbsp;“);nbsp;nbsp;nbsp;stu[i].n=i+1;nbsp;nbsp;nbsp;scanf(“%ld%s%d%s“,amp;stu[i].num,stu[i].name,amp;stu[i].age,stu[i].addr);nbsp;nbsp;nbsp;s=0;nbsp;nbsp;nbsp;for(j=0;jamp;lt;3;j++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;%-7snbsp;scorenbsp;:nbsp;“,str[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;stu[i].score[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(stu[i].score[j]amp;gt;100)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;j--;continue;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;s+=stu[i].score[j];nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;stu[i].avr=s/3.0;nbsp;nbsp;nbsp;fwrite(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;}nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;fclose(fp);}/*nbsp;2--Findnbsp;*/voidnbsp;ffind(){nbsp;intnbsp;i,j;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;fp=fopen(“fstu“,“rb“);nbsp;nbsp;for(i=0;fread(amp;stu[i],sizeof(structnbsp;student),1,fp)!=0;i++);nbsp;nbsp;sum=i;nbsp;nbsp;rewind(fp);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;Findnbsp;studentnbsp;datanbsp;*nbsp;*nbsp;*
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;n=1nbsp;--nbsp;%dnbsp;:nbsp;“,sum);nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;fseek(fp,(j-1)*sizeof(structnbsp;student),0);nbsp;nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Displaynbsp;studentnbsp;%dnbsp;datanbsp;:nbsp;
“,j);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*nbsp;*
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;No.nbsp;Numnbsp;nbsp;nbsp;nbsp;Namenbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Agenbsp;Addrnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Cnbsp;nbsp;Mathnbsp;En.nbsp;Aver.
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;-----------------------------------------------------
“);nbsp;nbsp;fread(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;nbsp;printf(“%12d%7

你东华的吧

#include "stdio.h"
#define SIZE 50
int sum=0;
static char *str[]={"C","Math","English"};
struct student
{ int n;
long num;
char name[10];
int age;
char addr[10];
int score[3];
float avr;
} stu[SIZE];
/* 1--Input */
void fin()
{ int i,j,s;char f;
FILE *fp;
printf(" Warring! Input? ( y/n ) : \7\7\7");
f=getchar();f=getchar();
if(f!='y')
return;
fp=fopen("fstu","wb");
for(i=0;i<SIZE;i++)
{ printf(" i=%d Input No. (i=-1,return) i=? ",i+1);
scanf("%d",&j);
if (j==-1)
{ printf("\n * * * Press any key return! * * *\n",j);
fclose(fp);getch();return;
}
else
{ printf(" Input num,name,age,addr : ");
stu[i].n=i+1;
scanf("%ld%s%d%s",&stu[i].num,stu[i].name,&stu[i].age,stu[i].addr);
s=0;
for(j=0;j<3;j++)
{ printf(" Input %-7s score : ",str[j]);
scanf("%d",&stu[i].score[j]);
if(stu[i].score[j]>100)
{ j--;continue;}
s+=stu[i].score[j];
}
stu[i].avr=s/3.0;
fwrite(&stu[i],sizeof(struct student),1,fp);
}
}
fclose(fp);
}
/* 2--Find */
void ffind()
{ int i,j;
FILE *fp;
fp=fopen("fstu","rb");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++);
sum=i;
rewind(fp);
printf(" * * * Find student data * * *\n");
printf(" Input n=1 -- %d : ",sum);
scanf("%d",&j);
fseek(fp,(j-1)*sizeof(struct student),0);
printf("\n Display student %d data : \n",j);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
fread(&stu[i],sizeof(struct student),1,fp);
printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
fclose(fp);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
printf("\n\n");getch();
}
/* 3--Change */
void fchan()
{ int i,j,s,m;char ch;
FILE *fp;
for(;;)
{
fp=fopen("fstu","rb+");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++);
sum=i;
printf(" * * * Change student data * * *\n");
printf(" Input n=1 -- %d : ",sum);
scanf("%d",&j);
m=j-1;
fseek(fp,m*sizeof(struct student),0);
printf("\n Display student %d data : \n",j);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
fread(&stu[i],sizeof(struct student),1,fp);
printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
fclose(fp);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
fclose(fp);printf("\n\n");getch();
fp=fopen("fstu","rb+");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++);
sum=i;
printf(" * * * Change student %d data * * *\n",j);
fseek(fp,m*sizeof(struct student),0);
printf(" i=%d Input No. (i=-1,return) i=? ",j);
scanf("%d",&j);
if (j==-1)
{ printf("\n * * * Press any key return! * * *\n",j);
fclose(fp);getch();return;
}
else
{ printf(" Input num,name,age,addr : ");
stu[i].n=j;
scanf("%ld%s%d%s",&stu[i].num,stu[i].name,&stu[i].age,stu[i].addr);
s=0;
for(j=0;j<3;j++)
{ printf(" Input %-7s score : ",str[j]);
scanf("%d",&stu[i].score[j]);
if(stu[i].score[j]>100)
{ j--;continue;}
s+=stu[i].score[j];
}
}
stu[i].avr=s/3.0;
rewind(fp);
fseek(fp,m*sizeof(struct student),0);
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
printf("\n * * * Continue ( y/n ) ? * * *\n",j);
ch=getchar();
if(ch!='y')
return;
}
}
/* 4--Append */
void fappe()
{ int i,j,s;
FILE *fp;
fp=fopen("fstu","ab+");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++);
sum=i;
rewind(fp);
printf(" List student datas : \n\n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
getch();
sum=i;
for(i=sum;i<SIZE;i++)
{ printf(" i=%d Input No. (i=-1,return) i=? ",i+1);
scanf("%d",&j);
if (j==-1)
{ printf("\n * * * Press any key return! * * *\n",j);
fclose(fp);getch();return;
}
else
{ printf(" Input num,name,age,addr : ");
stu[i].n=i+1;
scanf("%ld%s%d%s",&stu[i].num,stu[i].name,&stu[i].age,stu[i].addr);
s=0;
for(j=0;j<3;j++)
{ printf(" Input %-7s score : ",str[j]);
scanf("%d",&stu[i].score[j]);
if(stu[i].score[j]>100)
{ j--;continue;}
s+=stu[i].score[j];
}
stu[i].avr=s/3.0;
fwrite(&stu[i],sizeof(struct student),1,fp);
}
}
fclose(fp);
}
/* 5--List */
void flist()
{ int i;
FILE *fp;
fp=fopen("fstu","rb");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++);
sum=i;
rewind(fp);
printf(" List student datas : \n\n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
fclose(fp);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
getch();
}
/* 6--Sort */
void fsort()
{ int i,j,n;
FILE *fp;
struct student t;
fp=fopen("fstu","rb");
printf(" List fstu file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
getch();
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].avr<stu[j].avr)
{ t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
fp=fopen("fstus","wb");
printf(" List sort fstus file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;i<n;i++)
{ fwrite(&stu[i],sizeof(struct student),1,fp);
printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
printf("\n");getch();
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
/* 7--Copy */
void fcopy()
{ int i;
FILE *fp1,*fp2;
fp1=fopen("fstu","rb");
fp2=fopen("fstub","wb");
printf(" List fstu file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp1)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
fwrite(&stu[i],sizeof(struct student),1,fp2);
}
fclose(fp2);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
printf("\n");getch();
for(i=0;fread(&stu[i],sizeof(struct student),1,fp1)!=0;i++)
fwrite(&stu[i],sizeof(struct student),1,fp2);
fclose(fp1);
fclose(fp2);
fp2=fopen("fstub","rb");
printf(" List backup fstub file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp2)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
fclose(fp2);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
getch();printf("\n");
}
/* 8--Restore */
void frest()
{ int i;
FILE *fp1,*fp2;
fp1=fopen("fstub","rb");
fp2=fopen("fstu","wb");
printf(" List backup fstub file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp1)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
fwrite(&stu[i],sizeof(struct student),1,fp2);
}
fclose(fp1);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
printf("\n");getch();
for(i=0;fread(&stu[i],sizeof(struct student),1,fp1)!=0;i++)
fwrite(&stu[i],sizeof(struct student),1,fp2);
fclose(fp1);
fclose(fp2);
fp2=fopen("fstu","rb");
printf(" List fstu file data : \n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" No. Num Name Age Addr C Math En. Aver.\n");
printf(" -----------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp2)!=0;i++)
{ printf("%12d%7ld %-10s%2d %-10s",stu[i].n,stu[i].num,stu[i].name,stu[i].age,stu[i].addr);
printf("%3d %3d %3d %6.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avr);
}
fclose(fp2);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");
getch();printf("\n");
}
main()
{ int n;
for(;;)
{ printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf(" * * * * * * * * * * * * * * * * * *\n");
printf(" * Student M I S *\n");
printf(" * * * * * * * * * * * * * * * * * *\n");
printf(" * 1. Input student data *\n");
printf(" * 2. Find student data *\n");
printf(" * 3. Change student data *\n");
printf(" * 4. Append student data *\n");
printf(" * 5. List student data *\n");
printf(" * 6. Sort student file *\n");
printf(" * 7. Copy backup file *\n");
printf(" * 8. Restore backup file *\n");
printf(" * * * * * * * * * * * * * * * * * *\n");
printf(" * 0. Exit system *\n");
printf(" * * * * * * * * * * * * * * * * * *\n\n");
printf(" Please Enter ( 0 -- 8 ) : ");
scanf("%d",&n);
printf("\n\n\n\n\n");
switch(n)
{ case 1 : fin();break;
case 2 : ffind();break;
case 3 : fchan();break;
case 4 : fappe();break;
case 5 : flist();break;
case 6 : fsort();break;
case 7 : fcopy();break;
case 8 : frest();break;
case 0 : printf(" * * * * * * * * * * * * * * * * * *\n");
printf(" * *\n");
printf(" * Finish ! *\n");
printf(" * *\n");
printf(" * * * * * * * * * * * * * * * * * *\n");
printf(" * *\n");
printf(" * Good Bye ! *\n");
printf(" * *\n");
printf(" * * * * * * * * * * * * * * * * * *\n\n");
getch();exit();
default: printf(" * * * Error ! Press any key continue. * * *\n");
getch();break;
}
}
}

在给我补充点分 哈哈 我毕业设计也是做的这个 我找找


C语言编一个小学生算术题程序,求大神!!
scanf("%c",&sl);srand((unsigned)time(NULL));switch(sl) { case 'a' :case 'A' :for(i = 0; i < n; ++i) { do { a = rand()%100;b = rand()%100;}while(a + b >= 100);do { printf("%d+%d=",a,b);scanf("%d",&an);}while(an != a + b);} break;...

c语言实现设计一个学生成绩管理系统课程
我快不行了QAQ求大神助攻QAQC语言实现为某学校日常学生成绩管理设计一个学生成绩管理系统:1、设计学生成绩管理文件结构,编程实现学生成绩信息输入。2、实现按学号进行学生成绩的修改... 我快不行了QAQ求大神助攻QAQC语言实现为某学校日常学生成绩管理设计一个学生成绩管理系统:1、设计学生成绩管理文件结构,编程实现学生...

c语言中怎么建立一个学生的结构体,包括名字学号性别?
struct student { char name[10];char sex[10];int old;}s[100];main(){ int n,k=5;char name[10];for(i=0;i<k;i++){ printf("请输入姓名:");scanf("%s",s[i].name);printf("请输入性别:");scanf("%s",s[i].sex);printf("请输入年龄:");scanf("%s",s[i].old);...

用c语言设计一个学生成绩管理系统 该系统要实现的功能为:成绩录入...
我只有差不多的 你可以自己改一改\/ Filename: student_system.c Description:Version: 1.0 Created: 2016年03月30日 17时27分11秒 Revision: none Compiler: gcc Author: YOUR NAME (),Company:\/ include <stdio.h> include <stdlib.h> typedef struct stu { int num;char name[...

c++设计一个学生类Cstudent,该类包括学生学号、姓名以及数学、英语、c...
main(){p = stu;input(p);print(p);system("pause");}void input(struct student *p){int i = 0, j;for(p = stu; p < stu + 2; p++, i++){printf("请输入第%d个人的学号:", i + 1);scanf("%d",&p->num);printf("请输入第%d个人的姓名:", i + 1);scanf("%s"...

用C语言编写程序,完成以下功能: (1) 有5个学生,每个学生的数据包括学号...
void max(STU *stu, int num, STU *stuRev, int *stuRevNum) \/\/stu为学生数组的首地址,num为数组长度 \/\/stuRev表示要接收的数组,stuRevNum表示最终接收的个数,即最高成绩同学的个数(有可能不止一个同学){ STU temp[5] ;float maxtotal = 0 ;int i ,temp_index=0 ;for(i=0; i...

编写一个c语言程序,实现录入学生学号和姓名信息的功能
1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。2、然后编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。3、然后在源文件中创建main源文件和Stu源文件。再main文件中写入int mian()代码。4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。5、然后在...

求用C语言编写一个简单的学生信息管理程序和课程设计报告
求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。... 求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。要求:建立一个4个学生的信息登记表,每个学生的信息包括:...

用C语言编一个简易学生成绩管理系统,只要求能输入学生姓名学号和3科...
\/*代码已经做到简洁扼要,按照你的要求,只有简单的几个功能*\/ \/*已经测试过,正常执行。希望能帮助你*\/ include <stdio.h> include <string.h> include <stdlib.h> define NAME_LEN 10 define ID_LEN 11 define REC 5 \/*记录条数*\/ \/* 学生结构体*\/ typedef struct student { char id[ID...

编写一个c语言程序,实现录入学生学号和姓名信息的功能
以下是改写后的C语言程序,实现录入学生学号和姓名信息的功能:编写C语言程序,录入学生学号和姓名信息以下代码展示了如何创建一个简单的C程序,用于输入学生的基本信息,包括学号和姓名:include#includeintmain(void){charname[10];\/\/存储姓名intnumber;\/\/存储学号printf("请输入姓名:\\n");fgets(name,...

隆德县13199578980: 用C语言编写一个学生信息管理系统
柯陆杞药: #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" jiemian();struct student { char name[50]; char sex[5]; int age; char num[50]; float score1; float score2; float score3; float sum; float ave;}stu[50],del; void gn1() {int...

隆德县13199578980: c语言程序设计:学生信息管理系统设
柯陆杞药: 1.录入2.显示3.排序4.查询5.修改6.删除7.退出 学号","姓名","成绩一","成绩二","平均成绩

隆德县13199578980: 用C语言编写一个学生管理系统
柯陆杞药: #include<stdio.h> #include <stdlib.h> #include<process.h> // exit() #define MAX 3 typedef struct stu { int num;char name[4];float sroce[3];float sum;float ave; }student; typedef struct stuList {student data; }StuList; void Cretestu(StuList stu[])//建立 ...

隆德县13199578980: C语言编写一个学生信息管理系统,求原代码谢谢
柯陆杞药: #include <iostream> #include "conio.h" #include "malloc.h" #include "windows.h" using namespace std; typedef struct { char name[20]; int stunum; int score; }StuElem;class StuList { private: StuElem *StuElem1; int Length; int MaxContine; ...

隆德县13199578980: 如何用C语言编写学生信息管理系统 -
柯陆杞药: 参考如下学生信息管理系统的C源代码吧.#include <stdio.h>#include <string.h>/*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; };/*声明学生数组及学生数量*/ struct Student ...

隆德县13199578980: C语言 学生信息管理系统设计 -
柯陆杞药: 呵呵~~ 我也找了很久哦~~ 第一种: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> struct student{ int id; char name[10]; int age; char sex[10]; char birthady[20]; int tel; char nativeplace[50]; }st[50]; int i=0; void shuru() { ...

隆德县13199578980: 用c语言做一个学生管理系统 -
柯陆杞药: struct stu {char a[10]; int i; int j; int k; int m; int n; int x; }; int sum(struct stu p) {int sum=p.i+p.j+p.k+p.m+p.n; return sum;} main() {struct stu p[6],ac; int l,a[6],b; for(l=0;l{scanf("%s%d%d%d%d%d",p[l].a,&p[l].i,&p[l].j,&p[l].k,&p[l].m,&p[l].n); p[l].x=sum(p[l])...

隆德县13199578980: c语言学生学籍管理系统 -
柯陆杞药: #include <iostream> #include <fstream> #include <string> #include <conio.h>//用getch(); using namespace std; /*程序中一般用i表示学生序号,j表示科目序号 *其他循环变量用k,m,n表示 *最多统计10科50人的成绩信息 *temname用于临时储存姓...

隆德县13199578980: c语言课设学生信息管理系统 -
柯陆杞药: 我没测试程序的各个功能,只是在 Visual Studio 6.0 能运行了~~~,共三个文件如下:student.hdegree.cppmain.cpp

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网