学生教务管理系统代码

 2025-01-02 19:24:01  阅读 740  评论 0

摘要:#include <stdio.h>#include <string.h>#include <windows.h>struct student {long int numchar name[20]int agechar sex[4]char b[30]char p[15]}int n=0struct student stu[100]struct student *pvoid lr()void ll()void cx()void xg()void sc()void main(){in

#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("nttt--------------------------------n")

printf("ttt+主菜单|n")

printf("ttt--------------------------------n")

printf("ttt+[1]----录入学生信息 |n")

printf("ttt+[2]----浏览学生信息 |n")

printf("ttt+[3]----查询学生信息 |n")

printf("ttt+[4]----删除学生信息 |n")

printf("ttt+[5]----修改学生信息 |n")

printf("ttt+[0]----退出系统 |n")

printf("ttt--------------------------------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("学生总数:%dn", n)

printf("学号t姓名t年龄t性别t地址tt电话n")

printf("-----------------------------------------------------n")

for(i=0i<ni++)

printf("%ldt%st%dt%st%stt%sn",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=0i<ni++)

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

{

printf("n学号t姓名t年龄t性别t地址tt电话n")

printf("%ldt%st%dt%st%stt%sn",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=0i<ni++)

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

{

printf("n学号t姓名t年龄t性别t地址tt电话n")

j=1

printf("%ldt%st%dt%st%stt%sn",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=0i<ni++)

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地址tt电话n")

printf("-----------------------------------------------------n")

for(i=0i<ni++)

printf("%ldt%st%dt%st%stt%sn",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=0i<ni++)

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

j=i

if(j!=(n-1))

{

for(e=i-1e<ne++,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("提示:删除完毕!")

}elseprintf("提示:无学生数据,请输入数据!")

}

学生成绩管理系统的代码是什么?

代码如下:

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

#include<string.h>

#include<conio.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("ttt★★考生报名管理程序★★ntt----------------------------------------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

{

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("准考证号:%st姓名:%st性别:%st年龄:%hdt报考科目:%snn",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("准考证号:%st姓名:%st性别:%st年龄:%hdt报考科目:%sn",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("准考证号:%st姓名:%st性别:%st年龄:%hdt报考科目:%sn",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("准考证号:%st姓名:%st性别:%st年龄:%hdt报考科目:%sn",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("准考证号:%st姓名:%st性别:%st年龄:%hdt报考科目:%snn",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("ttt   a. 考生报名入口n")

printf("ttt   b. 查询考生信息n")

printf("ttt   c. 修改考生信息n")

printf("ttt   d. 删除考生信息n")

printf("ttt   e. 全部考生信息n")

printf("ttt   f. 程序作者信息n")

printf("ttt   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       陈百川   增加生成文件功能nn")

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

putchar('n')

}

break

default:

break

}

}

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

getch()

}

回答于 2022-12-11

代码如下:

for(i=0i<66i++)

printf("*")

printf("n")

printf("1.Input recordn")

printf("2.Caculate totel and average score of every coursen")

printf("3.Caculate totel and average score of every studentn")

printf("4.Sort in descending order by total score of every studentn")

printf("5.Sort in ascending order by total score of every studentn")

printf("6.Sort in ascending order by numbern")

printf("7.Sort in ascending order by namen")

printf("8.Search by numbern")

printf("9.Search by namen")

printf("10.Statistic analysis for every coursen")

printf("11.List recordn")

printf("12.Write to a filen")

printf("13.Read from a filen")

printf("0.Exitn")

for(i=0i<66i++)

printf("*")

printf("n")

printf("Please enter your choice:")

printf("n")

输入函数:

void Readscore (STU stu[],int n,int m)    //1.输入数据

{

int i,j

for(i=0i<ni++)

{

printf("Input student's ID ,name and score")

scanf("%ld",&stu[i].studentID)

scanf("%s",stu[i].studentName)

for(j=0j<mj++)

scanf("%d",&stu[i].score[j])

}

}

数据处理函数:

void Tota (STU stu[],int n,int m)     //2.计算每门课程的总分和平均分

{

int i,j,sum[M]

double ave[M]

for(j=0j<mj++)

{

sum[j]=0

for(i=0i<ni++)

{

sum[j]=sum[j]+stu[i].score[j]

}

ave[j]=(double)sum[j]/n

}

for(i=0i<mi++)

printf("Project %d 总分=%d,课程的平均分=%fn",i+1,sum[i],ave[i])

}

void Datasort_1 (STU stu[],int n,int m)     //3.计算每个学生的总分和平均分

{

int i,j,sum[N]

double ave[N]

for(i=0i<ni++)

{

sum[i]=0

for(j=0j<mj++)

{

sum[i]=sum[i]+stu[i].score[j]

}

ave[i]=(double)sum[i]/m

}

for(i=0i<ni++)

printf("ID:%10ld,Name: %s Allscore=%d,The ave=%fn",stu[i].studentID,stu[i].studentName,sum[i],ave[i])

}

排序函数:

void Datasort_2 (STU stu[],int n,int m)          //4.按每个学生的总分由高到低排出名次表

{

int i,j,k,h,sum[N]

STU t

for(i=0i<ni++)

{

sum[i]=0

for(j=0j<mj++)

{

sum[i]=sum[i]+stu[i].score[j]

}

}

for(i=0i<ni++)

{

k=i

for(j=i+1j<nj++)

{

if (sum[j]>sum[k])

k=j

}

if(i!=k)

{

t=stu[i],h=sum[i]

stu[i]=stu[k],sum[i]=sum[k]

stu[k]=t,sum[k]=h

}

}

for(i=0i<ni++)

printf("ID:%10ld,Name:%s,Score:%dn",stu[i].studentID,stu[i].studentName,sum[i])

}

void Datasort_3 (STU stu[],int n,int m)          //5.按每个学生的总分由低到高排出名次表

{

int i,j,k,h,sum[N]

STU t

for(i=0i<ni++)

{

sum[i]=0

for(j=0j<mj++)

{

sum[i]=sum[i]+stu[i].score[j]

}

}

for(i=0i<ni++)

{

k=i

for(j=i+1j<nj++)

{

if (sum[j]<sum[k])

k=j

}

if(i!=k)

{

t=stu[i],h=sum[i]

stu[i]=stu[k],sum[i]=sum[k]

stu[k]=t,sum[k]=h

}

}

for(i=0i<ni++)

printf("ID:%10ld,Name:%s,score:%dn",stu[i].studentID,stu[i].studentName,sum[i])

}

void Datasort_4 (STU stu[],int n,int m)    //6.按学号由小到大排出名次表

{

int i,j,k

STU t

for(i=0i<ni++)

{

k=i

for(j=i+1j<nj++)

{

if (stu[j].studentID<stu[k].studentID)

k=j

}

if(i!=k)

t=stu[k],stu[k]=stu[i],stu[i]=t

}

for(i=0i<ni++)

{

printf("ID:%10ld,Name:%sn",stu[i].studentID,stu[i].studentName)

for(j=0j<mj++)

printf("Project %d Score:%dn",j+1,stu[i].score[j])

}

}

数据分析函数:

void Statistis (STU stu[],int n,int m)   //10.

{

int i,j,count_1,count_2,count_3,count_4,count_5

for(j=0j<mj++)

{

count_1=0,count_2=0,count_3=0,count_4=0,count_5=0

for(i=0i<ni++)

{

if(stu[i].score[j]>=90)

count_1++

else if(stu[i].score[j]>=80)

count_2++

else if(stu[i].score[j]>=70)

count_3++

else if(stu[i].score[j]>=60)

count_4++

else

count_5++

}

printf("project %dn",j+1)

printf("优秀:%dt优秀率:%f%n",count_1,(float)count_1/n)

printf("良好:%dt良好率:%f%n",count_2,(float)count_2/n)

printf("中等:%dt中等率:%fn",count_3,(float)count_3/n)

printf("及格:%dt及格率:%fn",count_4,(float)count_4/n)

printf("不及格:%dt不及格率:%fn",count_5,(float)count_5/n)

}

}

数据界面打印函数:

void List (STU stu[],int n,int m)         //11.

{

int i,j,sum[N]

double ave[N]

for(i=0i<ni++)

{

sum[i]=0

for(j=0j<mj++)

{

sum[i]=sum[i]+stu[i].score[j]

}

ave[i]=(double)sum[i]/m

}

for(i=0i<ni++)

{

printf("ID:%10ld,Name:%sn",stu[i].studentID,stu[i].studentName)

for(j=0j<mj++)

{

printf("Score %d :%dn",j+1,stu[i].score[j])

}

printf("Allscore=%dn平均分%fn",sum[i],ave[i])

}

}

文件处理函数:

void WritetoFile(STU stu[],int n,int m)     //将每个学生的记录信息写入文件

{

Tota(stu,n,m)

Datasort_2 (stu,n,m)

FILE *fp

if((fp=fopen("student.txt","w"))==NULL)

{

printf("Failure to open student.txt!n")

exit(0)

}

fwrite(stu,sizeof(STU),n,fp)

fclose(fp)

}

int ReadfromFile(STU stu[],int n,int m)//从文件中读出每个学生的记录信息并显示

{

FILE *fp

int i

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

{

printf("Failure to open student.txt!n")

exit(0)

}

for(i=0!feof(fp)i++)

{

fread(&stu[i],sizeof(STU),1,fp)

}

fclose(fp)

printf("Total student is %d.n",i-1)

n=i-1

List(stu,n,m)      //输出从文件中读出的信息到屏幕上

return i-1

}

以上就是关于跪求c语言教务管理系统源代码全部的内容,如果了解更多相关内容,可以关注,你们的支持是我们更新的动力!

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【学生教务管理系统代码】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/808696.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0345秒, 内存占用2.02 MB, 访问数据库22次

陕ICP备14005772号-15