本文目录一览:
- 1、c语言学生管理系统源代码
- 2、c语言解释一下什么意思
- 3、C语言 通讯录源代码 无链表 无指针
- 4、用C语言编写宿舍管理查询系统
- 5、学生成绩管理系统 C语言
- 6、c语言程序学生成绩管理系统源代码
c语言学生管理系统源代码
头文件:::
#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;
extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;
int menu_select(); /*函数声明*/
int openfile(student stu[]);
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();
#endif
#include "head.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
#include "head.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
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;
}
if(inumstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
#include"head.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",numstus);
fgetc(fp);
while(inumstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;jnumsubs;j++)
fscanf(fp,"%f",stu[i].subject[j]);
fscanf(fp,"%f",stu[i].score);
fscanf(fp,"%f",stu[i].average);
fscanf(fp,"%d",stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "head.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j+1].indexstud[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;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j].indexstud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;inumstus;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("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;inumstus;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("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;inumstus;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("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;inumstus;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("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;inumstus;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("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}
#include"head.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(inumstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;jnumsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}
#include"head.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");
}
void showtable()
{
printf("---------------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");
}
void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",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].score,stud[i].average,stud[i].index);
/*通过循环输出数据*/
}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n");
printf("\t\t制作人员列表: (按比划)\n");
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");
printf("\n\n");
getchar();
}
#include"head.h"
#includestring.h
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i0)
{
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("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\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;jnumstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");
}
}
void count(student stud[])
{
int i,j;
for(i=0;inumstus;i++)
{
stud[i].index=1;
for(j=0;jnumstus;j++)
if(stud[j].scorestud[i].score)
stud[i].index++;
}
}
#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\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(numstuslens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;inumstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}#include "head.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i0)
{
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:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}
自己一改就能用,给我加分哈!
打字不易,如满意,望采纳。
c语言解释一下什么意思
这是一个基本的switch case函数 函数执行的操作是巡检对象A 满足条件就执行操作B 然后跳出 比如 switch 人 case 美女 就执行 多看几眼 然后继续做别的 case 讨厌的人 就执行 翻白眼 然后再继续干别的
for ; ; 一般在对象是数组的时候每个分号都要写入参数 如果不加参数 就这么写的话 就是巡检这个数组
C语言 通讯录源代码 无链表 无指针
#includestdio.h /*引用库函数*/
#includestdlib.h
#includectype.h
#includestring.htypedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
char sushe[20];/*宿舍*/
char tel[20];/*电话*/
char qq[20];/*QQ号码*/
char email[20];/*电子邮箱*/
}Student;
Student stu[80]; /*结构体数组变量*/ int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t |☆☆☆☆☆☆通讯录信息管理系统☆☆☆☆☆\n"); /*菜单选择*/
printf("\t\t |****************************************|\n");
printf("\t\t |******** 1. 输入学生信息 ***************|\n");
printf("\t\t |******** 2. 查看完整信息 ***************|\n");
printf("\t\t |******** 3. 按学号进行排列 *************|\n");
printf("\t\t |******** 4. 修改通讯录信息 *************|\n");
printf("\t\t |******** 5. 删除通讯录信息 *************|\n");
printf("\t\t |******** 6. 按姓名检索信息 *************|\n");
printf("\t\t |******** 7. 读取文件 *******************|\n");
printf("\t\t |******** 8. 保存文件 *******************|\n");
printf("\t\t |******** 0. 退出系统 *******************|\n");
printf("\t\t |****************************************|\n");
printf("\t\t |***制作人:QIANG *****|\n");
printf("\t\t |****************************************|\n");
printf("\t\t (*^__^*) 您好,请选择(*^__^*)→→→(0-8):");
c=getchar(); /*读入选择*/
}while(c'0'||c'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{
int i=0,p=0;
char sign,f,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'sign!='N') /*判断*/
{
printf("\t\t\t请输入学号:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
for(p=0;p=n;p++)
{
if(strcmp(stud[p].num,stud[n+i].num)==0)
{
printf("\t\t\t学号已经存在!\n");
system("pause");
return(n);
}
}
printf("\t\t\t请输入姓名:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\t请输入住址:");
scanf("\t\t\t%s",stud[n+i].sushe);
printf("\t\t\t请输入电话号码:");
scanf("\t\t\t%s",stud[n+i].tel);
printf("\t\t\t请输入QQ:");
scanf("\t\t\t%s",stud[n+i].qq);
printf("\t\t\t请输入电子邮箱:");
scanf("\t\t\t%s",stud[n+i].email);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",sign); /*输入判断*/
i++;
}
return(n+i);
} void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("--------------------------------------------------------------------------------\n"); /*格式头*/
printf("学号 名字 住址 电话号码 QQ号码 电子邮箱\n");
printf("--------------------------------------------------------------------------------\n");
for(i=1;in+1;i++) /*循环输入*/
{
printf("%-16s%-15s%-15s%-15s%-15s%-15s\n",stud[i-1].num,stud[i-1].name,stud[i-1].sushe,stud[i-1].tel,stud[i-1].qq,stud[i-
1].email);
if(i1i%10==0) /*每十个暂停*/
{printf("--------------------------------------------------------------------------------\n"); /*格式*/ br printf("\t\t\t"); br system("pause"); br printf("--------------------------------------------------------------------------------\n"); br }
}
printf("\t\t\t");
system("pause");
} void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j;
char t[10];
for(i=0;in-1;i++) /*冒泡法排序*/
for(j=0;jn-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].sushe);
strcpy(stud[j+1].sushe,stud[j].sushe);
strcpy(stud[j].sushe,t);
strcpy(t,stud[j+1].tel);
strcpy(stud[j+1].tel,stud[j].tel);
strcpy(stud[j].tel,t);
strcpy(t,stud[j+1].qq);
strcpy(stud[j+1].qq,stud[j].qq);
strcpy(stud[j].qq,t);
strcpy(t,stud[j+1].email);
strcpy(stud[j+1].email,stud[j].email);
strcpy(stud[j].email,t);
}
} void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{
char s[20];
int i=0;
printf("\t\t\t请输入要查找的人的名字:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t对不起,查无此人!\n"); /*输入失败信息*/
return;
}
printf("\t\t\t学号:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\t住址:%s\n",stud[i].sushe);
printf("\t\t\t电话号码:%s\n",stud[i].tel);
printf("\t\t\tQQ号码:%s\n",stud[i].qq);
printf("\t\t\t电子邮箱:%s\n",stud[i].email);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{
char s[20];
int i=0,j;
printf("\t\t\t请输入要删除的人的名字:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t对不起,查无此人!\n"); /*返回失败信息*/
return(n);
}
for(j=i;jn-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].sushe,stud[j+1].sushe);
strcpy(stud[j].tel,stud[j+1].tel);
strcpy(stud[j].qq,stud[j+1].qq);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].email,stud[j+1].email);
}
printf("\t\t\t删除成功!\n"); /*返回成功信息*/
return(n-1);
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{
int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\t请您输入要读取的文件名:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{
printf("\t\t\t打开文件失败!\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",num); /*读入总记录量*/
while(inum) /*循环读入数据*/
{
fscanf(fp,"%s%s%s%s%s%s",stud[n+i].num,stud[n+i].name,stud[n+i].sushe,stud[n+i].tel,stud[n+i].qq,stud[n+i].email);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\t读取成功!\n");
printf("\t\t\t");
system("pause");
return(n);
} void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\t保存文件\n"); /*输入文件名*/
printf("\t\t\t请您为文件取个名字:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\t成功!\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(in)
{
fprintf(fp,"%s %s %s %s %s %s \n",stud[i].num,stud[i].name,stud[i].sushe,stud[i].tel,stud[i].qq,stud[i].email);
i++;
}
fclose(fp); /*关闭文件*/
printf("成功!\n"); /*返回成功信息*/
} int Modify_a_record(Student stud[],int n) /*按姓名查找,修改一条记录*/
{
char s[20];
char newname[20];
char newnum[20];
char newsushe[20];
char newtel[20];
char newqq[20];
char newemail[20];
int i=0;
printf("\t\t\t输入要修改人的名字:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t找不到这个信息!\n"); /*返回失败信息*/
return(n+1);
}
printf("请输入新姓名:");
scanf("%s",newname);
strncpy(stud[i].name,newname,sizeof(stud[i].name));
stud[i].name[sizeof(stud[i].name)-1]='\0'; printf("请输入新学号:");
scanf("%s",newnum);
strncpy(stud[i].num,newnum,sizeof(stud[i].num));
stud[i].num[sizeof(stud[i].num)-1]='\0'; printf("请输入新地址:");
scanf("%s",newsushe);
strncpy(stud[i].sushe,newsushe,sizeof(stud[i].sushe));
stud[i].sushe[sizeof(stud[i].sushe)-1]='\0'; printf("请输入新电话号码:");
scanf("%s",newtel);
strncpy(stud[i].tel,newtel,sizeof(stud[i].tel));
stud[i].tel[sizeof(stud[i].tel)-1]='\0'; printf("请输入新qq号码:");
scanf("%s",newname);
strncpy(stud[i].qq,newqq,sizeof(stud[i].qq));
stud[i].qq[sizeof(stud[i].qq)-1]='\0'; printf("请输入新电子邮箱:");
scanf("%s",newemail);
strncpy(stud[i].email,newemail,sizeof(stud[i].email));
stud[i].email[sizeof(stud[i].email)-1]='\0'; printf("\t\t\t修改信息成功咯\n"); /*返回成功信息*/
return (n);
}
void main() /*主函数*/
{
int n=0;
system("color 1A"); //调用dos改背景与前景色
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入信息\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\t显示信息\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\t按学号排序\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\t排列成功咯!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\t修改学生信息\n");
n=Modify_a_record(stu,n); /*按姓名查找,修改一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\t删除学生信息\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\t查找一个信息\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\t打开保存过的文件\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 8:
printf("\t\t\t保存数据到文件\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\t感谢使用,祝你好运哦!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
用C语言编写宿舍管理查询系统
以前给别人写的,完全原创,已经在VC上编译运行通过:
#include conio.h
#includestdio.h
#includestdlib.h
#includectype.h
#includestring.h
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int roomID; /*房号*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t************宿舍管理查询系统************\n"); /*菜单选择*/
printf("\t\t | 1. 输入信息 |\n");
printf("\t\t | 2. 显示所有信息 |\n");
printf("\t\t | 3. 排序 |\n");
printf("\t\t | 4. 查询信息 |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t****************************************\n");
printf("\t\t\t请输入处理种类(0-4):");
c=getchar(); /*读入选择*/
}while(c'0'||c'4');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'sign!='N') /*判断*/
{
printf("\t\t\t学号:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\t姓名:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\t房号:");
scanf("\t\t\t%d",stud[n+i].roomID);
gets(x); /*清除多余的输入*/
printf("\t\t\t还需要继续输入吗?(Y/N)");
scanf("\t\t\t%c",sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\t学号\t\t姓名\t\t房号\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;in+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].roomID);
if(i1i%10==0) /*每十个暂停*/
{
printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;in-1;i++) /*冒泡法排序*/
for(j=0;jn-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=stud[j+1].roomID;
q=stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}
void Sort_by_name(Student stud[],int n) /*按姓名排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;in-1;i++) /*冒泡法排序*/
for(j=0;jn-1-i;j++)
if(strcmp(stud[j].name,stud[j+1].name)0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=stud[j+1].roomID;
q=stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}
void Sort_by_room(Student stud[],int n) /*按房号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;in-1;i++) /*冒泡法排序*/
for(j=0;jn-1-i;j++)
if(stud[j].roomIDstud[j+1].roomID)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=stud[j+1].roomID;
q=stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}
void Query_a_record_by_name(Student stud[],int n) /*查找并显示一个记录*/
{
char s[20];
int i=0;
printf("\t\t\t请输入姓名:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}
void Query_a_record_by_num(Student stud[],int n) /*查找并显示一个记录*/
{
char s[20];
int i=0;
printf("\t\t\t请输入学号:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].num,s)!=0in) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}
void Query_a_record_by_room(Student stud[],int n) /*查找并显示一个记录*/
{
int s;;
int i=0;
printf("\t\t\t请输入房号:"); /*交互式输入*/
scanf("\t\t\t%d",s);
while(stud[i].roomID==s) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
if((fp=fopen("stu.txt","w"))==NULL) /*打开文件*/
{
printf("\t\t\t文件打开失败!!\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(in)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].roomID);
i++;
}
fclose(fp); /*关闭文件*/
printf("文件保存完毕!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0,i;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入相关情报\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\宿舍状况一览\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t");
scanf("%d",i);
while(i)
{
if(i1||i3)
{
printf("错误输入!!\n");
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t");
continue;
}
switch(i)
{
case 1:
Sort_by_name(stu,n);
break;
case 2:
Sort_by_num(stu,n);
break;
case 3:
Sort_by_room(stu,n);
break;
}
break;
}
printf("\t\t\t排序完毕!\n");
printf("\t\t\t");
WritetoText(stu,n);
system("pause");
break;
case 4:
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t");
scanf("%d",i);
while(i)
{
if(i1||i3)
{
printf("错误输入!!\n");
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t");
continue;
}
switch(i)
{
case 1:
Query_a_record_by_name(stu,n);
break;
case 2:
Query_a_record_by_num(stu,n);
break;
case 3:
Query_a_record_by_room(stu,n);
break;
}
break;
}
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\t欢迎使用!!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
学生成绩管理系统 C语言
头文件::: #ifndef H_STUDENT_HH #define H_STUDENT_HH #include "stdio.h" #include "string.h" #include "malloc.h" #define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/ typedef struct message_student /*结构体定义*/ { char number[6]; char name[20]; char sex[4]; float subject[numsubs]; float score; float average; int index; }student; extern int numstus; /*学生数目*/ extern student *pointer; /*指向结构体数组*/ extern int lens; int menu_select(); /*函数声明*/ int openfile(student stu[]); 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(); #endif #include "head.h" int menu_select() { char c; printf("\n\n"); printf(" | 1. 增加学生记录 5.统计信息 |\n"); printf(" | 2. 查询学生记录 6.打开文件 |\n"); printf(" | 3. 修改学生记录 7.保存文件 |\n"); printf(" | 4. 学生纪录排序 8.显示记录 |\n"); printf(" | 0.退出系统 |\n"); printf("\n\n"); printf("请选择(0-8):"); c=getchar(); getchar(); return (c-'0'); } #include "head.h" int findrecord(student stud[]) /*查找信息*/ { char str[2]; int i,num; if(numstus==0) { printf("没有可被查找的记录\n"); return -1; } else { printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n"); 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; } if(inumstus) { printf("没有查找所要的信息。\n"); return -1; } return i; } } #include"head.h" int openfile(student stu[]) { int i=0,j; FILE *fp; char filename[20],str[2]; if(numstus!=0) { printf("已经有记录存在,是否保存?(y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') writetotext(stu); } printf("请输入文件名:"); gets(filename); numstus=0; if((fp=fopen(filename,"rb+"))==NULL) { printf("无法打开该文件\n"); return(-1); } fscanf(fp,"%d",numstus); fgetc(fp); while(inumstus) { fscanf(fp,"%s",stu[i].number); fscanf(fp,"%s",stu[i].name); fscanf(fp,"%s",stu[i].sex); for(j=0;jnumsubs;j++) fscanf(fp,"%f",stu[i].subject[j]); fscanf(fp,"%f",stu[i].score); fscanf(fp,"%f",stu[i].average); fscanf(fp,"%d",stu[i].index); i++; } fclose(fp); printf("文件读取成功\n"); printf("是否显示纪录?(y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') display(stu,0,numstus-1); return(0); } #include "head.h" void sort(student stud[]) { int i,j=0; char str[5]; student *p; p=stud; if(numstus==0) { printf("没有可供查询的记录!"); } while(1) { for(i=0;;i++) { printf(" 请输入查询方式:"); printf("(直接输入回车则结束查询操作)\n"); printf("1.按照学号\t"); printf("2.按照姓名\t"); printf("3.按照名次\n"); gets(str); if(strlen(str)==0) break; if(str[0]=='1') { printf("请输入排序次序:\n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortnum2(p); else sortnum(p); display(stud,0,numstus-1); } else if(str[0]=='2') { printf("请输入排序次序:\n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortname2(p); else sortname(p); display(stud,0,numstus-1); } else if(str[0]=='3') { printf("请输入排序次序:\n"); printf("1.升序排列\t"); printf("2.降序排列\n"); 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;inumstus;i++) for(j=0;jnumstus-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;inumstus;i++) for(j=0;jnumstus-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;inumstus;i++) for(j=0;jnumstus-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;inumstus;i++) for(j=0;jnumstus-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;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(stud[j+1].indexstud[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;inumstus;i++) for(j=0;jnumstus-i-1;j++) { if(stud[j].indexstud[j+1].index) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } #include"head.h" void statistic(student stud[]) /*新增功能,输出统计信息*/ { int i,j=0,k=0; char c1,str[2]; float average[numsubs],sum=0; if(numstus==0) printf("没有可被查找的记录\n"); else { while(1) { printf("下面将统计考试成绩\n"); printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n"); c1=getchar(); printf("\t一共有个%d记录\n",numstus); /*总共记录数*/ switch(c1) { case '1': for(i=0;inumstus;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("\t科目A的最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]); printf("\t科目A的最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]); printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/ break; case '2': for(i=0;inumstus;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("\t科目B的最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]); printf("\t科目B的最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]); printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/ break; case '3': for(i=0;inumstus;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("\t科目C的最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]); printf("\t科目C的最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]); printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/ break; case '4': for(i=0;inumstus;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("\t科目D的最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]); printf("\t科目D的最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]); printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/ break; case '5': for(i=0;inumstus;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("\t科目E的最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]); printf("\t科目E的最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]); printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/ break; default:printf("输入错误!请输入1~5之间的数\n"); } sum=0; getchar(); printf("是否继续进行统计?(y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') ; else break; } } } #include"head.h" int writetotext(student stud[]) /*将所有记录写入文件*/ { int i=0,j; FILE *fp; char filename[20]; printf("输入文件名称:"); gets(filename); fp=fopen(filename,"w"); fprintf(fp,"%d\n",numstus); while(inumstus) { fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex); for(j=0;jnumsubs;j++) fprintf(fp,"%f ",stud[i].subject[j]); fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index); i++; } fclose(fp); printf("已成功存储!\n"); display(stud,0,numstus-1); numstus=0; return 0; } #include"head.h" void welcome() { printf("\t*************************************************************\n"); printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n"); printf("\t*************************************************************\n"); } void showtable() { printf("---------------------------------------------------------------------------------------\n"); printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n"); printf("---------------------------------------------------------------------------------------\n"); } void display(student stud[],int n1,int n2) { int i; showtable(); /*显示表头*/ for(i=n1;i=n2;i++) printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",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].score,stud[i].average,stud[i].index); /*通过循环输出数据*/ } void display1() { printf("\t\t本系统由计应精英一组亲情制作\n\n"); printf("\t\t制作人员列表: (按比划)\n"); printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n"); printf("\n\n"); getchar(); } #include"head.h" #includestring.h void amendrecord(student stud[]) { char str[5]; /*供用户输入*/ int i=-1,j; if(numstus==0) /*没有记录返回*/ printf("没有可供修改的记录!"); while(i0) { 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("下面请重新输入学生的信息:\n"); printf("请输入学号:"); gets(stud[i].number); printf("请输入姓名:"); gets(stud[i].name); printf("请输入性别(男/女 1/0):"); gets(str); if(str[0]=='0') strcpy(stud[i].sex,"女"); else strcpy(stud[i].sex,"男"); stud[i].score=0; printf("请按顺序输入成绩:"); for(j=0;jnumsubs;j++) { scanf("%f",stud[i].subject[j]); stud[i].score+=stud[i].subject[j]; } getchar(); stud[i].average=stud[i].score/numsubs; } count(stud); } display(stud,0,numstus-1); } printf("是否继续进行其他修改?(y/n)\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;jnumstus;j++) stu[j]=stu[j+1]; numstus--; printf("删除成功!\n"); } } void count(student stud[]) { int i,j; for(i=0;inumstus;i++) { stud[i].index=1; for(j=0;jnumstus;j++) if(stud[j].scorestud[i].score) stud[i].index++; } } #include "head.h" void addrecord(student stud[]) { int i=0,j,num; char str[5]; if(numstus!=0) { printf("已有记录存在是否覆盖?(y/n)\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(numstuslens) { lens+=50; pointer=(student *)realloc(pointer,lens*LEN); } printf("请输入学生信息:\n"); for(;inumstus;i++) { getchar(); printf("请输入学号:"); gets(pointer[i].number); printf("请输入姓名:"); gets(pointer[i].name); printf("请输入性别(男/女 1/0):"); gets(pointer[i].sex); if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女"); else strcpy(pointer[i].sex,"男"); printf("请输入各科成绩:(按ABCDE的顺序):"); stud[i].score=0; for(j=0;jnumsubs;j++) { scanf("%f",stud[i].subject[j]); /*计算总分*/ stud[i].score+=stud[i].subject[j]; } stud[i].average=stud[i].score/numsubs; /*计算平均分*/ } count(stud); /*附名次*/ display(stud,0,numstus-1); getchar(); }#include "head.h" int numstus; int lens; student *pointer; void main() { int i=1; char str[2]; lens=100; pointer=(student *)malloc(lens*LEN); /*分配内存*/ numstus=0; welcome(); /*欢迎界面*/ while(i0) { 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:openfile(pointer);break; /*打开文件*/ case 7:writetotext(pointer);break; /*保存文件*/ case 8:display(pointer,0,numstus-1);break; /*显示记录*/ case 0: if(numstus!=0) printf("是否保存当前记录?(y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') writetotext(pointer); i=-1;break; /*退出系统*/ default:printf("请输入数字0~8:\n");i=1; /*输入错误*/ } } printf("\t\t欢迎再次使用本系统。\n\n"); display1(); } 自己一改就能用,给我加分哈!
c语言程序学生成绩管理系统源代码
头文件:::
#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;
extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;
int menu_select(); /*函数声明*/
int openfile(student stu[]);
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();
#endif
#include "head.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
#include "head.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
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;
}
if(inumstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
#include"head.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",numstus);
fgetc(fp);
while(inumstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;jnumsubs;j++)
fscanf(fp,"%f",stu[i].subject[j]);
fscanf(fp,"%f",stu[i].score);
fscanf(fp,"%f",stu[i].average);
fscanf(fp,"%d",stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "head.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-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;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j+1].indexstud[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;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j].indexstud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;inumstus;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("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;inumstus;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("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;inumstus;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("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;inumstus;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("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;inumstus;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("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}
#include"head.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(inumstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;jnumsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}
#include"head.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");
}
void showtable()
{
printf("---------------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");
}
void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",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].score,stud[i].average,stud[i].index);
/*通过循环输出数据*/
}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n");
printf("\t\t制作人员列表: (按比划)\n");
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");
printf("\n\n");
getchar();
}
#include"head.h"
#includestring.h
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i0)
{
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("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\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;jnumstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");
}
}
void count(student stud[])
{
int i,j;
for(i=0;inumstus;i++)
{
stud[i].index=1;
for(j=0;jnumstus;j++)
if(stud[j].scorestud[i].score)
stud[i].index++;
}
}
#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\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(numstuslens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;inumstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}#include "head.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i0)
{
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:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}
自己一改就能用,给我加分哈!