学生管理系统报告源码_学生宿舍管理系统源码

hacker|
104

文章目录:

学生信息管理系统最简单源代码。

方法一:

1、创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。

2、然后编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。

3、然后在源文件中创建main源文件和Stu源文件。再main文件中写入intmian()代码。

4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。

5、在Stu源文件的Init函数用printf语句,将学生管理系统输出。再创建链表的头节点head。

6、然后用switch函数对操作进行判断。再执行数据结构的增删改查功能。这样一个学生管理系统的基本框架就完成了。

方法二:

1、新建一个学生实体类,用于存放学生的各项信息。

2、新建一个链表节点类,每个节点存放一个学生信息及下一个节点的引用。

3、添加一个主操作类,并添加本系统的菜单方法。

4、定义链表的头节点,当前最后一个节点,以及主控制逻辑信息。

5、使用io流逐行读取存有学生信息的文本文件,对每行字符串,采用\t分割后得到一个字符串数组,数据各项即为一个学生的具体信息。然后新建一个节点加入到链表。

6、运行结果:

学生管理系统源代码c++

#include iostream.h

#include string.h

#include "h1.h"

void menu();

void clear()

{

cin.clear();

cin.ignore();

}

void stu::init_name_grade() //输入学生姓名、班级

{

cout"请输入学生姓名:";

cinname;

clear();

cout"请输入学生班级号:";

cingrade;

clear();

}

void stu::init_first() //输入学生第一学期成绩

{

cout"学生"name"第一学期成绩"endl;

cout"请输入英语成绩:";

cinfirst.english;

clear();

cout"请输入数学成绩:";

cinfirst.math;

clear();

first.total=first.english+first.math;

first.aver=first.total/2;

}

void stu::init_second() //输入学生第二学期成绩

{

cout"学生"name"第二学期成绩"endl;

cout"请输入英语成绩:";

cinsecond.english;

clear();

cout"请输入数学成绩:";

cinsecond.math;

clear();

second.total=second.english+second.math;

second.aver=second.total/2;

}

void stu::show_first() //显示学生第一学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第一学期英语成绩:"first.englishendl;

cout"学生第一学期数学成绩:"first.mathendl;

cout"学生第一学期总成绩:"first.totalendl;

cout"学生第一学期平均成绩:"first.averendl;

}

void stu::show_second() //显示学生第二学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第二学期英语成绩:"second.englishendl;

cout"学生第二学期数学成绩:"second.mathendl;

cout"学生第二学期总成绩:"second.totalendl;

cout"学生第二学期平均成绩:"second.averendl;

}

void stu::show_grade() //显示学生所有学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第一学期英语成绩:"first.englishendl;

cout"学生第一学期数学成绩:"first.mathendl;

cout"学生第一学期总成绩:"first.totalendl;

cout"学生第一学期平均成绩:"first.averendl;

cout"学生第二学期英语成绩:"second.englishendl;

cout"学生第二学期数学成绩:"second.mathendl;

cout"学生第二学期总成绩:"second.totalendl;

cout"学生第二学期平均成绩:"second.averendl;

}

stu_info::stu_info() //stu_info的构造函数

{

num=0;

}

void stu_info::add_name_grade() //添加学生信息(班级、姓名)到数组中

{

int choose;

do

{

per[num].init_name_grade();

num++;

cout"继续输入学生信息吗?(0:退出,任意数字键继续...)";

cinchoose;

clear();

}while(choose!=0);

}

void stu_info::add_first(int gra) //添加第一学期成绩

{

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].init_first();

}

}

}

void stu_info::add_second(int gra) //添加第二学期成绩

{

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].init_second();

}

}

}

void stu_info::query_aver(int gra,int term) //按班级、学期及平均分排序显示学生成绩

{

stu temp[100];

stu t;

int sum=0;

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

temp[sum]=per[i];

sum++;

}

}

for(int j=0;jsum-1;j++)

{

for(int k=sum-1;kj;k--)

{

if(term==1)

{

if(temp[k].first.avertemp[k-1].first.aver)

{

t=temp[k];

temp[k]=temp[k-1];

temp[k-1]=t;

}

}

else if(term==2)

{

if(temp[k].second.avertemp[k-1].second.aver)

{

t=temp[k];

temp[k]=temp[k-1];

temp[k-1]=t;

}

}

else

{

cout"该学期不存在!"endl;

return;

}

}

}

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

{

if(term==1)

{

temp[i].show_first();

}

else

{

temp[i].show_second();

}

}

}

void stu_info::modify(int gra,char name[10]) //按班级、姓名查询学生信息并修改学生信息

{

for(int i=0;inum;i++)

{

if(per[i].grade==grastrcmp(per[i].name,name)==0)

{

per[i].init_name_grade();

per[i].init_first();

per[i].init_second();

return;

}

else

{

cout"该学生不存在!"endl;

}

}

}

void stu_info::query(int gra,char name[10]) //按班级、姓名查询学生信息并输出

{

for(int i=0;inum;i++)

{

if(per[i].grade==grastrcmp(per[i].name,name)==0)

{

per[i].show_grade();

return;

}

else

{

cout"该学生不存在!"endl;

}

}

}

void stu_info::query_grade(int gra) //按班级输出该班全部学生成绩

{

coutgra"班级学生的成绩如下:"endl;

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].show_grade();

}

}

}

void stu_info::show_fail(int grade,int term,int course)

{

cout"不及格名单如下:"endl;

for(int i=0;inum;i++)

{

if(per[i].grade==grade)

{

if(term==1)

{

if(course==1)

{

if(per[i].first.english60)

{

coutper[i].nameendl;

}

}else if(course==2)

{

if(per[i].first.math60)

{

coutper[i].nameendl;

}

}

}

else if(term==2)

{

if(course==1)

{

if(per[i].second.english60)

{

coutper[i].nameendl;

}

}else if(course==2)

{

if(per[i].second.math60)

{

coutper[i].nameendl;

}

}

}

else

{

cout"该学期不存在!"endl;

return;

}

}

}

}

void main()

{

stu_info people;

int grade;

int term;

int choose;

int course;

char name[10];

while(1)

{

menu();

cinchoose;

clear();

switch(choose)

{

case 1:

people.add_name_grade();break;

case 2:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

if(term==1)

people.add_first(grade);

else

people.add_second(grade);

break;

case 3:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学生姓名:";

cinname;

clear();

people.modify(grade,name);

break;

case 4:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

people.query_aver(grade,term);

break;

case 5:

cout"请输入班级号:";

cingrade;

clear();

people.query_grade(grade);

break;

case 6:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

cout"请输入课程号(1:english,2:math):";

cincourse;

people.show_fail(grade,term,course);

break;

case 7:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学生姓名:";

cinname;

clear();

people.query(grade,name);

break;

case 8:return;

default:cout"选择错误,请重新选择!"endl;

}

}

}

void menu()

{

cout" 请选择操作"endl;

cout"-------------------------------------------------------------"endl;

cout" 1、输入学生姓名、班级"endl;

cout" 2、按学期、班级录入学生成绩"endl;

cout" 3、修改学生成绩"endl;

cout" 4、按班级平均分对学生成绩排序"endl;

cout" 5、按班级输出学生的成绩单"endl;

cout" 6、按科目输出不及格学生名单"endl;

cout" 7、查询学生成绩单"endl;

cout" 8、退出系统"endl;

}

这上面是实现功能,下面是类的定义和声明 希望对你有用

struct term

{

int english;

int math;

int aver;

int total;

};

class stu

{

char name[10];

int grade;

struct term first;

struct term second;

public:

friend class stu_info;

void init_name_grade();

void init_first();

void init_second();

void show_grade();

void show_first();

void show_second();

};

class stu_info

{

stu per[100];

int num;

public:

stu_info();

void add_name_grade();

void add_first(int gra);

void add_second(int gra);

void query_aver(int gra,int term);

void modify(int gra,char name[10]);

void query(int gra,char name[10]);

void query_grade(int gra);

void show_fail(int grade,int term,int course);

};

学生信息管理系统源代码

void Sort(student *head, char type,char maxOrMin)

{

/*参数说明:

type=='1' 按 语文 排列

type=='2' 按 数学 排列

type=='3' 按 英语 排列

type=='4' 按 总分 排列

type=='5' 按 平均分 排列

type=='6' 按 座号 排列

*/

student *pHead,*pH;

pHead=pH=head;

int len=GetLength(head);

float *array=new float[len];

int i;

int x=0;

float num=0;

while(head)

{

Count(head);

if(type=='1')

{

num=head-chinaNum;

}

else if(type=='2')

{

num=head-mathNum;

}

else if(type=='3')

{

num=head-englishNum;

}

else if(type=='4')

{

num=head-result;

}

else if(type=='5')

{

num=head-average;

}

else if(type=='6')

{

num=head-num;

}

array[x]=num;

x++;

head=head-next;

}

head=pHead;

if(maxOrMin=='1')

{

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

{

for(int j=0; jlen-i; j++)

{

if(array[j]array[j+1])

{

float num;

num=array[j];

array[j]=array[j+1];

array[j+1]=num;

}

}

}

}

else

{

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

{

for(int j=0; jlen-i; j++)

{

if(array[j]array[j+1])

{

float num;

num=array[j];

array[j]=array[j+1];

array[j+1]=num;

}

}

}

}

int pos=1;

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

{

head=pHead;

while(head)

{

if(type=='1')

{

num=head-chinaNum;

}

else if(type=='2')

{

num=head-mathNum;

}

else if(type=='3')

{

num=head-englishNum;

}

else if(type=='4')

{

num=int(head-result);

}

else if(type=='5')

{

num=int(head-average);

}

else if(type=='6')

{

num=int(head-num);

}

int n=0;

if(int(array[i])==int(num))

{

if(int(array[i])!=int(array[i+1]))

{

if(n==0)

{

n=pos;

}

head-pos=pos;

pos++;

}

else

{

head-pos=n;

}

}

head=head-next;

}

}

head=pH;

delete []array;

}

void Count(student *head)

{

head-result=head-chinaNum+head-englishNum+head-mathNum;

head-average=head-result/3;

}

void DeleteAll(student* head)

{

student *cp,*np;

cp=head;

while(cp)

{

np=cp-next;

delete cp;

cp=np;

}

head=NULL;

}

void ChaXun(string str,student *head)

{

Sort(head,'4','1');

cout"欢迎使用查询功能"endlendl;

cout"请输入你要按什么查询 1-一般查询 2-查找最多 3-查找最少"endl;

string s;

cins;

while(s[0]!='1's[0]!='2's[0]!='3')

{

cout"你输入错误,请重新输入."endl;

cins;

}

if(s[0]=='1')

{

cout"按什么查询?"endl;

cout"1-姓名 2-座号 3-语文成绩 4-数学成绩 "

"5-英语成绩 6-总分 7-平均分 8-排名"endl;

cinstr;

while(str[0]!='1' str[0]!='2'

str[0]!='3' str[0]!='4'

str[0]!='5' str[0]!='6'

str[0]!='7' str[0]!='8' )

{

cout"你输入错误,请重新输入."endl;

cinstr;

}

char findStr[30];

cout"请输入要查找的关键字或关键数:"endl;

cinfindStr;

switch(str[0])

{

case '1':

Find(head,findStr,'1');

break;

case '2':

Find(head,findStr,'2');

break;

case '3':

Find(head,findStr,'3');

break;

case '4':

Find(head,findStr,'4');

break;

case '5':

Find(head,findStr,'5');

break;

case '6':

Find(head,findStr,'6');

break;

case '7':

Find(head,findStr,'7');

break;

case '8':

Find(head,findStr,'8');

break;

}

}

else if(s[0]=='2')

{

cout"请输入要按什么查询?"endl;

cout"1-语文成绩 2-数学成绩 "

"3-英语成绩 4-总分 5-平均分 6-排名"endl;

string s;

cins;

switch(s[0])

{

case '1':

FindMaxOrMin(head,'1','1');

break;

case '2':

FindMaxOrMin(head,'2','1');

break;

case '3':

FindMaxOrMin(head,'3','1');

break;

case '6':

FindMaxOrMin(head,'6','1');

break;

case '5':

FindMaxOrMin(head,'5','1');

break;

default:

FindMaxOrMin(head,'4','1');

break;

}

}

else if(s[0]=='3')

{

cout"请输入要按什么查询?"endl;

cout"1-语文成绩 2-数学成绩 "

"3-英语成绩 4-总分 5-平均分 6-排名"endl;

string s;

cins;

switch(s[0])

{

case '1':

FindMaxOrMin(head,'1','2');

break;

case '2':

FindMaxOrMin(head,'2','2');

break;

case '3':

FindMaxOrMin(head,'3','2');

break;

case '6':

FindMaxOrMin(head,'6','2');

break;

case '5':

FindMaxOrMin(head,'5','2');

break;

default:

FindMaxOrMin(head,'4','2');

break;

}

}

}

void ZengJia(string str, student* head)

{

student *pNew=new student;

cout"欢迎使用增加功能"endlendl;

cout"请输入新学生的名字 :"endl;

cinpNew-name;

cout"请输入新学生的座号 :"endl;

cinpNew-num;

cout"请输入他的语文分数 :"endl;

cinpNew-chinaNum;

cout"请输入他的数学分数"endl;

cinpNew-mathNum;

cout"请输入他的英语分数"endl;

cinpNew-englishNum;

cout"插入记录的 (1-最前面 2-最后面)"endl;

cinstr;

while(str[0]!='1' str[0]!='2')

{

cout"你输入错误,请重新输入."endl;

cout"插入记录的 (1-最前面 2-最后面)"endl;

cinstr;

}

if(str[0]=='1')

{

InsertFront(head,pNew);

}

else if(str[0]=='2')

{

InsertRear(head,pNew);

}

cout"新学生增加成功."endl;

}

void ShanChu(string str, student *head)

{

char delStr[30];

cout"欢迎使用删除功能"endlendl;

cout"1-查询删除 2-全部删除"endl;

cinstr;

while(str[0]!='1' str[0]!='2')

{

cout"输入错误,请重新输入."endl;

cinstr;

}

if(str[0]=='1')

{

cout"请输入要删除的关键字"endl;

cindelStr;

cout"1-删除第一条找到的记录 2-删除所有找到的记录"endl;

cinstr;

while(str[0]!='1'str[0]!='2')

{

cout"你输入错误,请重新输入."endl;

cinstr;

}

cout"你真的要删除吗? 1-删除 2-取消"endl;

string s;

cins;

if(str[0]=='1')

{

if(str[0]=='1')

{

Delete(head,delStr,1);

}

else

{

Delete(head,delStr,2);

}

}

else

{

cout"你已经取消删除了."endl;

}

}

else

{

cout"你真的要删除全部数据吗?这样会使你的数据全部丢失哦."endl;

cout"1-全部删除 2-取消删除"endl;

cinstr;

if(str[0]=='1')

{

DeleteAll(head);

}

else

{

cout"你已经取消删除了."endl;

}

}

}

void PaiMing(string str, student* head)

{

string s;

cout"欢迎使用排名功能"endlendl;

cout"排名选择: 1-升序 2-降序"endl;

cins;

cout"请输入要按什么排名?"endl;

cout"1-语文成绩 2-数学成绩 3-英语成绩 "

"4-总分 5-平均分 6-座号"endl;

cinstr;

while(str[0]!='1' str[0]!='2'

str[0]!='3' str[0]!='4'

str[0]!='5' str[0]!='6' )

{

cout"你输入错误,请重新输入."endl;

cinstr;

}

cout"姓名:"setw(8)"座号:"setw(10)

"语文分数:"setw(10) "数学分数:"

setw(10)"英语分数:"setw(8)"总分数:"

setw(8)"平均分:"setw(6)"名次:"endlendl;

if(s[0]=='2')

{

switch(str[0])

{

case '1':

Sort(head,'1','1');

break;

case '2':

Sort(head,'2','1');

break;

case '3':

Sort(head,'3','1');

break;

case '4':

Sort(head,'4','1');

break;

case '5':

Sort(head,'5','1');

break;

case '6':

Sort(head,'6','1');

break;

}

}

else

{

switch(str[0])

{

case '1':

Sort(head,'1','2');

break;

case '2':

Sort(head,'2','2');

break;

case '3':

Sort(head,'3','2');

break;

case '4':

Sort(head,'4','2');

break;

case '5':

Sort(head,'5','2');

break;

case '6':

Sort(head,'6','2');

break;

}

}

ShowList(head);

return ;

}

void XianShi(string str, student *head)

{

Sort(head,'4','1');

string s;

cout"欢迎使用显示功能"endl;

cout"1-显示全部记录 2-显示记录数目"endl;

cins;

if(s[0]=='2')

{

cout"记录的数目是:"GetLength(head)endl;

}

else

{

ShowList(head);

}

}

void XuiGai(string str, student *head)

{

string s;

student *std;

cout"欢迎使用修改功能"endl;

cout"请输入你要按什么查询"endl;

cout"1-姓名 2-座号 3-语文成绩 4-数学成绩 "

"5-英语成绩 "endl;

cinstr;

while(str[0]!='1' str[0]!='2'

str[0]!='3' str[0]!='4'

str[0]!='5' )

{

cout"你输入错误,请重新输入."endl;

cinstr;

}

char findStr[30];

cout"请输入要查找的关键字或关键数:"endl;

cinfindStr;

switch(str[0])

{

case '1':

std=Find(head,findStr,'1');

Reword(std);

break;

case '2':

std=Find(head,findStr,'2');

Reword(std);

break;

case '3':

std=Find(head,findStr,'3');

Reword(std);

break;

case '4':

std=Find(head,findStr,'4');

Reword(std);

break;

case '5':

std=Find(head,findStr,'5');

Reword(std);

break;

}

Write(head);

if(std!=NULL)

{

cout"修改成功."endl;

}

}

int Run()

{

bool isLoad=false;

student* head=NULL;

student *pNew=new student;

head=Read();

SetTitle(false);

if(head!=NULL)

{ Sort(head,'5','1');

Count(head);

}

string str;

SetTitle(false);

cout" 欢迎使用学生管理系统 "endlendl;

cout" 1-用户登陆 2-退出程序 "endl;

cinstr;

if(str[0]=='2')

{

AboutMe();

return 0;

}

else

{

isLoad=Enter('1');

system("cls");

if(isLoad==true)

{

SetTitle(true);

cout" 恭喜,您输入的密码正确.可以对本系统的进行任何操作."endl;

}

else

{

cout" Sorry,您输入的密码错误.你不能修改本系统的任何内容."endl;

}

}

begin:

coutendlendl;

cout" 欢迎使用学生管理系统 "endlendl;

cout" 1-增加功能 2-查询功能"endl;

cout" 3-删除功能 4-排名功能"endl;

cout" 5-显示功能 6-修改功能"endl;

cout" 7-用户设置 8-退出程序"endl;

cout"请输入您的选择: "endl;

cinstr;

while(str[0]!='8')

{

if(isLoad==true head!=NULL)

{

coutendlendl;

if(str[0]=='1')

{

ZengJia(str, head);

Sort(head,'4','1');

Write(head);

}

else if(str[0]=='2')

{

ChaXun(str,head);

}

else if(str[0]=='3')

{

ShanChu(str,head);

Sort(head,'4','1');

Write(head);

}

else if(str[0]=='4')

{

PaiMing(str,head);

}

else if(str[0]=='5')

{

XianShi(str,head);

}

else if(str[0]=='6')

{

XuiGai(str,head);

Write(head);

}

else if(str[0]=='7')

{

cout"欢迎使用用户修改功能"endl;

isLoad=Enter('2');

}

else if(str[0]=='8')

{

AboutMe();

return 0;

}

else

{

cout"你输入错误,请重新输入."endl;

goto begin;

}

}

else if(isLoad==false head!=NULL)

{

if(str[0]=='2')

{

ChaXun(str,head);

}

else if(str[0]=='4')

{

PaiMing(str,head);

}

else if(str[0]=='5')

{

XianShi(str,head);

}

else

{

cout"你不是管理员,不能进行此项功能."endl;

cout"你只能进行 查询功能 显示功能 排名功能"endl;

}

}

else if( head==NULL isLoad==true)

{

cout"系统检查到你没有任何记录,不能进行任何操作,只能增加记录."endl;

ZengJia(str, head);

Write(head);

head=Read();

}

else if( head==NULL isLoad==false)

{

cout"因为你没有登陆,系统又检查到你没有任何记录,你不能进行任何操作."endl;

}

coutendlendl;

cout"按任何键继续进行操作."endl;

getchar();

getchar();

system("cls");

goto begin;

}

AboutMe();

return 0;

}

void SetTitle(bool isLoad)

{

HWND hwnd=GetForegroundWindow();

if(isLoad==false)

{

SetWindowText(hwnd," 学生管理系统(没有登陆)");

}

else

{

SetWindowText(hwnd," 学生管理系统(已经登陆)");

}

system("color a");

}

void AboutMe()

{

char*pStr= " ┃ \n"

" ┃ \n"

" ┏━━━━┻━━━━┓ \n"

" ┃ 关于作者 ┃ \n"

" ┏━━━━┻━━━━━━━━━┻━━━━┓\n"

" ┃ ┃\n"

" ┃ Aauthor:********** ┃\n"

" ┃ QQ: ********* ┃\n"

" ┃ E-mail:********@**.com ┃\n"

" ┃ ┃\n"

" ┗━━━━━━━━━━━━━━━━━━━┛\n";

system("cls");

srand(time(0));

for(int i=0; istrlen(pStr); i++)

{

if(pStr[i]!=' ')

{

Sleep(20);

}

coutpStr[i];

}

cout"Good-bye ."endl;

coutendlendlendlendl;

}

int main()

{

Run();

return 0;

}

学生信息管理系统C++源代码

#includeiostream

#includestdlib.h

#includestring.h

#includemalloc.h

#define INIT_SIZE 10

#define INCRE_SIZE 10

#define SUBJECT_NUM 3

#define LEN 3

void show_Start();

void show_Table();

void addRecord();

void Info_delete();

void deleteRecord();

void delete_Num(int);

void delete_Name(char tarName[]);

void Info_modify();

void modifyRecord();

void modify_Num(int);

void modify_Name(char[]);

void Info_query();

void queryRecord();

void query_Num(int);

void query_Name(char[]);

void display();

void quit();

void menu_CMD();

char *subject[SUBJECT_NUM] = {"高代","数分","C语言"};

struct STUDENT

{

int num;

char name[20];

char sex;

float score[SUBJECT_NUM];

};

//struct STUDENT stu[LEN + 1];

//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

int static stuNum = 0;

//先暂时定义三个学生吧...

STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);;

int main()

{

//record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

/*

record[1].num = 1001;

strcpy(record[1].name,"Jason");

record[1].sex = 'M';

record[1].score[0] = 85.0;

record[1].score[1] = 90.0;

record[1].score[2] = 95.0;

record[2].num = 1002;

strcpy(record[2].name,"Jerry");

record[2].sex = 'M';

record[2].score[0] = 85.0;

record[2].score[1] = 90.0;

record[2].score[2] = 95.0;

record[3].num = 1003;

strcpy(record[3].name,"Jessie");

record[3].sex = 'F';

record[3].score[0] = 85.0;

record[3].score[1] = 90.0;

record[3].score[2] = 95.0;

*/

/*

Info_modify();

int key;

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲修改的学生的学号 : ";

cintargetNum;

modify_Num(targetNum);

coutendl;

display();

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲修改学生的姓名 : ";

cintargetName;

modify_Name(targetName);

coutendl;

display();

}

if(key == 3)

{

exit(0);

}

*/

show_Start();

menu_CMD();

return 0;

}

//修改完后还应该显示

void show_Start()

{

//coutendl;

cout" **************************************** "endl;

cout" 这是一个 "endl;

cout" 学生成绩管理系统 "endl;

cout" 可以对学生成绩进行管理 "endl;

cout" 欢迎大家使用 "endl;

cout" Made by Jason "endl;

cout" **************************************** "endl;

}

// 显示表头信息,即是 : 学号,姓名,性别,高代,数分,C语言.

void show_Table()

{

cout"学号""\t""姓名""\t""性别";

cout"\t"subject[0]"\t"subject[1]"\t"subject[2];

coutendl;

}

void menu_CMD()

{

int key;

while(1)

{

cout"1. 增加学生信息"endl;

cout"2. 删除学生信息"endl;

cout"3. 修改学生信息"endl;

cout"4. 查询学生信息"endl;

cout"5. 显示学生信息"endl;

cout"6. 退出"endl;

cout"请输入您的选择 : ";

cinkey;

while(1)

{

if((key 1)||(key 6))

{

int key;

cout"您的输入有误,请重新输入!"endl;

cout"请选(1 - 5) : ";

cinkey;

}

else

{

break;

}

}

switch(key)

{

case 1:

addRecord();

break;

case 2:

deleteRecord();

break;

case 3:

modifyRecord();

break;

case 4:

queryRecord();

break;

case 5:

display();

break;

case 6:

quit();

break;

}

}

}

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

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

//增加学生信息

void addRecord()

{

if(stuNum == 0)

{

cout"原来没有记录,现在建立新表!"endl;

stuNum++;

}

else

{

cout"现在在当前表的末尾添加新的信息!"endl;

stuNum++;

}

//如果数组空间不够,重新申请空间

if(stuNum INIT_SIZE)

{

cout"内存空间不够,现在重新申请新的内存空间!"endl;

record = (STUDENT*)realloc(record,(INIT_SIZE + INCRE_SIZE)*sizeof(STUDENT));

cout"空间申请完成!"endl;

}

cout"您现在要添加一组新的信息,您确定吗?"endl;

cout"请输入您的选择(Y/N) : ";

char choi;

cinchoi;

if((choi == 'Y')||(choi == 'y'))

{

cout"请输入学号 : ";

cinrecord[stuNum].num;

cout"请输入姓名 : ";

cinrecord[stuNum].name;

cout"请输入性别(M为男,F为女) : ";

cinrecord[stuNum].sex;

int i;

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

{

cout"请输入"subject[i]"的成绩 : ";

cinrecord[stuNum].score[i];

}

}

if((choi == 'N')||(choi == 'n'))

{

cout"退出添加新学生信息!"endl;

coutendl;

}

cout"现在已经有"stuNum"条学生的信息了!"endl;

coutendl;

}

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

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

//删除信息 晚上完成...

//显示deleteRecord的表头信息

void Info_delete()

{

cout"请输入删除方式 : "endl;

cout"1. 按学号删除"endl;

cout"2. 按姓名删除"endl;

cout"3. 退出删除"endl;

}

//删除学生的信息,包含两个子函数

void deleteRecord()

{

int key;

coutendl;

Info_delete();

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲删除学生的学号 : ";

cintargetNum;

//按学号删除

delete_Num(targetNum);

coutendl;

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲删除学生的姓名 : ";

cintargetName;

//按姓名删除

delete_Name(targetName);

coutendl;

}

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号删除学生信息

//只用完成删除操作,而不必输出. 输出的操作可以在主菜单中进行

void delete_Num(int tarNum)

{

int i;

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

{

if(record[i].num == tarNum)

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//第一种情况,欲删除的学生是最后一位

if(i = stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]record[i].score[1]"\t"record[i].score[2];

coutendl;

coutendl"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum - 1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

//显示信息应该放在后面

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

//2.第二种情况,欲删除的学生不是最后一位

if(i != stuNum)

{

cout"您所要删除的学生信信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

//接着完成输出

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

stuNum--;

cout"现在还是剩下"stuNum"条学生的信息";

coutendl;

}

}

}

/*

//方法同上

void delete_Name(char tarName[])

{

int i;

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

{

if(strcmp(record[i].name,tarName) == 0)

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//第一种情况 : 欲删除学生是最后一位

if(i = stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]record[i].score[1]"\t"record[i].score[2];

coutendl;

coutendl"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum - 1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

}

//第二种情况 : 欲删除学生不是最后一位

if(i != stuNum)

{

cout"您所要删除的学生信信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

//整体往前 前移一位

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

coutendl;

//接着完成输出

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

coutendl;

}

}

}

}

*/

void delete_Name(char tarName[])

{

int i;

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

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//当欲删除的学生是最后一位,直接输出前面LEN-1位学生的信息

if(strcmp(record[i].name,tarName) == 0)

{

if(i == stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

//当欲删的学生不是最后一位,整体往前前移一位

if(i != stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t";

coutrecord[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

//整体往前前移一位

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

//然后输出

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

}

}

}

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

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

//显示modifyRecord的表头信息

void Info_modify()

{

cout"请输入修改方式 : "endl;

cout"1. 按学号修改"endl;

cout"2. 按姓名修改"endl;

cout"3. 退出修改"endl;

}

//查询学生的成绩,当然里面包括两个子函数

void modifyRecord()

{

int key;

coutendl;

Info_modify();

cout"请输入您的选择 : ";

cinkey;

//按学号修改

if(key == 1)

{

int targetNum;

cout"请输入您欲修改的学生的学号 : ";

cintargetNum;

modify_Num(targetNum);

coutendl;

//display();

}

//按姓名修改

if(key == 2)

{

char targetName[20];

cout"请输入您欲修改学生的姓名 : ";

cintargetName;

modify_Name(targetName);

coutendl;

//display();

}

//退出修改

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号修改

void modify_Num(int tarNum)

{

int i;

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

{

if(record[i].num == tarNum)

{

coutendl"请修改该学生的信息"endl;

cout"请输入该学生的学号 : ";

cinrecord[i].num;

cout"请输入该学生的姓名 : ";

cinrecord[i].name;

cout"请输入该学生的性别 : ";

cinrecord[i].sex;

cout"请输入"subject[0]"的成绩 : ";

cinrecord[i].score[0];

cout"请输入"subject[1]"的成绩 : ";

cinrecord[i].score[1];

cout"请输入"subject[2]"的成绩 : ";

cinrecord[i].score[2];

}

}

}

//按姓名修改

void modify_Name(char tarName[])

{

int i;

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

{

if(strcmp(record[i].name,tarName) == 0)

{

coutendl"请修改该学生的信息 : "endl;

cout"请输入该学生的学号 : ";

cinrecord[i].num;

cout"请输入该学生的姓名 : ";

cinrecord[i].name;

cout"请输入该学生的性别 : ";

cinrecord[i].sex;

cout"请输入"subject[0]"的成绩 : ";

cinrecord[i].score[0];

cout"请输入"subject[1]"的成绩 : ";

cinrecord[i].score[1];

cout"请输入"subject[2]"的成绩 : ";

cinrecord[i].score[2];

}

}

}

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

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

//显示queryRecord的表头信息

void Info_query()

{

cout"请输入查询方式 : "endl;

cout"1. 按学号查询"endl;

cout"2. 按姓名查询"endl;

cout"3. 退出查询"endl;

}

//查询学生信息queryRecord

void queryRecord()

{

int key;

coutendl;

Info_query();

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲查询学生的学号 : ";

cintargetNum;

query_Num(targetNum);

coutendl;

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲查询学生的学号 : ";

cintargetName;

query_Name(targetName);

coutendl;

}

//退出查询,退回到主菜单吧...

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号查询

void query_Num(int tarNum)

{

int i;

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

{

if(record[i].num == tarNum)

{

//如果表中有该学生信息的话,仅用输出该学生的信息即可.

//输出该学生的信息

cout"该学生的信息如下 : "endl;

//显示表头信息

show_Table();

//显示该学生具体的信息

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

cout"\t"record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

}

}

}

//按姓名查询

void query_Name(char tarName[])

{

int i;

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

{

if(strcmp(record[i].name,tarName) == 0)

{

cout"该学生的信息如下 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

cout"\t"record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

}

}

}

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

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

//先显示所有学生的信息吧

//显示record里所有学生的成绩

void display()

{

show_Table();

int i,j;

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

{

//cout"学号""\t""姓名""\t""性别";

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

coutendl;

}

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

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

//退出

void quit()

{

char choi;

cout"您确定要退出吗?"endl;

cout"请输入您的选择(Y/N) : ";

cinchoi;

if((choi == 'Y')||(choi == 'y'))

{

cout"现在退出学生信息管理系统"endl;

exit(0);

}

//如果不是退出,则接着退回到主界面

else

{

coutendl;

menu_CMD();

}

}

这个是原创的... 在C-Free 4.0里跑过,可以正常运行

你可以试着跑一下,如果有什么问题可以和我联系

c语言学生管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/

#define numsubs 5 /*学科数目*/

typedef struct message_student /*结构体定义*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*学生数目*/

extern student *pointer; /*指向结构体数组*/

extern int lens;

int menu_select(); /*函数声明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

printf(" | 1. 增加学生记录 5.统计信息 |\n");

printf(" | 2. 查询学生记录 6.打开文件 |\n");

printf(" | 3. 修改学生记录 7.保存文件 |\n");

printf(" | 4. 学生纪录排序 8.显示记录 |\n");

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

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return -1;

}

else

{

printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");

gets(str);

if(str[0]=='1') /*按学号查找*/

{

printf("请输入学号:");

gets(str);

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

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2') /*按姓名查找*/

{

printf("请输入姓名:");

gets(str);

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

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3') /*按名次查找*/

{

printf("请输入名次:");

scanf("%d",num);

getchar();

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

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,"%s",stu[i].number);

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,"%f",stu[i].subject[j]);

fscanf(fp,"%f",stu[i].score);

fscanf(fp,"%f",stu[i].average);

fscanf(fp,"%d",stu[i].index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf(" 请输入查询方式:");

printf("(直接输入回车则结束查询操作)\n");

printf("1.按照学号\t");

printf("2.按照姓名\t");

printf("3.按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.h"

void statistic(student stud[]) /*新增功能,输出统计信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus); /*总共记录数*/

switch(c1)

{

case '1':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);

printf("\t科目A的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);

printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/

break;

case '2':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);

printf("\t科目B的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);

printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/

break;

case '3':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);

printf("\t科目C的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);

printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/

break;

case '4':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);

printf("\t科目D的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);

printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/

break;

case '5':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);

printf("\t科目E的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);

printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') ;

else break;

}

}

}

#include"head.h"

int writetotext(student stud[]) /*将所有记录写入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(inumstus)

{

fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,"%f ",stud[i].subject[j]);

fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

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

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

printf("\t*************************************************************\n");

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");

printf("\t*************************************************************\n");

}

void showtable()

{

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

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

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

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*显示表头*/

for(i=n1;i=n2;i++)

printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通过循环输出数据*/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表: (按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用户输入*/

int i=-1,j;

if(numstus==0) /*没有记录返回*/

printf("没有可供修改的记录!");

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf("要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

printf("请输入学号:");

gets(stud[i].number);

printf("请输入姓名:");

gets(stud[i].name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i].sex,"女");

else

strcpy(stud[i].sex,"男");

stud[i].score=0;

printf("请按顺序输入成绩:");

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改?(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

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

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus--;

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

}

}

void count(student stud[])

{

int i,j;

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

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖?(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf("请输入学生信息:\n");

for(;inumstus;i++)

{

getchar();

printf("请输入学号:");

gets(pointer[i].number);

printf("请输入姓名:");

gets(pointer[i].name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i].sex);

if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");

else strcpy(pointer[i].sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]); /*计算总分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*计算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配内存*/

numstus=0;

welcome(); /*欢迎界面*/

while(i0)

{

i=menu_select(); /*控制菜单*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加学生信息*/

case 2:findrecord(pointer);break; /*查询学生信息*/

case 3:amendrecord(pointer);break; /*修改学生信息*/

case 4:sort(pointer);break; /*学生信息排序*/

case 5:statistic(pointer);break; /*统计信息*/

case 6:openfile(pointer);break; /*打开文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*显示记录*/

case 0:

if(numstus!=0) printf("是否保存当前记录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break; /*退出系统*/

default:printf("请输入数字0~8:\n");i=1; /*输入错误*/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

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

打字不易,如满意,望采纳。

3条大神的评论

  • avatar
    访客 2022-07-17 上午 10:20:23

    Find(head,findStr,'2'); break; case '3': Find(head,findStr,'3'); break

  • avatar
    访客 2022-07-17 上午 11:34:33

    { SetWindowText(hwnd," 学生管理系统(没有登陆)");}else{ SetWindowText(hwnd," 学生管理系统(已经登陆)");}sys

  • avatar
    访客 2022-07-17 上午 11:43:35

    d=pHead; while(head) { if(type=='1') { num=head-chinaNum; } else if(t

发表评论