体育资讯网

您现在的位置是:首页 > 分类11 > 正文

分类11

成绩和学籍信息管理系统源码(学籍管理系统的代码)

hacker2022-06-11 20:47:23分类1148
本文目录一览:1、学生学籍管理系统c语言代码(急需,致谢!)

本文目录一览:

学生学籍管理系统c语言代码(急需,致谢!)

这是一个职工管理系统,自己把名称改一改就行了

#includestdio.h

#includeconio.h

#includemalloc.h

#includestring.h

typedef struct ZHIGONG

{

char zhigongNumber[10];/*职工号*/

char zhigongName[20];/*职工姓名*/

char zhigongsex[4]; /*职工性别*/

char zhigongage[10]; /*出生年月*/

char zhigongedu[10];/*学历*/

char zhigongposition[30]; /*职务*/

char zhigongwage[1000]; /*工资*/

struct ZHIGONG *next;

}ZHIGONG;

ZHIGONG *headLink;/*链表表头指针*/

/*以下是函数声明*/

void ReadInfoFormFile(void);

void DesplayMenu(void);

void CreateHeadLink(void);

ZHIGONG *MallocNode(void);

void GetInformation(ZHIGONG *t);

void InsertOneNode(ZHIGONG *t);

void DesplayInfoByzhigongwage(void);

void DesplayInfoByezhigongedu(void);

void DesplayOneNode(ZHIGONG *t);

void DeleteNodeByzhigongNumber(void);

void OutputInformation(void);

void ChangeMarkByzhigongName(void);

void CompositorByTotalzhigongwage(void);

void CompositorByTotalzhigongedu(void);

void SaveLinkToFile(void);

int choose;/*用于接受用户的选择*/

/*主函数*/

void main()

{

CreateHeadLink();

ReadInfoFormFile();

DesplayMenu();

SaveLinkToFile();

}

/************************************

函数功能:从文件中读职工信息到链表中

************************************/

void ReadInfoFormFile(void)

{

FILE *fp;

ZHIGONG *p;

fp=fopen("zhigong.txt","r");

if(!fp)

{

printf("文件不存在\n");

return;

}

p=MallocNode();

while(fscanf(fp,"%s%s%s%s%s%s%s",p-zhigongNumber,p-zhigongName,p-zhigongsex,

p-zhigongage,p-zhigongedu,p-zhigongposition,p-zhigongwage))

{

InsertOneNode(p);

p=MallocNode();

}

fclose(fp);

}

/************************************

函数功能:显示菜单,根据用户的输入

完成相应的功能

************************************/

void DesplayMenu(void)

{

ZHIGONG *p;

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\n");

scanf("%d",choose);/*取得用户的选择*/

switch(choose)

{

case 1:

p=MallocNode();/*先申请一个新结点*/

GetInformation(p);/*要求用户输入信息到新结点中*/

InsertOneNode(p);/*将新结点加到链表中*/

break;

case 2:

OutputInformation();/*显示所有职工的信息*/

break;

case 3:

DesplayInfoByzhigongwage();/*根据用户输入的职工工资显示该职工的信息*/

break;

case 4:

DesplayInfoByezhigongedu(); /*根据用户输入的职工学历显示该职工的信息*/

break;

case 5:

CompositorByTotalzhigongwage();/* 按工资排序*/

break;

case 6:

CompositorByTotalzhigongedu();/* 按学历排序*/

break;

case 7:

DeleteNodeByzhigongNumber();/*根据用户输入的职工号删除该职工信息*/

break;

case 8:

ChangeMarkByzhigongName();/*根据用户输入的职工姓名修改该职工信息*/

break;

case 9:

SaveLinkToFile();/*保存数据后再退出*/

free(headLink);

default:

break;

}

DesplayMenu();/*递归调用*/

}

/************************************

函数功能:建立链表表头

************************************/

void CreateHeadLink(void)

{

ZHIGONG *p;

p=(ZHIGONG*)malloc(sizeof(ZHIGONG));

headLink=p;

p-next=NULL;

}

/****************************************

函数功能:申请一个新结点,并将其初始化

*****************************************/

ZHIGONG *MallocNode(void)

{

ZHIGONG *p;

int i;

p=(ZHIGONG*)malloc(sizeof(ZHIGONG));

if(p==NULL)

return NULL;

for(i=0;i10;i++)

p-zhigongNumber[i]='\0';

for(i=0;i20;i++)

p-zhigongName[i]='\0';

for(i=0;i4;i++)

p-zhigongsex[i]='\0';

for(i=0;i10;i++)

p-zhigongage[i]='\0';

for(i=0;i10;i++)

p-zhigongedu[i]='\0';

for(i=0;i30;i++)

p-zhigongposition[i]='\0';

for(i=0;i1000;i++)

p-zhigongwage[i]='\0';

p-next=NULL;

return p;

}

/************************************

函数功能:取得用户输入的职工信息

************************************/

void GetInformation(ZHIGONG *t)

{

printf("请输入职工号:\n");

scanf("%s",t-zhigongNumber);

printf("请输入职工姓名:\n");

scanf("%s",t-zhigongName);

printf("请输入职工性别:\n");

scanf("%s",t-zhigongsex);

printf("请输入职工出生年月:\n");

scanf("%s",t-zhigongage);

printf("请输入职工学历:\n");

scanf("%s",t-zhigongedu);

printf("请输入职工职位:\n");

scanf("%s",t-zhigongposition);

printf("请输入职工工资:\n");

scanf("%s",t-zhigongwage);

}

/************************************

函数功能:在链表的结尾处增加一个结点

************************************/

void InsertOneNode(ZHIGONG *t)

{

ZHIGONG *p;

p=headLink;

while(p-next)

{

p=p-next;

}

p-next=t;

}

/*************************************************

函数功能:根据用户输入的职工工资显示该职工的信息

**************************************************/

void DesplayInfoByzhigongwage(void)

{

ZHIGONG *p;

char zhigongwage[1000];

char flag=0;

p=headLink-next;

printf("请输入职工的工资:\n");

scanf("%s",zhigongwage);

while(p)

{

if(strcmp(p-zhigongwage,zhigongwage)==0)

{

printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");

DesplayOneNode(p);

flag=1;

break;

}

p=p-next;

}

if(!flag)

printf("对不起,不存在工资为%s的职工\n",zhigongwage);

}

/************************************************

函数功能:根据用户输入的职工学历显示该职工的信息

*************************************************/

void DesplayInfoByezhigongedu(void)

{

ZHIGONG *p;

char zhigongedu[10];

char flag=0;

p=headLink-next;

printf("请输入职工学历:\n");

scanf("%s",zhigongedu);

while(p)

{

if(strcmp(p-zhigongedu,zhigongedu)==0)

{

printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");

DesplayOneNode(p);

flag=1;

break;

}

p=p-next;

}

if(!flag)

printf("对不起,不存在学历为 %s 的职工\n",zhigongedu);

}

/************************************

函数功能:输出一个结点的信息

************************************/

void DesplayOneNode(ZHIGONG *t)

{

printf("%s\t",t-zhigongNumber);

printf("%s\t",t-zhigongName);

printf("%s\t",t-zhigongsex);

printf("%s\t",t-zhigongage);

printf("%s\t",t-zhigongedu);

printf("%s\t",t-zhigongposition);

printf("%s\t\n",t-zhigongwage);

}

/*************************************************

函数功能:根据用户输入的职工号删除该职工的信息

**************************************************/

void DeleteNodeByzhigongNumber(void)

{

char zhigongNumber[10];

ZHIGONG *p,*q;

char flag=0;

printf("请输入要删除的职工的职工号:");

scanf("%s",zhigongNumber);

p=headLink;

q=headLink-next;

while(q)

{

if(strcmp(q-zhigongNumber,zhigongNumber)==0)

{

p-next=q-next;

free(q);

flag=1;

break;

}

p=p-next;

q=q-next;

}

if(!flag)

{

printf("不存在该职工号的职工\n");

return;

}

printf("成功删除\n");

}

/************************************

函数功能:显示所有职工的信息

************************************/

void OutputInformation(void)

{

ZHIGONG *p;

p=headLink-next;

if(p==NULL)

{

printf("现在没有职工信息,请先输入职工信息\n\n");

return;

}

printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");

while(p)

{

DesplayOneNode(p);

p=p-next;

}

}

/*********************************************

函数功能:根据输入的职工姓名修改员工的信息

**********************************************/

void ChangeMarkByzhigongName(void)

{

ZHIGONG *p;

char zhigongName[10];

char flag=0;

char zhigongedu,zhigongwage,zhigongage,zhigongNumber,zhigongsex,zhigongposition;

p=headLink-next;

printf("请输入职工姓名:\n");

scanf("%s",zhigongName);

while(p)

{

if(strcmp(p-zhigongName,zhigongName)==0)

{

printf("请输入新的职工号:\n");

scanf("%s",zhigongNumber);

printf("请输入新的学历:\n");

scanf("%s",zhigongedu);

printf("请输入新的工资:\n");

scanf("%s",zhigongwage);

printf("请输入新的出生年月:\n");

scanf("%s",zhigongage);

printf("请输入新的性别:\n");

scanf("%s",zhigongsex);

printf("请输入新的职位:\n");

scanf("%s",zhigongposition);

strcpy(p-zhigongposition,zhigongposition);

strcpy(p-zhigongsex,zhigongsex);

strcpy(p-zhigongNumber,zhigongNumber);

strcpy(p-zhigongedu,zhigongedu);

strcpy(p-zhigongwage,zhigongwage);

strcpy(p-zhigongage,zhigongage);

flag=1;

printf("修改成功\n");

break;

}

p=p-next;

}

if(!flag)

printf("对不起,不存在姓名为 %s 的职工\n",zhigongName);

}

/************************************

函数功能:保存链表数据到文件中

************************************/

void SaveLinkToFile(void)

{

ZHIGONG *p;

FILE *fp;

p=headLink-next;

if(p==NULL)

{

printf("现在没有职工信息,请先输入职工信息\n\n");

return;

}

fp=fopen("zhigong.txt","w+");

if(!fp)

{

printf("文件不存在\n");

return;

}

while(p)

{

fprintf(fp,"%s%s%s%s%s%s%s",p-zhigongNumber,p-zhigongName,p-zhigongsex,

p-zhigongage,p-zhigongedu,p-zhigongposition,p-zhigongwage);

p=p-next;

}

fclose(fp);

}

/************************************

函数功能:按职工工资排序

************************************/

void CompositorByTotalzhigongwage(void)

{

ZHIGONG exchange,*r,*p,*q;

r=headLink-next;

if(r==NULL)

{

printf("现在还没职工信息,请先输入职工信息\n");

return;

}

while(r)/*两层while循环实现排序*/

{

p=r;

q=r-next;

while(q)

{

if((p-zhigongwage)(p-zhigongwage))

{

strcpy(exchange.zhigongNumber,q-zhigongNumber);/*先复制q结点信息到exchange*/

strcpy(exchange.zhigongName,q-zhigongName);

strcpy(exchange.zhigongsex,q-zhigongsex);

strcpy(exchange.zhigongage,q-zhigongage);

strcpy(exchange.zhigongedu,q-zhigongedu);

strcpy(exchange.zhigongposition,q-zhigongposition);

strcpy(exchange.zhigongwage,q-zhigongwage);

strcpy(q-zhigongNumber,p-zhigongNumber);/*再复制p结点信息到q*/

strcpy(q-zhigongName,p-zhigongName);

strcpy(q-zhigongsex,p-zhigongsex);

strcpy(q-zhigongage,p-zhigongage);

strcpy(q-zhigongedu,p-zhigongedu);

strcpy(q-zhigongposition,p-zhigongposition);

strcpy(q-zhigongwage,p-zhigongwage);

strcpy(p-zhigongNumber,exchange.zhigongNumber);/*最后复制exchange结点信息到p*/

strcpy(p-zhigongName,exchange.zhigongName);

strcpy(p-zhigongsex,exchange.zhigongsex);

strcpy(p-zhigongage,exchange.zhigongage);

strcpy(p-zhigongedu,exchange.zhigongedu);

strcpy(p-zhigongposition,exchange.zhigongposition);

strcpy(p-zhigongwage,exchange.zhigongwage);

}

q=q-next;

}

r=r-next;

}

OutputInformation();

}

/************************************

函数功能:按职工学历排序

************************************/

void CompositorByTotalzhigongedu(void)

{

ZHIGONG exchange,*r,*p,*q;

r=headLink-next;

if(r==NULL)

{

printf("现在还没职工信息,请先输入职工信息\n");

return;

}

while(r)/*两层while循环实现排序*/

{

p=r;

q=r-next;

while(q)

{

if((q-zhigongedu)(p-zhigongedu))

{

strcpy(exchange.zhigongNumber,q-zhigongNumber);/*先复制q结点信息到exchange*/

strcpy(exchange.zhigongName,q-zhigongName);

strcpy(exchange.zhigongsex,q-zhigongsex);

strcpy(exchange.zhigongage,q-zhigongage);

strcpy(exchange.zhigongedu,q-zhigongedu);

strcpy(exchange.zhigongposition,q-zhigongposition);

strcpy(exchange.zhigongwage,q-zhigongwage);

strcpy(q-zhigongNumber,p-zhigongNumber);/*再复制p结点信息到q*/

strcpy(q-zhigongName,p-zhigongName);

strcpy(q-zhigongsex,p-zhigongsex);

strcpy(q-zhigongage,p-zhigongage);

strcpy(q-zhigongedu,p-zhigongedu);

strcpy(q-zhigongposition,p-zhigongposition);

strcpy(q-zhigongwage,p-zhigongwage);

strcpy(p-zhigongNumber,exchange.zhigongNumber);/*最后复制exchange结点信息到p*/

strcpy(p-zhigongName,exchange.zhigongName);

strcpy(p-zhigongsex,exchange.zhigongsex);

strcpy(p-zhigongage,exchange.zhigongage);

strcpy(p-zhigongedu,exchange.zhigongedu);

strcpy(p-zhigongposition,exchange.zhigongposition);

strcpy(p-zhigongwage,exchange.zhigongwage);

}

q=q-next;

}

r=r-next;

}

OutputInformation();

}

求一个用C++语言写的学生信息管理系统源代码

#includeiostream

#includestring

#includefstream

#includeconio.h

#includewindows.h

using namespace std;

/////////////////////////////////////

// 抽象基类 //

///////////////////////////////////

class Base

{

protected:

int id;//本科生,研究生识别

int num;

char name[20];

char sex[5];

double ch,en,ma;//成绩

int borth;

public:

Base();

virtual int getid()=0;//本科生,研究生识别

virtual void set()=0;//纯虚函数,在派生类中调用

virtual void display()=0;

double getsum();//取总成绩

char * getsex();//取性别

double getch();//取各科成绩

double geten();

double getma();

int getborth();

int getnum();//取学号

char* getname();//取姓名

};

Base::Base()//基类构造

{

num=0;

strcpy(name,"No name");

ch=0;en=0;ma=0;

borth=1900;

}

int Base::getborth()

{return borth;}

double Base::getsum()

{return ch+en+ma;}

double Base::getch()

{return ch;}

double Base::geten()

{return en;}

double Base::getma()

{return ma;}

int Base::getnum()

{return num;}

char *Base::getsex()

{return sex;}

char * Base::getname()

{return name;}

/////////////////////////////////////

// 本科生类 //

///////////////////////////////////

class College:public Base//本科生类

{

private:

int id;//本科生识别

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();

}

自己一改就能用,给我加分哈!

求简单一点的学生成绩管理系统源代码,谢谢

已经算是很简单的了

#include time.h

#includestdio.h

#includeconio.h

#include stdlib.h

#includestring.h

#define MAX 80

void input();

void sort();

void average();

void find();

void total();

int now_no=0;

struct student

{

int no;

char name[20];

char sex[4];

float score1;

float score2;

float score3;

float sort;

float sum;

};

struct student stu[MAX],*p;

void main()/*主函数*/

{

int as;

/*一下为功能选择模块*/

do

{

printf("\n\t\t\t欢迎使用学生成绩管理系统\n");

printf("\n\t\t\t\t1.信息输入(INPUT)\n\t\t\t\t2.总分统计(COUNT)\n\t\t\t\t3.总分排序(SORT)\n\t\t\t\t4.查询(QUERY)\n");

printf("\t\t\t\t选择功能选项:");

fflush(stdin);

scanf("%d",as);

switch(as)

{

case 1:system("cls");input();break;

case 2:system("cls");total();break;

case 3:system("cls");sort();break;

case 4:system("cls");find();break;

default:break;

}

}while(1);

/*至此功能选择结束*/

}

void input()/*原始数据录入模块*/

{

int i=0;

char ch;

do

{

printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);

printf("\n输入学生学号:");

scanf("%d",stu[i].no);

fflush(stdin);

printf("\n输入学员姓名:");

fflush(stdin);

gets(stu[i].name);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学员成绩(FOX):");

fflush(stdin);

scanf("%f",stu[i].score1);

printf("\n输入学员成绩(C):");

fflush(stdin);

scanf("%f",stu[i].score2);

printf("\n输入学员成绩(ENGLISH):");

fflush(stdin);

scanf("%f",stu[i].score3);

printf("\n\n");

i++;

now_no=i;

printf("是否继续输入?(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!='n'ch!='N');

system("cls");

}

void sort()/*排序数据函数*/

{

struct student temp;

int i,j;

char as;

for(i=0;inow_no;i++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

}

for(i=1;inow_no;i++)

{

for(j=1;j=now_no-i;j++)

{

if(stu[j-1].sumstu[j].sum)

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

do{

for(i=0;inow_no;i++)

{

printf("\t\t\t班级学员信息列表\n");

printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n");

for(i=0;inow_nostu[i].name[0];i++)

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);

}

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void find()/*查询函数*/

{

int i,str;

char as;

do

{

printf("输入要查询的学生学号:");

fflush(stdin);

scanf("%d",str);

for(i=0;inow_no;i++)

if(stu[i].no==str)

{

printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\n");

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3);

}

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void total()/*求总分*/

{

int i;

char as;

for(i=0;inow_no;i++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

}

do{

for(i=0;inow_no;i++)

{

printf("\t\t\t班级学员信息列表\n");

printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n");

for(i=0;inow_nostu[i].name[0];i++)

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);

}

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

求学生成绩管理系统的源代码

#include stdio.h

#include stdlib.h

#define FILENAME "student.dat"

typedef enum{MAN, WOMAN} SEX;

typedef struct tagStudent

{

int num; //学生的编号

char name[20]; //学生的姓名

SEX sex; //学生的性别

int age; //学生的年龄

char major[20]; //学生的专业

struct tagStudent *next;//下一个节点的指针

}STUDENT, *PSTUDENT;

STUDENT g_head; //头节点

//1.显示菜单

void ShowMenu();

//2.获取用户选择的菜单的编号

int GetMenuChoose();

//3.创建一个节点,它会返回一个新创建的学生信息节点的指针

PSTUDENT CreateStudent();

//4.把学生信息节点加入到链表中

int AddStudent(PSTUDENT pstu);

//5.返回指定编号学生节点的上一个节点的指针

PSTUDENT GetPrevAddr(int num);

//6.显示所有学生信息

void ShowAll();

//7.显示信息数量

int ShowStudentCount();

//8.修改学生信息,参数为要修改的学生的编号

void ModityStudent(int num);

//9.获取用户的选择

int Question(const char *pstr);

//10.获取用户输入的学生的编号

int GetInputNum();

//11.删除编号为num的学生信息

void DelStudent(int num);

//12.删除所有的学生信息

void DelAll();

//13.把学生信息保存到文件当中

void SaveToFile();

//14.从文件中读取学生信息

void LoadFromFile();

int main()

{

int running = 1;

while(running)

{

switch(GetMenuChoose())

{

case 0:

running = 0;

break;

case 1:

// printf("你选择了菜单1\n");

AddStudent(CreateStudent());

break;

case 2:

// printf("你选择了菜单2\n");

DelStudent(GetInputNum());

break;

case 3:

printf("你选择了菜单3\n");

break;

case 4:

// printf("你选择了菜单4\n");

ModityStudent(GetInputNum());

break;

case 5:

// printf("你选择了菜单5\n");

DelAll();

break;

case 6:

// printf("你选择了菜单6\n");

ShowAll();

break;

case 7:

// printf("你选择了菜单7\n");

ShowStudentCount();

break;

case 8:

// printf("你选择了菜单8\n");

LoadFromFile();

break;

case 9:

// printf("你选择了菜单9\n");

SaveToFile();

break;

}

system("pause");

}

return 0;

}

//1.显示菜单

void ShowMenu()

{

system("cls");

printf("-----------------------------学生管理系统--------------------------------\n");

printf("\n\t1.添加学生信息    2.删除某个学生信息    3.显示某个学生信息\n");

printf("\t4.修改学生信息    5.删除所有学生信息    6.显示所有学生信息\n");

printf("\t7.显示信息数量    8.读取文件学生信息    9.保存学生信息至文件\n");

printf("\t0.退出系统\n");

printf("\n-------------------------------------------------------------------------\n");

}

//2.获取用户选择的菜单的编号

int GetMenuChoose()

{

int num;//保存用户选择的菜单编号

ShowMenu();

printf("请选择菜单(0 ~ 9):");

while(1 != scanf("%d", num) || num  0 || num  9)

{

ShowMenu();

printf("选择菜单错误,请重新选择(0 ~ 9):");

fflush(stdin);//清空输入缓冲区

}

return num;

}

//3.创建一个节点,它会返回一个新创建的学生信息节点的指针

PSTUDENT CreateStudent()

{

int sex;

PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息

if(!pstu)

{

printf("申请内存空间失败!\n");

return NULL;

}

printf("请输入学生的编号(整型):");

while(1 != scanf("%d", pstu-num) || GetPrevAddr(pstu-num))

{

printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");

fflush(stdin);

}

printf("请输入学生的姓名(小于20字符):");

scanf("%20s", pstu-name);//(*pstu).name

printf("请选择学生的性别(1.男  2.女):");

while(1 != scanf("%d", sex) || sex  1 || sex  2)

{

printf("性别选择错误,请重新选择学生的性别(1.男  2.女):");

fflush(stdin);

}

if(1 == sex)

pstu-sex = MAN;

else

pstu-sex = WOMAN;

printf("请输入学生的年龄(10 ~ 40):");

while(1 != scanf("%d", pstu-age) || pstu-age  10 || pstu-age  40)

{

printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");

fflush(stdin);

}

printf("请输入学生的专业(小于20字符):");

scanf("%20s", pstu-major);

pstu-next = NULL;

return pstu;

}

//4.把学生信息节点加入到链表中

int AddStudent(PSTUDENT pstu)

{

PSTUDENT ps = g_head;

if(!pstu)

{

return 0;

}

//判断一下该学生信息是不是已经存在

if(GetPrevAddr(pstu-num))

{

printf("编号为%d的学生信息已经存在!\n", pstu-num);

free(pstu);//释放该节点内存空间

return 0;

}

//while循环的作用是找到当前链表的最后一个节点

while(ps-next)

ps = ps-next;

//把新节点加入到最后那个节点的后面

ps-next = pstu;

pstu-next = NULL;

return 1;

}

//5.返回指定编号学生节点的上一个节点的指针

PSTUDENT GetPrevAddr(int num)

{

PSTUDENT pstu = g_head;

while(pstu-next)

{

if(pstu-next-num == num)

return pstu;

pstu = pstu-next;

}

return NULL;

}

//6.显示所有学生信息

void ShowAll()

{

PSTUDENT pstu = g_head;

printf("--------------------------------------------------------------------\n");

printf("  编号        姓名            性别     年龄               专业\n");

printf("--------------------------------------------------------------------\n");

while(pstu-next)

{

printf("  %-8d  ", pstu-next-num);

printf("%-20s", pstu-next-name);

printf("%-6s", pstu-next-sex == MAN ? "男" : "女");

printf("%4d", pstu-next-age);

printf("%20s\n", pstu-next-major);

pstu = pstu-next;//让指针指向下一个节点

}

printf("--------------------------------------------------------------------\n");

}

//7.显示信息数量

int ShowStudentCount()

{

int count = 0;

PSTUDENT pstu = g_head;

while(pstu-next)

{

++count;

pstu = pstu-next;

}

printf("\n当前共有%d位学生信息。\n", count);

return count;

}

//8.修改学生信息,参数为要修改的学生的编号

void ModityStudent(int num)

{

PSTUDENT pstu = GetPrevAddr(num);//获取要修改的学生节点的上一个节点

int choose;

if(!pstu)

{

printf("没有编号为%d的学生信息。\n", num);

return;

}

pstu = pstu-next;//将要修改的学员节点的指针改为指向自己的

printf("当前学生的姓名为%s,", pstu-name);

if(Question("确定要修改吗?"))

{

printf("请输入学生的姓名(小于20字符):");

scanf("%20s", pstu-name);

}

printf("当前学生的性别为%s,", pstu-sex == MAN ? "男" : "女");

if(Question("确定要修改吗?"))

{

printf("请输入学生的性别(1.男 2.女):");

while(1 != scanf("%d", choose) || choose  1 || choose  2)

{

printf("输入错误,请重新输入学生的性别(1.男 2.女):");

fflush(stdin);

}

if(1 == choose)

pstu-sex = MAN;

else

pstu-sex = WOMAN;

}

printf("当前学生的年龄为%d,", pstu-age);

if(Question("确定要修改吗?"))

{

printf("请输入学生的年龄(10 ~ 40):");

while(1 != scanf("%d", pstu-age) || pstu-age  10 || pstu-age  40)

{

printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");

fflush(stdin);

}

}

printf("当前学生的专业为%s,", pstu-major);

if(Question("确定要修改吗?"))

{

printf("请输入学生的专业(小于20字符):");

scanf("%20s", pstu-major);

}

printf("修改完毕!\n");

}

//9.获取用户的选择

int Question(const char *pstr)

{

char answer;

printf("%s请选择(y or n):", pstr);

while(1 != scanf(" %c", answer) || (answer != 'y'  answer != 'n'))

{

printf("输入错误!%s请重新选择(y or n):", pstr);

fflush(stdin);//清空输入缓冲区,C库函数

}

if('y' == answer)

return 1;

else

return 0;

}

//10.获取用户输入的学生的编号

int GetInputNum()

{

int num;

printf("请输入学生的编号(整型):");

while(1 != scanf("%d", num))

{

printf("编号输入错误!请重新输入学生的编号(整型):");

fflush(stdin);

}

return num;

}

//11.删除编号为num的学生信息

void DelStudent(int num)

{

PSTUDENT pstu, ptmp;

if(pstu = GetPrevAddr(num))

{

if(!Question("确定要删除该学生信息吗?"))

{

return;

}

ptmp = pstu-next;

pstu-next = ptmp-next;

free(ptmp);

printf("删除了编号为%d的学生信息。\n", num);

}

else

{

printf("没有找到编号为%d的学生信息。\n", num);

}

}

//12.删除所有的学生信息

void DelAll()

{

PSTUDENT pstu = g_head.next, ptmp;

int count = 0;

if(!Question("确定要删除当前所有的学生信息吗?"))

{

return;

}

while(pstu)

{

ptmp = pstu;

pstu = pstu-next;

free(ptmp);

++count;

}

printf("共删除了%d位学生信息。\n", count);

g_head.next = NULL;

}

//13.把学生信息保存到文件当中

void SaveToFile()

{

FILE *pf = fopen(FILENAME, "wb");

PSTUDENT pstu = g_head;

int i = 0, count = ShowStudentCount();

if(!pf)

{

printf("打开待写入的文件失败!\n");

return;

}

if(!Question("确定要将当前学生信息保存到文件中吗?"))

{

fclose(pf);

return;

}

fwrite(count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头

while(pstu-next)

{

fwrite(pstu-next, 1, sizeof(STUDENT), pf);//把每位学生信息写入文件

++i;

pstu = pstu-next;

}

fclose(pf);

if(i == count)

{

printf("成功的写入了%d条学生信息。\n", count);

}

else

{

printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);

}

}

//14.从文件中读取学生信息

void LoadFromFile()

{

int i, count = 0, repeat = 0;

FILE *pf;

PSTUDENT pstu;

printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");

if((pf = fopen(FILENAME, "rb")) == NULL)

{

printf("文件还没有创建,请手工输入学生信息并保存吧!\n");

return;

}

DelAll();//删除之前的所有学生信息,然后从文件中读取

fread(count, 1, sizeof count, pf);//获取学生信息的数量

for(i = 0; i  count; ++i)

{

pstu = (PSTUDENT)malloc(sizeof(STUDENT));

fread(pstu, 1, sizeof(STUDENT), pf);

if(!AddStudent(pstu))

{

++repeat;//保持有多少个和当前链表中相重复的学生信息

}

}

fclose(pf);

printf("文件读取完毕!新增学生信息%d条。\n", count - repeat);

}

这个累死我了,我要财富值。。。为了这个不容易啊

发表评论

评论列表

  • 依疚颜于(2022-06-12 07:20:36)回复取消回复

    xt; } printf("\n当前共有%d位学生信息。\n", count); return count;}//8.修改学生信息,参数为要修改的学生的编号void M

  • 惑心野慌(2022-06-12 02:02:50)回复取消回复

    GetInputNum();//11.删除编号为num的学生信息void DelStudent(int num);//12.删除所有的学生信息void DelAll();//13.把学生信息保存到文件当中void SaveToFile();//14.从文件中读取学生信息voi

  • 囤梦淤浪(2022-06-11 23:41:37)回复取消回复

    zhigongposition); printf("%s\t\n",t-zhigongwage); } /*******************************************

  • 冬马猫卆(2022-06-12 05:42:40)回复取消回复

    数功能:在链表的结尾处增加一个结点 ************************************/ void InsertOneNode(ZHIGONG *t) { ZHIGONG *p; p=headLink