当前位置:首页 » 成绩查询 » 江陵县白马中学成绩管理系统

江陵县白马中学成绩管理系统

发布时间: 2021-02-09 05:13:18

『壹』 一个学生成绩管理系统

#include<stdio.h>
#include<string.h>
#include<math.h>

struct student_type
{
char name[8];
int num;
int Class; /*把class第一个字母大写了,因为在VC中class为类关键字*/
float score[3];
double ave;
}stud[4];

int main()
{
void Write (); /*把write第一个字母大写了,因为C语言中有write函数 */
void save ();
void display ();
int n=0;
while (1)
{
printf ("\n\t\t\t\t学生成绩管理\n\n");
printf ("\t1:请输入学生的成绩记录\n");
printf ("\t2:显示成绩记录\n");
printf ("\t3:退出系统\n");
printf ("\t输入操作选项序号:");
scanf ("%d",&n);
switch (n)
{
case 1 : Write (); break;
case 2 : display (); break;
case 3 : printf("\n\t\t\t**************谢谢使用!**************\n");break;
default : printf("\n请输入1、2或3!!!");
}
if (n==3) break;
}
system("pause");
return 0;
}

/* *********输入学生成绩**********/
void Write()
{
int i=0, j=0;
for(i=0; i<4 ;i++)
{
printf("\n请输入学号 姓名 班级 :");
scanf("%d%s%d",&stud[i].num, &stud[i].name, &stud[i].Class);
printf("\n请依次输入课程成绩 :"); /*这句话从循环中移了出来 */
for(j=0; j<3; j++)
{
scanf("%f", &stud[i].score[j]);
}
stud[i].ave = (stud[i].score[0] + stud[i].score[1]
+ stud[i].score[2]) / 3;
}
printf ("\n\t\t是否保存?\n\t\t\t是:1;\n\t\t\t否:2.\n");
scanf ("%d", &i); /* i前面加& */
if (i==1)
save();
else
main();
}

/**********读出文件资料***********/
void display ()
{
int i=0;
FILE *fp;
fp = fopen ("score.txt","r");
if ((fp=fopen("score.txt","r")) == NULL)
{
printf("cannot open this score");
exit (0);
}
for (i=0; i<4; i++)
{
fscanf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", &stud[i].num, &stud[i].name[i],
&stud[i].Class, &stud[i].score[0], &stud[i].score[1], &stud[i].score[2],
&stud[i].ave);
printf ("%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", stud[i].num, stud[i].name[i],
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave);
}
fclose (fp);
}

/**********资料写入文件**********/
void save()
{
FILE *fp ; /* fp无需赋NULL */
int i=0; /* i定义在开始会好些 * /

fp = fopen ("score.txt","w");
fprintf (fp,"学号 姓名 班级 课程1 课程2 课程3 平均成绩\n");

for (i=0; i<4; i++)
{
//fwrite(&stud[i], sizeof(struct student_type), 1, fp);
fprintf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2lf\n", stud[i].num, stud[i].name,
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave); /*把stud[i].name[i] 改成了stud[i].name */
}
fclose (fp);
printf ("\n\n*******************恭喜,保存完成!*******************\n\n");
}

『贰』 1;学生成绩管理系统.

工作量太大了
有点报酬可能还会有人帮
而且你也没说明白用什么语言来写

『叁』 学生及成绩管理系统

#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
#define N 1000
struct student /*学生信息*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
char sex; /* 性别,'1'->男, '0'->女*/
short age; /*年龄*/
short score[3]; /*三门课程的成绩*/
short sum; /*总成绩*/
short deptid; /*所在系的系号*/
struct student *next1;
struct student *next2;
}*head;
struct student std[N];

struct department /*系信息,假设总共有3个系*/
{
short id; /*系号*/
char name[20]; /*系名*/
char dean[20]; /*系主任*/
char location[30]; /*系的办公地点*/
}depa[3]={{1,"计算机系","张三","电教楼505"},{2,"法政系","李四","电教楼404"},{3,"外语系","王五","实验楼401"}};
void menu()
{
printf("\n=========学生信息管理系统========\n");
printf("1. 录入学生信息\n");
printf("2. 显示所有学生信息\n");
printf("3. 按学号查询学生信息\n");
printf("4. 按姓名查询学生信息(支持模糊查询)\n");
printf("5. 按年龄查询学生信息\n");
printf("6. 查询指定学生的所在系的信息(包括系名、系主任、系的办公地点)\n");
printf("7. 修改学生信息\n");
printf("8. 删除学生信息\n");
printf("9. 追加学生信息\n");
printf("10. 保存学生信息到文件\n");
printf("11. 从文件载入学生信息\n");
printf("12. 按成绩从高到低显示所有学生信息[选作题目]\n");
printf("0. 退出系统\n");
}
//录入学生信息
void create()
{
int i,j;
char tmp[30];
struct student *p;
head=NULL;
for(i=1;;i++)
{
if(i!=1)
{
printf("是否继续录入(y/n):");
gets(tmp);
if(strcmp(tmp,"n")==0)
break;
}
p=(struct student *)malloc(sizeof(struct student));
printf("\n====请输入第%d个学生信息====\n",i);
printf("学号:");
gets(p->num);
printf("姓名:");
gets(p->name);
printf("性别,('1'->男, '0'->女):");
p->sex=getchar();
getchar();
printf("年龄:");
gets(tmp);
p->age=atoi(tmp);
printf("三门课程的成绩:\n");
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);
printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
p->deptid=atoi(tmp);
p->next1=head;
head=p;
}
printf("信息录入完毕,按任意键继续……");
getch();
}
//显示所有学生信息
void displayAll()
{
struct student *p;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
p=head;
while(p!=NULL)
{
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
p=p->next1;
}
printf("信息显示完毕,按任意键继续……");
getch();
}
//按学号查询学生信息
void searchOnNum()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入学号:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(strcmp(tmp,p->num)==0)
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到学号是%s的学生,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//按姓名查询学生信息
void searchOnName()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(strstr(p->name,tmp))
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//按年龄查询学生信息
void searchOnAge()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入年龄:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(atoi(tmp)==p->age)
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到年龄是%s的学生,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//查询指定学生的所在系的信息
void searchDepa()
{
int i,flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
for(i=0;i<3;i++)
{
if(p->deptid==depa[i].id)
{
flag=1;
printf("系名\t\t系主任\t\t系的办公地点\n");
printf("%s\t\t%s\t\t%s\n",depa[i].name,depa[i].dean,depa[i].location);
}
}
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s,或许%s系号输入时有误,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//修改学生信息
void update()
{
int flag,j;
char tmp[30];
char a;
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
flag=1;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
printf("\n====请输入新信息====\n");
printf("学号:");
gets(tmp);
if(strcmp(tmp,"")!=0)
strcpy(p->num,tmp);
printf("姓名:");
gets(tmp);
if(strcmp(tmp,"")!=0)
strcpy(p->name,tmp);
printf("性别,'1'->男, '0'->女:");
a=getchar();
if(a!='\n')
p->sex=a;
printf("年龄:");
gets(tmp);
if(strcmp(tmp,"")!=0)
p->age=atoi(tmp);
printf("三门课程的成绩:\n");
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
if(strcmp(tmp,"")!=0)
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);

printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
if(strcmp(tmp,"")!=0)
p->deptid=atoi(tmp);
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s!按任意键继续……",tmp);
else
printf("\n修改完毕,按任意键继续……");
getch();
}
//删除学生信息
void delate()
{
int flag;
char tmp[30];
struct student *p,*q;
printf("请输入姓名:");
gets(tmp);
p=head;
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
flag=1;
if(p==head)
head=p->next1;
else
q->next1=p->next1;
free(p);break;
}
q=p;
p=p->next1;
}
if(flag==0)
printf("\n未找到%s,按任意键继续……",tmp);
else
printf("删除完毕,按任意键继续……");
getch();
}
//追加学生信息
void add()
{
int i,j;
char tmp[30];
struct student *p;
for(i=1;;i++)
{
if(i!=1)
{
printf("是否继续追加(y/n):");
gets(tmp);
if(strcmp(tmp,"n")==0)
break;
}
p=(struct student *)malloc(sizeof(struct student));
printf("\n====请输入第%d个追加信息====\n",i);
printf("学号:");
gets(p->num);
printf("姓名:");
gets(p->name);
printf("性别,'1'->男, '0'->女:");
p->sex=getchar();
getchar();
printf("年龄:");
gets(tmp);
p->age=atoi(tmp);
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
if(strcmp(tmp,"")!=0)
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);
printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
p->deptid=atoi(tmp);
p->next1=head;
head=p;
}
printf("追加成功,按任意键继续……");
getch();
}
//保存学生信息到文件
void save()
{
FILE *fp;
char filename[20]={"d://qq.dat"};
printf("请输入文件名如%s:",filename);
gets(filename);
while(strcmp(filename,"")==0)
{
printf("文件名不能为空,请重新输入:");
gets(filename);
}
if((fp=fopen(filename,"wb"))==NULL)
{
printf("write file open error!\n按任意键继续……");getch();
return;

}
struct student *p;
p=head;
printf("正在保存信息,请耐心等待……\n");
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next1;
}
fclose(fp);
printf("信息保存成功,按任意键继续……");getch();
}
//从文件载入学生信息
void load()
{
char filename[20];
FILE *fp;
printf("请输入文件名:");
gets(filename);
while(strcmp(filename,"")==0)
{
printf("文件名不能为空,请重新输入:");
gets(filename);
}
if((fp=fopen(filename,"rb"))==NULL)
{
printf("read file open error!\n按任意键继续……");getch();
return;
}
struct student *p,*q;
p=(struct student *)malloc(sizeof(struct student));
head=p;
printf("正在从磁盘载入信息,请耐心等待……\n");
while(!feof(fp))
{
if(1!=fread(p,sizeof(struct student),1,fp))
break;
p->next1=(struct student *)malloc(sizeof(struct student));
q=p;
p=p->next1;
}
q->next1=NULL;
fclose(fp);
printf("载入成功,按任意键继续……");getch();
}
//按成绩从高到低显示所有学生信息[选作题目]
void displayInOrder()
{
struct student *head1,*p,*q,*r;
p=(struct student *)malloc(sizeof(struct student));
p=head;
while(p!=NULL)
{
if(p==head)
{
head1=p;
p->next2=NULL;
}
else
{
q=head1;
while(1)
{
if(p->sum>q->sum)
{
if(q==head1)
{
p->next2=head1;
head1=p;break;
}
else
{
r->next2=p;
p->next2=q;break;
}
}
else if(q->next2==NULL)
{
q->next2=p;
p->next2=NULL;break;
}
r=q;
q=q->next2;
}
}
p=p->next1;
}
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
p=head1;
while(p!=NULL)
{
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
p=p->next2;
}
printf("信息显示完毕,按任意键继续……");getch();
}
//退出系统,判断是否真的退出
void exitSystem()
{
char x;
printf("你真的要退出系统吗?(Y/N)");
while(1)
{
x=getche();
if(x=='y' || x=='Y' || x=='n' || x=='N' )
break;
printf("\b");
}
if(x=='y' || x=='Y')
{
printf("\n");
exit(0);
}
return;
}

void main()
{
int c;
char choice[3];
while(1)
{
system("cls");
menu();
do
{
printf("请输入功能键:");
gets(choice);
c=atoi(choice);
}while(c>12||c<0);
switch(c)
{
case 1: create();break;
case 2: displayAll();break;
case 3: searchOnNum();break;
case 4: searchOnName();break;
case 5: searchOnAge();break;
case 6: searchDepa();break;
case 7: update();break;
case 8: delate();break;
case 9: add();break;
case 10: save();break;
case 11: load();break;
case 12: displayInOrder();break;
case 0: exitSystem();
}
}
}

『肆』 学生成绩管理系统

哦 很好很强大

『伍』 学生成绩管理系统

wo gang xie le ge yao jia Q

『陆』 江陵县白马中学成绩管理系统

你学校如果有官网的话,点击学校网站的教务管理系统,输入号学号密码,选择身份版,接着进权入另外一个界面,点击查询绩,再进入一个界面,选择时间,系别,班级,科目,点击查询,不过我建议,不要选择科目,直接查询,就可以看全班级全科目成绩,如果学校没网站或自己上网条件不允许,打电询问老师也可以。

『柒』 简单学生成绩管理系统

//基本的都有了,c 的,文字说明自己加。有问题再找。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;

struct Student
{
string num;
double gra1;
double gra2;
double gra3;
double ave;
int t;//标志是不是被删除的。
};
Student stu[100];
int n;// 表示总人数
Student temp;
//输入成绩
void Input()
{
int t,i;
t=n;
for(i=0;i<n;i )
{
(stu[i].t==0) {t=i;break;}
}
cin>>temp.num>>temp.gra1 >>temp.gra2 >>temp.gra3 ;

stu[t]=temp;
stu[t].t=1;
if(t==n) n ;

}

void Sort()
{
int i,j;

for(i=0;i<n;i )
{
for(j=i 1;j<n;j )
{
if(stu[j].ave>stu[j-1].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void Ave()
{
int i;
for(i=0;i<n;i ) stu[i].ave=(stu[i].gra1 stu[i].gra2 stu[i].gra3 )/3;
}

void Dis ()
{
int i;
for(i=0;i<n;i )
{
if(stu[i].t==1)
{
cout<<stu[i].num<<" "<<stu[i].gra1<<" "<<stu[i].gra2
<<" "<<stu[i].gra3<<" "<<stu[i].ave<<endl;
}
}
}
void Del(int t)
{
int i;
string name;
cin>>name;
int p=-1;
for(i=0;i<n;i )
{
if(stu[i].t==1

『捌』 求个《学生成绩管理系统》 急 急 急

C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
三、程序正文部分
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
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\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
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("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%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;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-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].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\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\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组数据
7、回到主菜单,输入5,回车
按提示输入姓名,删除数据
出现删除成功的信息
8、回到主菜单,输入6,回车
输入姓名进行查询
9、回到主菜单,输入7,回车
出现统计信息
10、回到主菜单,输入9,回车
输入result.txt,回车
出现成功写入文件的信息
11、回到主菜单,输入0,回车退出系统

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919