C语言--学生信息管理系统设计(悬100分)

作者&投稿:衷谦 (若有异议请与网页底部的电邮联系)
#include<stdio.h>
#include<string.h>
#define NULL 0
#define SIZE 2
#define LEN sizeof(struct student)
void shuru();
void ll();
void xh();
void sfzh();
void cx();
void gxh();
void nl();
void sr();
void zzmm();
void addr();
void dh();
void special();
void E_mail();
void xg();
void fu();
struct student *creat();
void print(struct student*);
struct student*del(struct student*,int);
void sc();
void px();
void tj();
void clrscr();
void exit();
void *malloc(unsigned int);
void quit();
struct student
{int num;
char name[20];
char sex ;
int age;
char birth[12];
char nation[10];
char zzmm[10];
char addr[20];
char tel[15];
char special[12];
char E_mail [15];
char card[20];
struct student *next;
}stu[SIZE];
main()
{
int i,k=0;
char username[15],pwd[6];
for(i=0;i<3;i++)
{
printf("\n请输入用户名:");
gets(username);
printf("\n请输入6位密码:");
gets(pwd);
if((strcmp(username,"sfghj")==0)&&(strcmp(pwd,"123456")==0))
{
printf("\n您已经成功登录\n");
k=1;
for(i=0;i<20;i++)
{
printf(".");
}
fu();
break;
}
else
printf("\n用户名或密码无效 请重新输入:\n");
continue;
}
if(k==0)
printf("\n连续输入错误3次 将退出程序\n");
quit();
}

void fu()
{ char ch;
printf("\n\n");
printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* * *┃\n");
printf("\t┃* 1.录入信息 * 2.浏览信息 *┃\n");
printf("\t┃* * *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* * *┃\n");
printf("\t┃* 3.查询信息 * 4.修改信息 *┃\n");
printf("\t┃* * *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* * *┃\n");
printf("\t┃* 5.删除信息 * 6.按出生年月排序 *┃\n");
printf("\t┃* * *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* * *┃\n");
printf("\t┃* 7.按生源地统计 * 8.退出程序 *┃\n");
printf("\t┃* * *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请您输入 (1-8) 选择以上功能:");
ch=getchar();
switch(ch)
{case '1':shuru();break;
case '2':ll();break;
case '3':cx();break;
case '4':xg();break;
case '5':sc();break;
case '6':px();break;
case '7':tj();break;
case '8':getchar();quit();
}
}

void shuru() /*主函数调用:录入信息函数*/
{int i;
FILE*fp;
if((fp=fopen("xshfile.c","wb"))==NULL)
{printf("Cannot open file.\n");
return;
}
for(i=1;i<SIZE;i++)
{printf("\n请输入学号(1-45):");
scanf("%d",&stu[i].num);
printf("\n请输入姓名(用汉语拼音表示):");
scanf("%s",stu[i].name);
printf("\n请输入性别('M' 或 'F'):");
scanf("%c",&stu[i].sex);
printf("\n请输入年龄:");
scanf("%d",&stu[i].age);
printf("\n请输入八位出生年月:");
scanf("%s",stu[i].birth);
printf("\n请输入民族(用汉语拼音表示):");
scanf("%s",stu[i].nation);
printf("\n请输入政治面貌(用汉语拼音表示):");
scanf("%s",stu[i].zzmm);
printf("\n请输入家庭住址:");
scanf("%s",stu[i].addr);
printf("\n请输入电话号码:");
scanf("%s",stu[i].tel);
printf("\n请输入专业简称(用汉语拼音表示):");
scanf("%s",stu[i].special);
printf("\n请输入E_mail:");
scanf("%s",stu[i].E_mail);
printf("\n请输入身份证号码:");
scanf("%s",stu[i].card);
}

for(i=1;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("The file writes error\n");
getchar();fu();fclose(fp);
}
void ll() /*主函数调用:浏览信息函数*/
{
FILE*fp1;
int a;
fp1=fopen("xshfile.c","rb");
for(a=1;a<SIZE;a++)
{fread(&stu[a],sizeof(struct student),1,fp1);
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s",stu[a].num,stu[a].name,stu[a].sex,stu[a].age,
stu[a].birth,stu[a].nation,stu[a].zzmm,stu[a].addr,stu[a].tel,
stu[a].special,stu[a].E_mail,stu[a].card);
printf("\n\n");
getchar();fu();fclose(fp1);
}
}
void xh()/*查询信息函数调用:按学号查询信息函数*/
{int b,c;
printf("\n 请输入学号:");
scanf("%d",&b);
for(c=1;c<SIZE;c++)
{if(b!=stu[c].num)continue;
else printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s",stu[c].num,stu[c].name,stu[c].sex,stu[c].age,
stu[c].birth,stu[c].nation,stu[c].zzmm,stu[c].addr,stu[c].tel,
stu[c].special,stu[c].E_mail,stu[c].card);
}
}
void sfzh()/*查询信息函数调用:按身份证查询信息函数*/
{int e;
char f[20];
printf("\n请输入身份证号码:");
scanf("%s",f);
for(e=1;e<SIZE;e++)
{if(strcmp(f,stu[e].card)!=0)continue;
else printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zhengmao:%s addr:%s tel:%s special:%s E_mail:%s card:%s",stu[e].num,stu[e].name,stu[e].sex,stu[e].age,
stu[e].birth,stu[e].nation,stu[e].zzmm,stu[e].addr,stu[e].tel,
stu[e].special,stu[e].E_mail,stu[e].card);
}
}
void cx() /*主函数调用:查询信息函数*/
{
while(1)
{char d;
printf("\n\n");
printf("\t\t\t┏━━━━━━━━━━━━━━━┓\n");
printf("\t\t\t┃******************************┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃* 查询信息子菜单 *┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃******************************┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃* 1.按学号查询 *┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃******************************┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃* 2.按身份证号查询 *┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃******************************┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃* 0. 返回主界面 *┃\n");
printf("\t\t\t┃* *┃\n");
printf("\t\t\t┃******************************┃\n");
printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");

printf("请您输入 (1-3) 选择以上功能:");
d=getchar();
switch(d)
{
case '1' :xh();break;
case '2' :sfzh();break;
case '0' :getchar();fu();
}
}
}

void gxh()/*修改学号*/
{int j,k,l;
FILE*fp4;
if((fp4=fopen("xshfile.c","rb"))==NULL)
{printf("\ncannot open this file.\n");
getchar();fu();
}
printf("\n请输入原来学号:");
scanf("%d",&j);
for(k=1;k<SIZE;k++)
{if(j!=stu[k].num)continue;
else{printf("请输入现在的学号:");
scanf("%d",&l);
stu[k].num=l;
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[k-1].num,stu[k-1].name,
stu[k-1].sex,stu[k-1].age,stu[k-1].birth,stu[k-1].nation,stu[k-1].zzmm,
stu[k-1].addr,stu[k-1].tel,stu[k-1].special,stu[k-1].E_mail,stu[k-1].card);
fclose(fp4);
}
void nl() /*修改年龄*/
{int f1,f2,f3;
FILE*fp5;
if((fp5=fopen("xshfile.c","rb+"))==NULL)
{printf("\n cannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&f1);
for(f2=1;f2<SIZE;f2++)
{if(f1==stu[f2].num)
{printf("\n请输入现在的年龄:");
scanf("%d",&f3);
stu[f2].age=f3;
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[f2-1].num,stu[f2-1].name,
stu[f2-1].sex,stu[f2-1].age,stu[f2-1].birth,stu[f2-1].nation,stu[f2-1].zzmm,
stu[f2-1].addr,stu[f2-1].tel,stu[f2-1].special,stu[f2-1].E_mail,stu[f2-1].card);
fclose(fp5);
}
void sr() /*修改生日*/
{char f6[12];
int f4,f5;
FILE*fp6;
if((fp6=fopen("xshfile.c","rb+"))==NULL)
{printf("\n cannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&f4);
for(f5=1;f5<SIZE;f5++)
{if(f4==stu[f5].num)
{printf("\n请输入现在的八位生日:");
scanf("%s",f6);
strcpy(stu[f5].birth,f6);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zhengmao:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[f5-1].num,stu[f5-1].name,
stu[f5-1].sex,stu[f5-1].age,stu[f5-1].birth,stu[f5-1].nation,stu[f5-1].zzmm,
stu[f5-1].addr,stu[f5-1].tel,stu[f5-1].special,stu[f5-1].E_mail,stu[f5-1].card);
fclose(fp6);
}
void zzmm() /*修改政治面貌*/
{char f9[12];
int f7,f8;
FILE*fp7;
if((fp7=fopen("xshfile.c","rb+"))==NULL)
{printf("\n cannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&f7);
for(f8=1;f8<SIZE;f8++)
{if(f7==stu[f8].num)
{printf("\n请输入现在的政治面貌:");
scanf("%s",f9);
strcpy(stu[f8].zzmm,f9);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[f8-1].num,stu[f8-1].name,
stu[f8-1].sex,stu[f8-1].age,stu[f8-1].birth,stu[f8-1].nation,stu[f8-1].zzmm,
stu[f8-1].addr,stu[f8-1].tel,stu[f8-1].special,stu[f8-1].E_mail,stu[f8-1].card);
fclose(fp7);
}
void addr()/*修改家庭住址*/
{char b1[20];
int b2,b3;
FILE*b4;
if((b4=fopen("xshfile.c","rb+"))==NULL)
{printf("\ncannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&b2);
for(b3=1;b3<SIZE;b3++)
{if(b2!=stu[b3].num)continue;
else{printf("\n请输入现在的家庭住址:");
scanf("%s",b1);
strcpy(stu[b3].addr,b1);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[b3-1].num,stu[b3-1].name,
stu[b3-1].sex,stu[b3-1].age,stu[b3-1].birth,stu[b3-1].nation,stu[b3-1].zzmm,
stu[b3-1].addr,stu[b3-1].tel,stu[b3-1].special,stu[b3-1].E_mail,stu[b3-1].card);
fclose(b4);
}
void tel()/*修改电话号码*/
{ char b5[15];
int b6,b7;
FILE*b8;
if((b8=fopen("xshfile.c","rb+"))==NULL)
{printf("\ncannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&b6);
for(b7=1;b7<SIZE;b7++)
{if(b6!=stu[b7].num)continue;
else{printf("\n请输入现在的电话号码:");
scanf("%s",b5);
strcpy(stu[b7].tel,b5);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[b7-1].num,stu[b7-1].name,
stu[b7-1].sex,stu[b7-1].age,stu[b7-1].birth,stu[b7-1].nation,stu[b7-1].zzmm,
stu[b7-1].addr,stu[b7-1].tel,stu[b7-1].special,stu[b7-1].E_mail,stu[b7-1].card);
fclose(b8);
}
void special()/*修改专业*/
{ char l1[12];
int l2,l3;
FILE*l4;
if((l4=fopen("xshfile.c","rb+"))==NULL)
{printf("\ncannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&l2);
for(l3=1;l3<SIZE;l3++)
{if(l2!=stu[l3].num)continue;
else{printf("\n请输入现在的专业:");
scanf("%s",l1);
strcpy(stu[l3].special,l1);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[l3-1].num,stu[l3-1].name,
stu[l3-1].sex,stu[l3-1].age,stu[l3-1].birth,stu[l3-1].nation,stu[l3-1].zzmm,
stu[l3-1].addr,stu[l3-1].tel,stu[l3-1].special,stu[l3-1].E_mail,stu[l3-1].card);
fclose(l4);
}
void E_mail()/*修改邮箱*/
{ char l5[15];
int l6,l7;
FILE*l8;
if((l8=fopen("xshfile.c","rb+"))==NULL)
{printf("\ncannot open this file.\n");
getchar();fu();
}
printf("\n请输入学号查询:");
scanf("%d",&l6);
for(l7=1;l7<SIZE;l7++)
{if(l6!=stu[l7].num)continue;
else{printf("\n请输入现在的邮箱:");
scanf("%s",l5);
strcpy(stu[l7].E_mail,l5);
}
}
printf("\n输出修改后的信息如下:\n");
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[l7-1].num,stu[l7-1].name,
stu[l7-1].sex,stu[l7-1].age,stu[l7-1].birth,stu[l7-1].nation,stu[l7-1].zzmm,
stu[l7-1].addr,stu[l7-1].tel,stu[l7-1].special,stu[l7-1].E_mail,stu[l7-1].card);

fclose(l8);
}
void xg()/*主函数调用:修改和添加信息函数*/
{int g;
FILE*fp3;
if((fp3=fopen("xshfile.c","rb+"))==NULL)
{printf("cannot open this file.\n");
getchar();fu();
}
while(1)
{
printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* *┃\n");
printf("\t┃* 修改和添加信息子菜单 *┃\n");
printf("\t┃* *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* a.学号修改 * b.年龄修改 *┃\n");
printf("\t┃* **********************************************************┃\n");
printf("\t┃* c.出生年月修改 * d.政治面貌修改 *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* e.家庭住址修改 * f.电话号码修改 *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* g.专业修改 * h.E-mail信箱修改 *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃* *┃\n");
printf("\t┃* l.退出修改和添加子系统 *┃\n");
printf("\t┃* *┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("\t\t\t请选择(a-l):");
g=getchar();
switch(g)
{case 'a':gxh();break;
case 'b':nl();break;
case 'c':sr();break;
case 'd':zzmm();break;
case 'e':addr();break;
case 'f':tel();break;
case 'g':special();break;
case 'h':E_mail();break;
case 'l':getchar();fu();
default:continue;
}
}
}
struct student*creat(void)/*定义函数,此函数带回一个指向链表头的指针*/
{

struct student*p1,*p2, *head1;
int n=0;
p1=p2=(struct student*)malloc(LEN);/*开辟一个新单元*/
printf("\n请输入学生信息:\n");
printf("\nnum name sex age birth nation zzmm addr tel special E_mail card \n");
scanf("%d%s%c%d%s%s%s%s%s%s%s%s",&p1->num,p1->name,&p1->sex,&p1->age,p1->birth,p1->nation,
p1->zzmm,p1->addr,p1->tel,p1->special,p1->E_mail,p1->card);
head1=NULL;
printf("\n请输入所有学生信息后再输入的学号输0");
while(p1->num!=0)
{ n=n+1;
if(n==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct student*)malloc(LEN) ;
printf("\nnum name sex age birth nation zzmm addr tel speciality E_mail card \n");
scanf("%d%s%c%d%s%s%s%s%s%s%s%s",&p1->num,p1->name,&p1->sex,&p1->age,p1->birth,p1->nation,
p1->zzmm,p1->addr,p1->tel,p1->special,p1->E_mail,p1->card);
}
p2->next=NULL;
return(head1);

}
struct student*del(struct student *head,int num1) /*删除结点函数*/
{struct student*p1,*p2;
if(head==NULL){printf("\nlist null!\n");return(head);}
p1=head;
while(num1!=p1->num&&p1->next!=NULL) /*p1所指的不是要指的结点,且后面还有结点*/
{p2=p1;
p1=p1->next;
} /*p1后移一个结点*/
if(num1==p1->num) /*找到结点*/
{if(p1==head)head=p1->next; /*若p1指向的是首结点,赋予head第二个结点地址*/
else p2->next=p1->next; /*否则下一结点的地址赋予前一结点地址*/
printf("delete:%d\n",num1);
num1=num1-1;
}
else printf("%d not be found!\n",num1); /*找不到该结点*/
return(head);

}
void print(struct student*head)/*输出全部结点函数*/
{struct student*p;
printf("\nNow,these records are:\n");
p=head;
if(head!=NULL)
do
{printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",p->num,p->name,p->sex,p->age,p->birth,p->nation,
p->zzmm,p->addr,p->tel,p->special,p->E_mail,p->card);
p=p->next;
}
while(p!=NULL);
}
void sc()/*主函数调用:删除信息函数*/
{
struct student *head;
int del_num;
head=creat();/*调用creat函数后建立一个单向动态链表*/
print(head);/*调用print函数后输出全部结点*/
printf("\ninput the deleted number:");
scanf("%d",&del_num);
head=del(head,del_num);/*删除后链表的首地址*/
print(head);/*调用print函数后输出全部结点*/
}

void px(struct student stu[],int n5)/*排序函数 */
{ struct student temp;
int j,k1;
for(j=1;j<=n5-1;j++)
{if(strcmp(stu[j].birth,stu[j+1].birth)<0)
{temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}

printf("\n排序后的顺序为:\n");
for(k1=1;k1<SIZE;k1++)
printf("num:%d name:%s sex:%c age:%d birth:%s nation:%s zzmm:%s addr:%s tel:%s special:%s E_mail:%s card:%s\n\n",stu[k1].num,stu[k1].name,
stu[k1].sex,stu[k1].age,stu[k1].birth,stu[k1].nation,stu[k1].zzmm,
stu[k1].addr,stu[k1].tel,stu[k1].special,stu[k1].E_mail,stu[k1].card);

}
void tj()
{char a1[20];
int i1,n1=0,n2,n3;
printf("\n如果有n个不同地址,请先输入n的值:");
scanf("%d",&n2);
for(n3=1;n3<=n2;n3++)
{printf("\n请输入一个城市名(用汉语拼音表示):");
scanf("%s",a1);
for(i1=1;i1<SIZE;i1++)
{if(strcmp(a1,stu[i1].addr)==0)n1=n1+1;
printf("%s:",a1);
printf("%d位同学\n",n1);
}
}
}
看看吧

写了半天,看看吧。
#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() {
char a;
do{
printf("\n请输入学号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n请输入姓名:");
gets(st[i].name);
printf("\n") ;
printf("请输入年龄:");
scanf("%d",&st[i].age);
fflush(stdin);
printf("\n请输入姓别:");
gets(st[i].sex);
fflush(stdin);
printf("\n请输入生日:");
gets(st[i].birthady);
printf("\n请输入电话:");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("\n请输入籍贯:");
gets(st[i].nativeplace);
printf("\n是否继续输入另外一个学生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);

}

void xianshi()
{
int j;
printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n");
for(j=0;j<i;j++)
printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n",
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}

void paixu() //按年龄从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序后输出
}

void chazhao()
{
int m;
char name[20],b;
do
{
printf("\n请输入想查找的学生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("\n\t您查找的学生在第%d个位置找到了!!!\n",m+1);
break;
}
}
if(m>=20)
printf("\n\t没有找到这个学生!!!\n");
else
{
printf("\t学号\t姓名\t年龄\t性别\t生日\t\t电话\t籍贯\n");
printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n",
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf("\n是否查找另一个学生的信息?(y/n)");
fflush(stdin);
b=getchar();

}while(b=='y');

}

void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("\n请输入要删除的学生姓名:\n");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}

for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("\t没有找到这个学生!!!\n");

else
{
i--;
xianshi();
}

printf("\n是否继续删除另一个学生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');

}

void charu()
{
shuru();
paixu();

}

void main() //主函数
{
int change;
do{
system("cls");
printf("============================学生信息管理系统===================================\n");
printf("\t\t一: 输入学生信息\n");
printf("\t\t二: 显示学生信息\n");
printf("\t\t三: 查找学生信息\n");
printf("\t\t四: 删除学生信息\n");
printf("\t\t五: 插入学生信息\n");
printf("\t\t六: 退出程序\n");
fflush(stdin);
printf("\t\t请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}

我用C++做过一个,你会改的话就用吧:

#include "iostream.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct info
{
char name[20];
char sex[10];
int num;
char phone[20];
char address[100];
info *pNext;
};

class students
{
public:
students();
void show(info *pNode);
info* Add();
int Del(int num);
info* Sea(int num);
inline info* getdata(){return &data;}
private:
info data;
};

students::students()
{
memset(data.name,0,20);
memset(data.sex,0,10);
memset(data.phone,0,20);
memset(data.address,0,100);
data.num=-1;
data.pNext=NULL;
}

info* students::Add()
{
info *pNode,*pPrev;
char IsOther;
pPrev=&data;
while(pPrev->pNext!=NULL) pPrev=pPrev->pNext;
cout<<"Input students Infomation:\n";
do
{
pNode=new info;
cout<<"name:"; cin>>pNode->name;
cout<<"sex:"; cin>>pNode->sex;
cout<<"num:"; cin>>pNode->num;
cout<<"phone number:"; cin>>pNode->phone;
cout<<"address:"; cin>>pNode->address;
pPrev->pNext=pNode;
pPrev=pNode;
pNode->pNext=NULL;
cout<<"Do you input other?(Y/N):";
cin>>IsOther;
}while(IsOther=='y'||IsOther=='Y');
return pNode;
}

void students::show(info *pNode)
{
cout<<"Name\tSex\tNum\tPhonnumber\tAddress"<<endl;
if(!pNode)
{
pNode=data.pNext;
while(pNode!=NULL)
{
cout<<pNode->name<<"\t";
cout<<pNode->sex<<"\t";
cout<<pNode->num<<"\t";
cout<<pNode->phone<<"\t\t";
cout<<pNode->address<<endl;
pNode=pNode->pNext;
}
}
else
{
cout<<pNode->name<<"\t";
cout<<pNode->sex<<"\t";
cout<<pNode->num<<"\t";
cout<<pNode->phone<<"\t\t";
cout<<pNode->address<<endl;
}
}

int students::Del(int num)
{
info *pPrev;
pPrev=&data;
while(pPrev->pNext!=NULL && pPrev->pNext->num!=num) pPrev=pPrev->pNext;
if(pPrev)
{
pPrev->pNext=pPrev->pNext->pNext;
delete pPrev->pNext;
return 1;
}
else return 0;
}

info* students::Sea(int num)
{
info *pPrev;
pPrev=&data;
while(pPrev->pNext!=NULL && pPrev->pNext->num!=num) pPrev=pPrev->pNext;
return pPrev->pNext;
}

void SaveData(info *pPrev)
{
FILE *fp;
if((fp=fopen("C:\\students.dat","w+"))==NULL) {cout<<"Save Fault!\n";return;}
pPrev=pPrev->pNext;
while(pPrev!=NULL)
{
fwrite(pPrev,sizeof(info),1,fp);
pPrev=pPrev->pNext;
}
fclose(fp);
cout<<"Save Success!\n";
}

void OpenData(info *pPrev)
{
FILE *fp;
info *pNode;
int status;
if((fp=fopen("C:\\students.dat","r+"))==NULL) {cout<<"Open Fault!\n";return;}
while(!feof(fp))
{
pNode=new info;
status=fread(pNode,sizeof(info),1,fp);
if(status)
{
pPrev->pNext=pNode;
pPrev=pNode;
}
else
{
pPrev->pNext=NULL;
delete pNode;
}
}
fclose(fp);
pPrev->pNext=NULL;
cout<<"Read Success!\n"<<endl;
}

void main()
{
students Maneger;
int nSel,num;
info *pNode;
do{
cout<<"\t\t\tThe Students Information Maneger\n";
cout<<"\t1.Insert a new information.\t"; cout<<"2.Delete an information.\n";
cout<<"\t3.Search an information.\t"; cout<<"4.Modify an information.\n";
cout<<"\t5.Show all information.\t\t"; cout<<"6.Save current all information.\n";
cout<<"\t7.Open data file.\t\t"; cout<<"8.Clean Screen.\n";
cout<<"\t9.Qite system.\n";
cout<<"What are you going to want:";
cin>>nSel;

switch(nSel)
{
case 1:
Maneger.Add();
break;
case 2:
cout<<"The num you want to delete is :";
cin>>num;
num=Maneger.Del(num);
if(num) cout<<"The information is deleted.\n";
else cout<<"The information isn't found.\n";
break;
case 3:
cout<<"The num you want to search is :";
cin>>num;
pNode=Maneger.Sea(num);
if(pNode) Maneger.show(pNode);
else cout<<"The information isn't found.\n";
break;
case 4:
cout<<"The num you want to modify is :";
cin>>num;
pNode=Maneger.Sea(num);
if(pNode)
{
Maneger.show(pNode);
cout<<"name:"; cin>>pNode->name;
cout<<"sex:"; cin>>pNode->sex;
cout<<"num:"; cin>>pNode->num;
cout<<"phone number:"; cin>>pNode->phone;
cout<<"address:"; cin>>pNode->address;
}
else cout<<"The information isn't found.\n";
break;
case 5:
Maneger.show(NULL);
break;
case 6:
SaveData(Maneger.getdata());
break;
case 7:
OpenData(Maneger.getdata());
break;
case 8:
system("cls");
break;
case 9:
info *pPrev;
pPrev=pNode=Maneger.getdata()->pNext;
while(pPrev!=NULL)
{
pNode=pPrev->pNext;
delete pPrev;
pPrev=pNode;
}
return;
}
}while(nSel!=9);
}

上网搜,一大堆呢!

用链表吧

学生信息管理系统设计(C语言)~

写了半天,看看吧。
#include
#include
#include
#include
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() {
char a;
do{
printf("
请输入学号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("
请输入姓名:");
gets(st[i].name);
printf("
") ;
printf("请输入年龄:");
scanf("%d",&st[i].age);
fflush(stdin);
printf("
请输入姓别:");
gets(st[i].sex);
fflush(stdin);
printf("
请输入生日:");
gets(st[i].birthady);
printf("
请输入电话:");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("
请输入籍贯:");
gets(st[i].nativeplace);
printf("
是否继续输入另外一个学生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);

}


void xianshi()
{
int j;
printf("学号姓名年龄性别生日电话籍贯
");
for(j=0;j<i;j++)
printf("%d%s%d%s%s%d%s
",
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}

void paixu() //按年龄从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序后输出
}

void chazhao()
{
int m;
char name[20],b;
do
{
printf("
请输入想查找的学生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("
您查找的学生在第%d个位置找到了!!!
",m+1);
break;
}
}
if(m>=20)
printf("
没有找到这个学生!!!
");
else
{
printf("学号姓名年龄性别生日电话籍贯
");
printf("%d%s%d%s%s%d%s
",
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf("
是否查找另一个学生的信息?(y/n)");
fflush(stdin);
b=getchar();

}while(b=='y');


}

void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("
请输入要删除的学生姓名:
");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}

for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("没有找到这个学生!!!
");

else
{
i--;
xianshi();
}

printf("
是否继续删除另一个学生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');

}


void charu()
{
shuru();
paixu();

}

void main() //主函数
{
int change;
do{
system("cls");
printf("============================学生信息管理系统===================================
");
printf("一: 输入学生信息
");
printf("二: 显示学生信息
");
printf("三: 查找学生信息
");
printf("四: 删除学生信息
");
printf("五: 插入学生信息
");
printf("六: 退出程序
");
fflush(stdin);
printf("请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}

呵呵~~
我也找了很久哦~~
第一种:
#include
#include
#include
#include
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() {
char a;
do{
printf("
请输入学号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("
请输入姓名:");
gets(st[i].name);
printf("
") ;
printf("请输入年龄:");
scanf("%d",&st[i].age);
fflush(stdin);
printf("
请输入姓别:");
gets(st[i].sex);
fflush(stdin);
printf("
请输入生日:");
gets(st[i].birthady);
printf("
请输入电话:");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("
请输入籍贯:");
gets(st[i].nativeplace);
printf("
是否继续输入另外一个学生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);

}


void xianshi()
{
int j;
printf("学号姓名年龄性别生日电话籍贯
");
for(j=0;j<i;j++)
printf("%d%s%d%s%s%d%s
",
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}

void paixu() //按年龄从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序后输出
}

void chazhao()
{
int m;
char name[20],b;
do
{
printf("
请输入想查找的学生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("
您查找的学生在第%d个位置找到了!!!
",m+1);
break;
}
}
if(m>=20)
printf("
没有找到这个学生!!!
");
else
{
printf("学号姓名年龄性别生日电话籍贯
");
printf("%d%s%d%s%s%d%s
",
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf("
是否查找另一个学生的信息?(y/n)");
fflush(stdin);
b=getchar();

}while(b=='y');


}

void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("
请输入要删除的学生姓名:
");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}

for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("没有找到这个学生!!!
");

else
{
i--;
xianshi();
}

printf("
是否继续删除另一个学生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');

}


void charu()
{
shuru();
paixu();

}

void main() //主函数
{
int change;
do{
system("cls");
printf("============================学生信息管理系统===================================
");
printf("一: 输入学生信息
");
printf("二: 显示学生信息
");
printf("三: 查找学生信息
");
printf("四: 删除学生信息
");
printf("五: 插入学生信息
");
printf("六: 退出程序
");
fflush(stdin);
printf("请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}
第二种
#include
#include
#include

typedef struct STUDENT
{
char studentNumber[10];/*学生学号*/
char studentName[20];/*学生姓名*/
char studentSEX[10];/*学生性别*/
char className[20];/*班级名称*/
float mark1;/*第1门成绩*/
float mark2;/*第2门成绩*/
float mark3;/*第3门成绩*/
float mark4;/*第4门成绩*/
float mark5;/*第5门成绩*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink;/*链表表头指针*/
/*以下是函数声明*/
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
STUDENT *MallocNode(void);
void GetInformation(STUDENT *t);
void OutputInformation(void);
void DesplayInfoBystudentName(void);
void DesplayInfoBystudentNumber(void);
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber(void);
void ChangeMarkByName(void);
void ChangeMarkByNumber(void);
void SaveLinkToFile(void);
void DesplayMarkSegment(void);
void CompositorByTotalMark(void);
int choose;/*用于接受用户的选择*/
/*主函数*/
void main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
}
/************************************
函数功能:从文件中读学生信息到链表中
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("文件不存在
");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%s%f%f%f",p->studentNumber,p->studentSEX,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DesplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------

");
printf("| 1 显示所有学生的信息 |
");
printf("| 2 按姓名查询 |
");
printf("| 3 按学号查询 |
");
printf("| 4 增加学生 |
");
printf("| 5 删除学生 |
");
printf("| 6 按姓名修改学生成绩 |
");
printf("| 7 按学号修改学生成绩 |
");
printf("| 8 保存所有学生信息 |
");
printf("| 9 显示优秀和不及格学生成绩 |
");
printf("| 10 排序结果并输出成绩 |
");
printf("| 11 退出 |

");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case 1:
OutputInformation();/*显示所有学生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case 4:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case 6:
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case 7:
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case 8:
SaveLinkToFile();/*保存数据*/
break;
case 9:
DesplayMarkSegment();/*显示各分数段的学生成绩*/
break;
case 10:
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DesplayMenu();/*递归调用*/
}
/************************************
函数功能:建立链表表头
************************************/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函数功能:申请一个新结点,并将其初始化
************************************/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<10;i++)
p->studentSEX[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->mark4=0.0;
p->mark5=0.0;
p->next=NULL;
return p;
}
/************************************
函数功能:取得用户输入的学生信息
************************************/
void GetInformation(STUDENT *t)
{
printf("请输入学生学号:
");
scanf("%s",t->studentNumber);
printf("请输入学生姓名:
");
scanf("%s",t->studentName);
printf("请输入学生性别:
");
scanf("%s",t->studentSEX);
printf("请输入该生所在班级:
");
scanf("%s",t->className);
printf("请输入第1门成绩:
");
scanf("%f",&(t->mark1));
printf("请输入第2门成绩:
");
scanf("%f",&(t->mark2));
printf("请输入第3门成绩:
");
scanf("%f",&(t->mark3));
printf("请输入第4门成绩:
");
scanf("%f",&(t->mark4));
printf("请输入第5门成绩:
");
scanf("%f",&(t->mark5));
}
/************************************
函数功能:在链表的结尾处增加一个结点
************************************/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:根据用户输入的学生姓名显示该学生的信息
************************************/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩

");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据用户输入的学号显示该学生的信息
************************************/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[10];
char flag=0;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩

");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:输出一个结点的信息
************************************/
void DesplayOneNode(STUDENT *t)
{
printf("%s",t->studentNumber);
printf("%s",t->studentName);
printf("%s",t->studentSEX);
printf("%s",t->className);
printf("%.2f",t->mark1);
printf("%.2f",t->mark2);
printf("%.2f",t->mark3);
printf("%.2f",t->mark4);
printf("%.2f",t->mark5);
printf("%.2f",t->mark1+t->mark2+t->mark3+t->mark4+t->mark5);
printf("%.2f
",(t->mark1+t->mark2+t->mark3+t->mark4+t->mark5)/5);
}
/************************************
函数功能:根据用户输入的学号删除该学生
************************************/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("请输入要删除的学生学号:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("不存在该学号的学生
");
return;
}
printf("成功删除
");
}
/************************************
函数功能:显示所有学生的信息
************************************/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息

");
return;
}
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩

");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/************************************
函数功能:根据输入的姓名修改成绩
************************************/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
printf("请输入新的第4门成绩:
");
scanf("%f",&mark4);
printf("请输入新的第5门成绩:
");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据输入的学号修改成绩
************************************/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
printf("请输入新的第4门成绩:
");
scanf("%f",&mark4);
printf("请输入新的第5门成绩:
");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:保存链表数据到文件中
************************************/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息

");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在
");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %s %f %f %f %f %f
",p->studentNumber,p->studentName,p->studentSEX,p->className,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5);
p=p->next;
}
fclose(fp);
}
/************************************
函数功能:显示优秀和不及格学生成绩
************************************/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("60分以下(不及格)的学生成绩如下:
");
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩

");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))||(6>((int)(p->mark4/10)))||(6>((int)(p->mark5/10))))/*只要有一科不及格就认为该生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("不及格的学生一共有%d人
",count);
p=headLink->next;
printf("成绩优秀的学生成绩如下:
");
printf("学号姓名性别班级成绩1成绩2成绩3成绩4成绩5总成绩平均成绩

");
count=0;
while(p)
{
if((8mark1/10)))&&(8mark2/10)))&&(8mark3/10)))&&(8mark4/10)))&&(8mark5/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("成绩优秀的学生一共有%d人
",count);
}
/************************************
函数功能:按总成绩排序
************************************/
void CompositorByTotalMark(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没学生信息,请先输入学生信息
");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3+q->mark4+q->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;
exchange.mark4=q->mark4;
exchange.mark5=q->mark5;

strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->studentSEX,p->studentSEX);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark2;
q->mark3=p->mark3;
q->mark4=p->mark4;
q->mark5=p->mark5;
strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
p->mark4=exchange.mark4;
p->mark5=exchange.mark5;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
我比较倾向于第二种,因为是自己调试的,呵呵~~
你只要把"成绩"改成你需要的其他信息就OK了~~

C语言程序设计 学生信息管理系统
答:printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员总成绩信息\n\t\t\t\t3.对总成绩排序\n\t\t\t\t4.显示学员单科成绩排序\n\t\t\t\t5.添加学员信息\n\t\t\t\t6.删除学员信息\n\t\t\t\t7.修改学员信息\n\t\t\t\t8.查询学员信息\n\t\t\t\t9.从文件读入学员信息\n\t\t...

C语言程序设计 题目:学生信息管理系统
答:1题目:学生信息管理系统2程序要求:(1)学生信息录入功能1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、语文四门课成绩。2)可插入一个或多个学生信息到当... 1题目:学生信息管理系统 2 程序要求:(1)学生信息录入功能 1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治...

c语言程序设计 学生信息管理系统
答:1.系统以菜单方式工作2.学生信息录入功能(学生信息用文件保存)—输入3.学生信息浏览功能——输出4.查询,排序功能——算法5.按学号查询6.按姓名查询7.学生信息的删除与修改(可选项... 1. 系统以菜单方式工作2. 学生信息录入功能(学生信息用文件保存)—输入3. 学生信息浏览功能——输出4. 查询,排序功能——算法...

C语言 学生信息管理系统设计
答:l试设计一学生信息管理系统,使之能提供以下功能:a)系统以菜单方式工作b)学生信息录入功能(学生信息用文... l学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。l试设计一学生信息管理系统,使之能提供以下功能:a)系统以菜单方式工作b)学生信息录入功能(学生信息用文件保存)---输入c)学生信息浏览...

帮忙设计一个C语言的学生信息管理系统
答:具体要求如下:1、在主程序中,先显示如下菜单:简易学生信息管理系统***系统功能菜单***---1.录入学生信息2.按成绩排序3.增加学生信息4.按学号删... 具体要求如下:1、 在主程序中,先显示如下菜单: 简易学生信息管理系统 ***系统功能菜单*** --- 1. 录入学生信息 2. 按成绩排序 3. 增加学生信息 ...

...利用C语言设计一个简易的学生信息管理系统,包括 学号 姓名 性别...
答:printf("请输入学生姓名:\n");scanf("%s",&p->name);p->next=Null;r->next=p; // 这个地方我总是不明白,是怎样让结点下移一个的呢?r=r->next;} return (head);} void find (list *h){ int k; // 要找的学生学号 list *p;p=h->next;printf("请输入要查找的学生学...

C语言程序设计 学生成绩管理信息系统
答:一、 课题设计名称学生成绩管理信息系统分析设计二、 课题设计目的通过本次课程的设计,加深对信息系统基础理论和基本知识的理解,掌握使用信息系统分析、设计的基本方法,提高解决实际管理问题、开发信息系统的实践能力。三、 任务要求:用信息系统开发工具(例如Visual Foxpro、Visual Basic、Delphi等)开发一个实用的中小型...

学生信息管理系统(C语言)
答:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、学生信息录入功能(学生信息用文... 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:1、系统以菜单方式...

学生信息管理系统c语言程序
答:学生信息管理系统c语言程序 1,用口令(密码)形式验证管理员身份(可输入3次),合法者可进入,否则程序结束。2,有关功能说明A.建立学生成绩表;建立新的学生成绩文件;输入若干学生纪录,包括姓名、学好、班... 1, 用口令(密码)形式验证管理员身份(可输入3次),合法者可进入,否则程序结束。2, 有关功能说明A.建立...

求C语言高手编写学生信息管理系统
答:求C语言高手编写学生信息管理系统 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息... 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能...