当前位置:首页 > 代码 > 正文

c管理系统代码(c++教务管理系统源代码)

admin 发布:2022-12-19 22:10 133


本篇文章给大家谈谈c管理系统代码,以及c++教务管理系统源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c语言学生信息管理系统代码

代码如下:

#includestdio.h

#includemalloc.h

#includestdlib.h

#includestring.h

#includeconio.h

typedef struct examinee //考生信息结构

{   char examno[20]; //准考证号

char name[10]; //姓名

char sex[4]; //性别

short age; //年龄

char examtype[10]; //报考科目

}ElemType;

typedef struct Node //定义链表结点

{

ElemType data; //数据域

struct Node *next; //指针域

}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表

int is_empty( List L ); //测试链表是否是空表

int is_last( position p, List L ); //测试当前位置是否是表尾

position make_node( position p,int n ); //创建结点并输入考生信息

void put_information( position p ); //是否输出该考生信息

void put_name_information( List L ); //输出姓名为xx的考生信息

int put_pos_information( position p ); //输出该地址考生信息

void link_to_tail( List L, position p ); //将结点连接到表尾

int ciculation_make(); //循环创建考生信息

int judge_put_all(); //是否输出所有考生信息

void put_all(List L); //输出所有考生信息。

position find( List L ); //查找第一个姓名为xx的元素并返回位置

position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置

//int judge_delete_val(); //询问是否删除考生数据

int delete_val( List L ); //删除指定考生信息并输出其信息

void menu(List L); //菜单函数

List L;

//position p;

int

main( void ) 

{

List L = NULL; //定义头结点指针

position p = NULL; //定义表工作指针

L = make_empty( L ); //创建空表

printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");

menu(L);

return 0;

}

//创建一个带头结点的空表

List

make_empty( List L)

{

L = ( List ) malloc (sizeof( Node ));

if(NULL == L)

{

printf("内存分配失败");

exit( 1 );

}

L-next = NULL;

//printf("空表创建成功。\n");

return L;

}

//创建结点并输入考生信息

position

make_node( position p ,int n)

{

if(n) //n为1是创建结点并输入,n为0是修改

{

p = ( position ) malloc ( sizeof ( Node ));

p-next = NULL ;

}

printf("请输入考生准考证号:");

gets(p-data.examno);

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

gets(p-data.name);

do

{

printf("请输入考生性别,只能输入“男”或者“女”:");

gets(p-data.sex);

}

while( 0 != strcmp( p-data.sex, "男" ) 0 != strcmp( p-data.sex, "女" )); //判断性别是否有误

printf("请输入考生年龄:");

scanf("%hd",p-data.age);

getchar();  //如果把这句删掉,就“无法执行”下面的报考类别

/*下面的do while用来判断报考类别是否输入有误*/

do

{

printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");

gets(p-data.examtype);

}

while( 0 != strcmp( "英语", p-data.examtype ) 0 != strcmp( "数学", p-data.examtype ) 0 != strcmp( "数据结构", p-data.examtype ));

if(n)

{

printf("报名成功\n");

}

else

{

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

}

return p;

}

//前插法;

void

link_to_tail( List L, position p)

{

p-next = L-next;

L-next = p;

}

//查找第一个姓名为xx的元素并返回位置

position

find( List L )

{

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

p=p-next;

}

return p;

}

//测试链表是否是空表

int

is_empty( List L )

{

return L-next == NULL;

}

//测试当前位置是否是表尾

int

is_last( position p, List L )

{

return p-next == NULL;

}

//输出姓名为xx的考生信息

void

put_name_information( List L )

{

position p = find(L);

if(p!=NULL)

{

printf("您要查找的考生信息:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

else

{

printf("没有您要找的学生。\n");

}

}

//循环创建考生信息

int

ciculation_make()

{

int n = 2;

do

{

printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//是否输出考生信息

void

put_information( position p )

{

int n=2;

do

{

printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

if(n)

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

}

//是否输出所有考生信息

int

judge_put_all()

{

int n = 2;

do

{

printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//输出所有考生信息

void

put_all(List L)

{

if(L-next == NULL)

{

printf("现无考生报名!\n");

}

else

{

position p=L-next;

while( p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

p=p-next;

}

}

//getchar();

}

//询问是否删除考生数据

int

judge_delete_val()

{

int n = 2;

do

{

printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//查找第一个姓名为xx的元素并返回其直接前驱的位置

position

find_previous( List L )

{

position q = L;

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

q=p;

p=p-next;

}

if( p != NULL )

{

return q;

}

else

return p;

}

//删除指定考生信息并输出其信息

int

delete_val(List L)

{

int n=2;

position q=NULL;

position p=find_previous( L ); //返回考生信息地址

if( NULL == p )

{

printf("你要删除的考生不存在\n");

return 0;

}

else

{

q = p-next;

p-next = q-next;

printf("删除成功。\n删除的考生信息为:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q-data.examno,q-data.name,q-data.sex,q-data.age,q-data.examtype);

free(q);

return 1;

}

}

//输出该地址考试信息

int

put_pos_information( position p )

{

if(p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

return 1;

}

else

{

printf("没有您要查找的学生。");

return 0;

}

}

//菜单函数

void

menu(List L)

{

printf("\t\t\t   a. 考生报名入口\n");

printf("\t\t\t   b. 查询考生信息\n");

printf("\t\t\t   c. 修改考生信息\n");

printf("\t\t\t   d. 删除考生信息\n");

printf("\t\t\t   e. 全部考生信息\n");

printf("\t\t\t   f. 程序作者信息\n");

printf("\t\t\t   g.   退出程序\n");

char n='h';

while(n != 'g')

{

do  //确定正确输入

{

printf("请通过字母序号选择功能:");

n = getchar();

getchar();

putchar('\n');

if( n 'a' || n 'g')

{

printf("错误的字母序号。\n");

}

}

while( n 'a' || n 'g' );

switch (n)

{

case 'a':

{

printf("请输入报名考生信息:\n");

position p = make_node( p, 1 ); //创建新结点

link_to_tail( L, p ); //将新结点连接到表上

put_information( p );   //是否输出该考生信息

putchar('\n');

}

break;

case 'b':

{

put_name_information( L );

putchar('\n');

}

break;

case 'c':

{

int n=0;

position p = NULL;

printf("您正在进行修改操作。\n");

p = find(L);

n = put_pos_information( p );

if(n)

{

make_node( p , 0 );

put_information( p );   //是否输出该考生信息

}

putchar('\n');

}

break;

case 'd':

{

printf("您正在进行删除操作。\n");

delete_val( L );

putchar('\n');

}

break;

case 'e':

{

put_all( L );

putchar('\n');

}

break;

case 'f':

{

printf("              修改日期    版本号      修改人      修改内容    \n");

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

printf("              2018.6.19    v2.0       陈百川     增加主菜单\n");

printf("              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n");

printf("            该版本号为v2.0\n");

putchar('\n');

}

break;

default:

break;

}

}

printf("                     感谢本次使用,祝您生活愉快。");

getch();

}

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考资料:

百度百科——C语言

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

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

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

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

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

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

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

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

extern int lens;

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

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

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

void addrecord(student stud[]);

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

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

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

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

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

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

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

printf("\n\n");

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

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

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

{

char str[2];

int i,num;

if(numstus==0)

{

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

return -1;

}

else

{

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

gets(str);

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

{

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

gets(str);

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

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

{

display(stud,i,i);

break;

}

else continue;

}

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

{

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

gets(str);

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

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

{

display(stud,i,i);

break;

}

else continue;

}

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

{

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

scanf("%d",num);

getchar();

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

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

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

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

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

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

gets(str);

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

writetotext(stu);

}

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

gets(filename);

numstus=0;

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

{

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

return(-1);

}

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

fgetc(fp);

while(inumstus)

{

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

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

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

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

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

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

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

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

i++;

}

fclose(fp);

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

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

gets(str);

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

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

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

}

while(1)

{

for(i=0;;i++)

{

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

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

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

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

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

gets(str);

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

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

{

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

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

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

gets(str);

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

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

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

{

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

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

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

gets(str);

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

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

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

{

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

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

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

gets(str);

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

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

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

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

gets(str);

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

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

#include"head.h"

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

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

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

else

{

while(1)

{

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

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

c1=getchar();

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

switch(c1)

{

case '1':

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

{

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

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

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

}

average[0]=sum/numstus;

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

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

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

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

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

break;

case '2':

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

{

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

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

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

}

average[1]=sum/numstus;

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

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

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

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

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

break;

case '3':

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

{

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

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

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

}

average[2]=sum/numstus;

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

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

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

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

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

break;

case '4':

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

{

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

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

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

}

average[3]=sum/numstus;

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

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

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

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

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

break;

case '5':

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

{

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

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

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

}

average[4]=sum/numstus;

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

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

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

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

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

break;

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

}

sum=0;

getchar();

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

gets(str);

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

else break;

}

}

}

#include"head.h"

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

{

int i=0,j;

FILE *fp;

char filename[20];

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

gets(filename);

fp=fopen(filename,"w");

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

while(inumstus)

{

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

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

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

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

i++;

}

fclose(fp);

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

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

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

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

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

}

void showtable()

{

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

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

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

}

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

{

int i;

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

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

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

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

}

void display1()

{

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

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

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

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

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

int i=-1,j;

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

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

while(i0)

{

i=findrecord(stud);

if(i=0)

{

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

gets(str);

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

{

deleterecord(stud,i);

count(stud);

}

else

{

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

gets(str);

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

{

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

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

gets(stud[i].number);

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

gets(stud[i].name);

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

gets(str);

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

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

else

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

stud[i].score=0;

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

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

{

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

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

}

getchar();

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

}

count(stud);

}

display(stud,0,numstus-1);

}

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

gets(str);

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

i=-1;

else i=1;

}

}

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

{

int j;

while(i=0)

{

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

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

numstus--;

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

}

}

void count(student stud[])

{

int i,j;

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

{

stud[i].index=1;

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

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

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

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

gets(str);

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

i=0;

else i=numstus;

}

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

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

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

}

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

for(;inumstus;i++)

{

getchar();

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

gets(pointer[i].number);

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

gets(pointer[i].name);

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

gets(pointer[i].sex);

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

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

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

stud[i].score=0;

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

{

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

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

}

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

}

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

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

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

numstus=0;

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

while(i0)

{

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

switch(i)

{

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

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

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

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

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

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

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

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

case 0:

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

gets(str);

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

writetotext(pointer);

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

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

}

}

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

display1();

}

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

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

c语言程序学生成绩管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

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

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

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

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

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

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

extern int lens;

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

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

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

void addrecord(student stud[]);

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

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

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

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

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

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

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

printf("\n\n");

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

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

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

{

char str[2];

int i,num;

if(numstus==0)

{

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

return -1;

}

else

{

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

gets(str);

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

{

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

gets(str);

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

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

{

display(stud,i,i);

break;

}

else continue;

}

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

{

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

gets(str);

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

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

{

display(stud,i,i);

break;

}

else continue;

}

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

{

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

scanf("%d",num);

getchar();

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

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

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

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

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

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

gets(str);

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

writetotext(stu);

}

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

gets(filename);

numstus=0;

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

{

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

return(-1);

}

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

fgetc(fp);

while(inumstus)

{

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

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

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

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

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

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

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

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

i++;

}

fclose(fp);

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

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

gets(str);

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

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

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

}

while(1)

{

for(i=0;;i++)

{

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

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

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

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

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

gets(str);

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

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

{

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

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

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

gets(str);

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

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

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

{

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

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

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

gets(str);

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

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

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

{

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

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

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

gets(str);

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

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

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

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

gets(str);

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

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

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

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

{

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

{

temp=*(p+j);

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

*(p+j+1)=temp;

}

}

}

#include"head.h"

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

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

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

else

{

while(1)

{

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

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

c1=getchar();

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

switch(c1)

{

case '1':

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

{

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

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

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

}

average[0]=sum/numstus;

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

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

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

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

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

break;

case '2':

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

{

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

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

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

}

average[1]=sum/numstus;

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

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

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

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

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

break;

case '3':

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

{

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

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

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

}

average[2]=sum/numstus;

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

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

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

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

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

break;

case '4':

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

{

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

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

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

}

average[3]=sum/numstus;

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

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

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

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

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

break;

case '5':

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

{

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

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

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

}

average[4]=sum/numstus;

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

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

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

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

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

break;

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

}

sum=0;

getchar();

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

gets(str);

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

else break;

}

}

}

#include"head.h"

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

{

int i=0,j;

FILE *fp;

char filename[20];

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

gets(filename);

fp=fopen(filename,"w");

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

while(inumstus)

{

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

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

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

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

i++;

}

fclose(fp);

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

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

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

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

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

}

void showtable()

{

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

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

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

}

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

{

int i;

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

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

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

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

}

void display1()

{

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

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

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

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

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

int i=-1,j;

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

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

while(i0)

{

i=findrecord(stud);

if(i=0)

{

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

gets(str);

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

{

deleterecord(stud,i);

count(stud);

}

else

{

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

gets(str);

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

{

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

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

gets(stud[i].number);

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

gets(stud[i].name);

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

gets(str);

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

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

else

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

stud[i].score=0;

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

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

{

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

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

}

getchar();

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

}

count(stud);

}

display(stud,0,numstus-1);

}

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

gets(str);

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

i=-1;

else i=1;

}

}

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

{

int j;

while(i=0)

{

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

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

numstus--;

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

}

}

void count(student stud[])

{

int i,j;

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

{

stud[i].index=1;

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

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

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

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

gets(str);

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

i=0;

else i=numstus;

}

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

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

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

}

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

for(;inumstus;i++)

{

getchar();

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

gets(pointer[i].number);

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

gets(pointer[i].name);

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

gets(pointer[i].sex);

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

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

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

stud[i].score=0;

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

{

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

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

}

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

}

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

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

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

numstus=0;

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

while(i0)

{

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

switch(i)

{

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

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

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

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

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

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

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

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

case 0:

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

gets(str);

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

writetotext(pointer);

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

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

}

}

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

display1();

}

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

C语言用户管理系统代码谢谢了,大神帮忙啊

#include stdio.h #include string.h #include windows.h struct student { long int num; char name[20]; int age; char sex[4]; char b[30]; char p[15]; }; int n=0; struct student stu[100]; struct student *p; void lr(); void ll(); void cx(); void xg(); void sc(); void main() { int z; printf("+---------------------------+\n"); printf("| 欢迎使用学生信息管理系统 |\n"); printf("+---------------------------+\n"); printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); do { printf("\n\t\t\t--------------------------------\n"); printf("\t\t\t+ 主菜单 |\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入学生信息 |\n"); printf("\t\t\t+ [2]----浏览学生信息 |\n"); printf("\t\t\t+ [3]----查询学生信息 |\n"); printf("\t\t\t+ [4]----删除学生信息 |\n"); printf("\t\t\t+ [5]----修改学生信息 |\n"); printf("\t\t\t+ [0]----退出系统 |\n"); printf("\t\t\t--------------------------------\n"); printf("请输入您的选择:"); scanf("%d", z); system("color 2f"); switch(z) { case 0 : break; case 1 :lr();break; case 2 :ll();break; case 3 :cx();break; case 4 :sc();break; case 5 :xg();break; default:printf("\n无效选项!"); } } while(z!= 0); } void lr()/*录入函数*/ { int y; if(n==0) p=stu; do { printf("--------------------\n"); printf("请输入学生的学号:"); scanf("%ld",p-num); printf("请输入学生的姓名:"); scanf("%s",p-name); printf("请输入学生的年龄:"); scanf("%d",p-age); printf("请输入学生的性别:"); scanf("%s",p-sex); printf("请输入学生的地址:"); scanf("%s",p-b); printf("请输入学生的电话:"); scanf("%s",p-p); n++; p++; printf("\n1.继续输入.\n0.输入完毕.\n"); printf("请选择:"); scanf("%d",y); } while(y==1); printf("提示:输入完毕!你一共输入%d个\n",n); } void ll()/*浏览函数*/ { int i,j; if(n!=0) { printf("学生总数:%d\n", n); printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n"); printf("-----------------------------------------------------\n"); for(i=0;in;i++) printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p); } else printf("提示:无学生数据,请输入数据!"); } void cx()/*查询函数*/ { int c; int w,i,j=0; char name[20]; if(n!=0) { do{ printf("\n"); printf("+--------------------+\n"); printf("| 按学号查询 请按 1 |\n"); printf("| 按姓名查询 请按 2 |\n"); printf("| 取消 请按 0 |\n"); printf("+--------------------+\n"); printf("请输入您的选择:"); scanf("%d", c); switch(c) { case 0:break; case 1: printf("请输入学生的学号;"); scanf("%ld", w); printf("\n"); for(i=0;in;i++) if(stu[i].num==w) { printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n"); printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p); j=1; } if(j==0) printf("提示:没有该学生记录,请核对!"); break; case 2: printf("请输入学生的姓名:"); scanf("%s", name); printf("\n"); for(i=0;in;i++) if(strcmp(name,stu[i].name)==0) { printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n"); j=1; printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p); } if(j==0) printf("提示:没有该学生记录,请核对!"); break; default: printf("\n提示:无效选项!"); break; } }while(c!= 0); }else printf("提示:无学生数据,请输入数据!"); return; } void xg()/*修改函数*/ { long int num; int i,j,c; if(n!=0) { printf("请输入您要修改的学生的学号:"); scanf("%ld", num); printf("\n"); for(i=0;in;i++) if(stu[i].num==num) j=i; do{ printf("请选择您要修改的学生的信息内容:\n"); printf("+----------------------+\n"); printf("| 姓名 请按 1 |\n"); printf("| 年龄 请按 2 |\n"); printf("| 性别 请按 3 |\n"); printf("| 学号 请按 4 |\n"); printf("| 地址 请按 5 |\n"); printf("| 电话 请按 6 |\n"); printf("| 取消 请按 0 |\n"); printf("+----------------------+\n"); printf("请输入您的选择:"); scanf("%d", c); printf("\n"); switch(c) { case 0:break; case 1:printf("请输入新姓名:"); scanf("%s",stu[j].name); break; case 2:printf("请输入新年龄:"); scanf("%d",stu[j].age); break; case 3:printf("请输入新性别:"); scanf("%s",stu[j].sex); break; case 4:printf("请输入新学号:"); scanf("%ld",stu[j].num); break; case 5:printf("请输入新地址:"); scanf("%s",stu[j].b); break; case 6:printf("请输入新电话:"); scanf("%s",stu[j].p); break; default: printf("\n无效选项!"); break; } }while(c!= 0); }else printf("提示:无学生数据,请输入数据!"); } void sc()/*删除函数*/ { long int num; int i,j,e; if(n!=0) { printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n"); printf("-----------------------------------------------------\n"); for(i=0;in;i++) printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p); printf("请输入您要删除的学生的学号:"); scanf("%ld", num); printf("\n"); for(i=0;in;i++) if(num==stu[i].num) j=i; if(j!=(n-1)) { for(e=i-1;en;e++,j++) { stu[j].num=stu[j+1].num; strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j].sex,stu[j+1].sex); stu[j].age=stu[j+1].age; strcpy(stu[j].b,stu[j+1].b); strcpy(stu[j].p,stu[j+1].p); n--;p--; } }else {n--;p--;} printf("提示:删除完毕!"); }else printf("提示:无学生数据,请输入数据!"); }

C语言学生成绩管理系统代码

#includestdio.h

#includestring.h

//外部函数声明

void menu();

void line();

/* 定义全局变量其中n代表学生人数,ave[5]代表每科成绩的平均分,high[5]每科成绩的最高分,

min[5]代表每科成绩的最低分,student_ave[100]代表每个学生五门成绩的平均分*/

int n,i,j;

float ave[5]={0},high[5]={0},min[5]={0},student_ave[100];

//定义全局结构体

struct student

{

long int num; //学生学号

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

float score[5]; //学生成绩

}stu[100];

//主函数开始

int main()

{

void enter(); //enter:输入学生成绩函数(这是函数声明)

void export(); //export:输出学生成绩函数(这是函数声明)

void stat(); //stat:学生成绩统计函数(这是函数声明)

void rank(); //rank:学生成绩排名函数(这是函数声明)

void query(); //query:学生成绩查询函数(这是函数声明)

//定义内部变量

//界面框架

menu();

printf(" 学生成绩管理信息系统\n");

printf("请根据以下提示命令字符进行操作!\n");

printf("q:退出 a:成绩输入 p:成绩输出 s:成绩统计 w:成绩排名 t:成绩查询\n");

menu();

//函数调用,选择成绩管理方式

printf("请选择成绩管理方式");

while(1)

{

char c;

printf("\n");

scanf("%c",c);

if (c=='q') printf("这是退出学生成绩管理信息系统函数\n\n");break;

switch(c)

{

case'a':enter();break;

case'p':export(); break;

case's':stat();break;

case'v':rank();break;

case't':query();break;

default:("命令无效,请重新输入!\n");

}

}

return 0;

}

//主函数部分结束

//定义函数

void menu()

{

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

}

//定义下划线函数

void line()

{

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

}

//定义学生成绩输入函数开始

void enter()

{

menu();

printf("学生成绩输入\n请按以下格式进行数据输入\n");

printf("请输入学生学号姓名");

printf(" 学号 学生姓名\n");

printf("请输入学生成绩 ");

printf(" A成绩 B成绩 C成绩 D成绩 E成绩\n");

printf("例如\n请输入学生学号姓名");

printf("2012060402,张三\n");

printf("请输入学生成绩 ");

printf("95.5,97.0,89.0,92.0,85.0\n");

menu();

//输入学生成绩格式备注

printf("\n请输入学生人数 ");

scanf("%d",n);

//用for循环输入学生成绩

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

{

printf("请输入学生学号姓名");

scanf("%ld,%s",stu[i].num,stu[i].name);

printf("请输入学生成绩 ");

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

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

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

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

scanf("%f\n",stu[i].score[4]);

getchar();

student_ave[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4])/5;

//用for循环计算每科成绩z总分

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

{

ave[j]=ave[j]+stu[i].score[j];

}

//用for循环得出每科成绩最高分

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

{

if(high[j]=stu[i].score[j])

{

high[j]=stu[i].score[j];

}

}

//用for循环得出每科成绩最低分

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

{

if(i==0)

{

min[j]=stu[i].score[j];

}

if(min[j]=stu[i].score[j])

{

min[j]=stu[i].score[j];

}

}

}

//学生成绩输入完成

//用for循环计算每科成绩平均分

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

{

ave[j]=ave[j]/n;

}

getchar();

menu();

printf("\n");

}

//定义学生成绩输入函数结束

//定义学生成绩输出函数开始

void export()

{

int i;

printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");

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

{

printf("%9ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,

stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);

}

menu();

}

//定义学生成绩输出函数结束

//定义学生成绩统计函数开始

void stat()

{

printf("各科平均成绩如下!\n");

line();

printf("\n");

printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");

//这是每科成绩平均分

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

{

printf(" %6.1f ",ave[i]);

}

printf("\n");

printf("\n");

//只是每科成绩的最高分

printf("各科最高分如下!\n");

line();

printf("\n");

printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");

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

{

printf(" %6.1f ",high[j]);

}

printf("\n");

printf("\n");

//这是每科成绩最低分

printf("各科最低分如下!\n");

line();

printf("\n");

printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");

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

{

printf(" %6.1f ",min[i]);

}

printf("\n");

printf("\n");

}

//定义学生成绩统计函数结束

//定义学生成绩排名函数开始

void rank()

{

int k=1,z;

float t=0;

float student_high[100]={0};

printf("学生成绩排名如下:\n\n");

line();

printf("\n");

printf("名次 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E 平均分 \n");

//把每个学生五门课的成绩按从大到小的顺序排列并存在数组student_high[]中去

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

{

student_high[i]=student_ave[i];

}

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

{

for(i=0;in-j;i++)

{

if(student_high[i]=student_high[i+1])

{

t=student_high[i+1];

student_high[i+1]=student_high[i];

student_high[i]=t;

}

}

}

//按成绩排名输出学生成绩信息

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

{

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

{

if(student_high[i]==student_high[i+1])

{

i++;

}

if(student_high[i]==student_ave[j])

{

printf("%d %ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f %7.1f\n",k,stu[j].num,stu[j].name,

stu[j].score[0],stu[j].score[1],stu[j].score[2],stu[j].score[3],stu[j].score[4],student_ave[j]);

for(z=j+1;zn;z++)

{

if(student_high[i]==student_ave[z])

{

k++;

}

}

}

}

k++;

}

line();

printf("\n");

}

//定义学生成绩排名函数结束

//定义学生成绩查询函数开始

void query()

{

//查询成绩格式

char c2,shu_name[20]; //c2代表查询成绩控制字符。shu_name[]代表输入查询姓名,shu_num代表输入查询学号

int shu_num;

menu();

printf("学生成绩查询\n请按以下方式查询\na:按学生姓名查询 b:按学生学号查询 q:退出\n");

menu();

printf("\n\n");

//选择查询方式

while(c2!='q')

{

printf("请选择查询成绩方式");

scanf("%c",c2);

getchar();

//按姓名查询成绩

if(c2=='a')

{

line();

printf("请输入学生姓名");

scanf("%s",shu_name);

getchar();

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

{

if(strcmp(shu_name,stu[i].name)==0)

{

printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");

printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,

stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);

}

else if(shu_name!=stu[i].namei==(n-1))

{

printf("无此学生成绩\n");

}

}

line();

printf("\n");

}

//按学号查询成绩

else if(c2=='b')

{

line();

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

scanf("%d",shu_num);

getchar();

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

{

if(shu_num==stu[i].num)

{

printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");

printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,

stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);

}

else if(shu_num!=stu[i].numi==(n-1))

{

printf("无此学生成绩\n");

}

}

line();

printf("\n");

}

}

line();

printf("\n\n");

}

//定义学生成绩查询函数结束

c语言学生管理系统,请把每行代码解释清楚,谢谢了

#includestdio.h

#includestdlib.h

#includeconio.h

#includedos.h

#includestring.h

#define LEN sizeof(struct student)

#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"

#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum

struct student/*定义学生成绩结构体*/

{ int num;/*学号*/

char name[15];/*姓名*/

double elec;/*选修课*/

double expe;/*实验课*/

double requ;/*必修课*/

double sum;/*总分*/

};

struct student stu[50];/*定义结构体数组*/

void in();/*录入学生成绩信息*/

void show();/*显示学生信息*/

void order();/*按总分排序*/

void del();/*删除学生成绩信息*/

void modify();/*修改学生成绩信息*/

void menu();/*主菜单*/

void insert();/*插入学生信息*/

void total();/*计算总人数*/

void search();/*查找学生信息*/

void main()/*主函数*/

{ int n;

menu();

scanf("%d",n);/*输入选择功能的编号*/

while(n)

{ switch(n)

{ case 1: in();break;

case 2: search();break;

case 3: del();break;

case 4: modify();break;

case 5: insert();break;

case 6: order();break;

case 7: total();break;

case 8: show();break;

default:break;

}

getch();

menu();/*执行完功能再次显示菜单界面*/

scanf("%d",n);

}

}

void in()/*录入学生信息*/

{ int i,m=0;/*m是记录的条数*/

char ch[2];

FILE *fp;/*定义文件指针*/

if((fp=fopen("data.txt","a+"))==NULL)/*打开指定文件*/

{

printf("can not open\n");

return;

}

while(!feof(fp))

{

if(fread(stu[m] ,LEN,1,fp)==1)

m++;/*统计当前记录条数*/

}

fclose(fp);

if(m==0)

printf("No record!\n");

else

{

system("cls");

show();/*调用show函数,显示原有信息*/

}

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("can not open\n");

return;

}

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

fwrite(stu[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/

printf("please input(y/n):");

scanf("%s",ch);

while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/

{

printf("number:");

scanf("%d",stu[m].num);/*输入学生学号*/

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

if(stu[i].num==stu[m].num)

{

printf("the number is existing,press any to continue!");

getch();

fclose(fp);

return;

}

printf("name:");

scanf("%s",stu[m].name);/*输入学生姓名*/

printf("elective:");

scanf("%lf",stu[m].elec);/*输入选修课成绩*/

printf("experiment:");

scanf("%lf",stu[m].expe);/*输入实验课成绩*/

printf("required course:");

scanf("%lf",stu[m].requ);/*输入必修课成绩*/

stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*计算出总成绩*/

if(fwrite(stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/

{

printf("can not save!");

getch();

}

else

{

printf("%s saved!\n",stu[m].name);

m++;

}

printf("continue?(y/n):");/*询问是否继续*/

scanf("%s",ch);

}

fclose(fp);

printf("OK!\n");

}

void show()

{ FILE *fp;

int i,m=0;

fp=fopen("data.txt","rb");

while(!feof(fp))

{

if(fread(stu[m] ,LEN,1,fp)==1)

m++;

}

fclose(fp);

printf("number name elective experiment required sum\t\n");

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

{

printf(FORMAT,DATA);/*将信息按指定格式打印*/

}

}

void menu()/*自定义函数实现菜单功能*/

{

system("cls");

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

printf("\t\t|---------------------STUDENT-------------------|\n");

printf("\t\t|\t 0. exit |\n");

printf("\t\t|\t 1. input record |\n");

printf("\t\t|\t 2. search record |\n");

printf("\t\t|\t 3. delete record |\n");

printf("\t\t|\t 4. modify record |\n");

printf("\t\t|\t 5. insert record |\n");

printf("\t\t|\t 6. order |\n");

printf("\t\t|\t 7. number |\n");

printf("\t\t|\t 8. show |\n");

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

printf("\t\t\tchoose(0-8):");

}

void order()/*自定义排序函数*/

{ FILE *fp;

struct student t;

int i=0,j=0,m=0;

if((fp=fopen("data.txt","r+"))==NULL)

{

printf("can not open!\n");

return;

}

while(!feof(fp))

if(fread(stu[m] ,LEN,1,fp)==1)

m++;

fclose(fp);

if(m==0)

{

printf("no record!\n");

return;

}

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("can not open\n");

return;}

for(i=0;im-1;i++)

for(j=i+1;jm;j++)/*双重循环实现成绩比较并交换*/

if(stu[i].sumstu[j].sum)

{ t=stu[i];stu[i]=stu[j];stu[j]=t;}

if((fp=fopen("data.txt","wb"))==NULL)

{ printf("can not open\n");return;}

for(i=0;im;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/

if(fwrite(stu[i] ,LEN,1,fp)!=1)

{

printf("%s can not save!\n");

getch();

}

fclose(fp);

printf("save successfully\n");

}

void del()/*自定义删除函数*/

{FILE *fp;

int snum,i,j,m=0;

char ch[2];

if((fp=fopen("data.txt","r+"))==NULL)

{ printf("can not open\n");return;}

while(!feof(fp)) if(fread(stu[m],LEN,1,fp)==1) m++;

fclose(fp);

if(m==0)

{

printf("no record!\n");

return;

}

printf("please input the number:");

scanf("%d",snum);

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

if(snum==stu[i].num)

break;

printf("find the student,delete?(y/n)");

scanf("%s",ch);

if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/

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

stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/

m--;/*记录的总个数减1*/

if((fp=fopen("data.txt","wb"))==NULL)

{ printf("can not open\n");return;}

for(j=0;jm;j++)/*将更改后的记录重新写入指定的磁盘文件中*/

if(fwrite(stu[j] ,LEN,1,fp)!=1)

{ printf("can not save!\n");

getch();}

fclose(fp);

printf("delete successfully!\n");

}

void search()/*自定义查找函数*/

{ FILE *fp;

int snum,i,m=0;

char ch[2];

if((fp=fopen("data.txt","rb"))==NULL)

{ printf("can not open\n");return;}

while(!feof(fp)) if(fread(stu[m],LEN,1,fp)==1) m++;

fclose(fp);

if(m==0) {printf("no record!\n");return;}

printf("please input the number:");

scanf("%d",snum);

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

if(snum==stu[i].num)/*查找输入的学号是否在记录中*/

{ printf("find the student,show?(y/n)");

scanf("%s",ch);

if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)

{

printf("number name elective experiment required sum\t\n");

printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/

break;

}

}

if(i==m) printf("can not find the student!\n");/*未找到要查找的信息*/

}

void modify()/*自定义修改函数*/

{ FILE *fp;

int i,j,m=0,snum;

if((fp=fopen("data.txt","r+"))==NULL)

{ printf("can not open\n");return;}

while(!feof(fp))

if(fread(stu[m],LEN,1,fp)==1) m++;

if(m==0) {printf("no record!\n");

fclose(fp);

return;

}

show();

printf("please input the number of the student which do you want to modify!\n");

printf("modify number:");

scanf("%d",snum);

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

if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/

break;

printf("find the student!you can modify!\n");

printf("name:");

scanf("%s",stu[i].name);/*输入名字*/

printf("elective:");

scanf("%lf",stu[i].elec);/*输入选修课成绩*/

printf("experiment:");

scanf("%lf",stu[i].expe);/*输入实验课成绩*/

printf("required course:");

scanf("%lf",stu[i].requ);/*输入必修课成绩*/

printf("modify successful!");

stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ;

if((fp=fopen("data.txt","wb"))==NULL)

{ printf("can not open\n");return;}

for(j=0;jm;j++)/*将新修改的信息写入指定的磁盘文件中*/

if(fwrite(stu[j] ,LEN,1,fp)!=1)

{ printf("can not save!"); getch(); }

fclose(fp);

}

void insert()/*自定义插入函数*/

{ FILE *fp;

int i,j,k,m=0,snum;

if((fp=fopen("data.txt","r+"))==NULL)

{ printf("can not open\n");return;}

while(!feof(fp))

if(fread(stu[m],LEN,1,fp)==1) m++;

if(m==0) {printf("no record!\n");

fclose(fp);

return;

}

printf("please input position where do you want to insert!(input the number)\n");

scanf("%d",snum);/*输入要插入的位置*/

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

if(snum==stu[i].num)

break;

for(j=m-1;ji;j--)

stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/

printf("now please input the new information.\n");

printf("number:");

scanf("%d",stu[i+1].num);

for(k=0;km;k++)

if(stu[k].num==stu[i+1].num)

{

printf("the number is existing,press any to continue!");

getch();

fclose(fp);

return;

}

printf("name:");

scanf("%s",stu[i+1].name);

printf("elective:");

scanf("%lf",stu[i+1].elec);

printf("experiment:");

scanf("%lf",stu[i+1].expe);

printf("required course:");

scanf("%lf",stu[i+1].requ);

stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ;

if((fp=fopen("data.txt","wb"))==NULL)

{ printf("can not open\n");return;}

for(k=0;k=m;k++)

if(fwrite(stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/

{ printf("can not save!"); getch(); }

fclose(fp);

}

void total()

{ FILE *fp;

int m=0;

if((fp=fopen("data.txt","r+"))==NULL)

{ printf("can not open\n");return;}

while(!feof(fp))

if(fread(stu[m],LEN,1,fp)==1)

m++;/*统计记录个数即学生个数*/

if(m==0) {printf("no record!\n");fclose(fp);return;}

printf("the class are %d students!\n",m);/*将统计的个数输出*/

fclose(fp);

}

关于c管理系统代码和c++教务管理系统源代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/26860.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载