C程序设计实验报告 关于一个完整的学籍
管理系统
实验报告
实验题目:使用 C编程实现一个学籍管理系统 班级:
姓名:
1.程序设计与分析
要求程序能实现以下基本功能:
.提供基本的菜单选项,能根据不同的选项执行不同操
作;.对学生信息进行录入,修改,删除、查询等操作; . 对学生信息进行统计、排序等操作。
.采用数据类型:整型,浮点型,字符型,指针类型,
结构体类型.核心算法:#define MAX 10 //MAX 代表学籍
管理系统所能处理的最大学生数虽,宏定义后,依据实际情 况对程序的对应修改更易进行 //实际代码中是将子函数的定义写在了 main函数的前面,但此处为了程序结构清晰将 main函数写在了前面,因此 main函数中没有子函数声明的 语句int main ( 进行各种类型的变H定义以及初始化,
以供后续程序使用定义一个结构体类型,并定义一个该类 型的结构体变虽用于存储将要录入的学生信息数据:
struct Student ( char Id[MAX];// 学号 char name[50];// 姓名int clas;// 班级float score[4];// 三科成绩以及总
爱心—用心—怛心
成绩} student[MAX];
指导老师:
定义若干指针变H用于将 main函数中的变H地址传递
TOC \o "1-5" \h \z 给各子函数,使子函数能够改变 main函数中的变虽的值 定
义各种所需变H 定义整型变H mingling 定义一个变H num 来记录总人数的变化并将其初始化为零 for(;;) { 输出主
菜单选项 输入数字命令并赋值给整型变H mingling 判断
若mingling=1,执行函数input进行学生信息输入操作 若
mingling=2,执行函数 del进行学生信息删除操作 若
mingling=3,执行函数selet进行学生信息选择输出操作 若
mingling=4,执行函数order进行学生信息整体排序操作 若
mingling=5,执行函数output进行学生信息全体输出操作 若 mingling=6,执行 break 语句跳出 for 循环} return 0; } void input( 通过指针引用学生信息、当前学生总人数等数
据)//我的源代码中每个子函数都是用了许多指针将结构体 中的元素一一引用,此处可以改为利用指向结构体变虽的指 针,代码会简洁许多 {利用指针来引用主函数中的学生信
息变H定义整型变Hl i用作循环定义字符数组panduan[10] 用作判断整个学生数据的录入操作是否结束 for(i=0;;i++)
{输出 输入学号 输出 输入班级 输出 输入姓名 输出 输 入成绩1输出输入成绩2输出输入成绩3将存储总成绩 数据的变虽赋值为成绩 1,成绩2,成绩3的和 利用指针使
main函数中记录学生人数的变H num自增1输出输入命令
并赋值给字符数组 panduan判断字符串panduan与是否相 等 若相等则执行 break语句跳出循环} } void del( 通过
指针引用学生信息、当前学生总人数等数据 )(定义字符数
组panduan[10]用于在已有学生信息中查找需要删除的对应 学生信息 定义整型变虽 h用于判断是否找到了所需删除的 学生信息 定义字符数组jueding[10]用于判断用户的删除 操作是否全部结束定义整型变虽i用于进行循环查找所需 删除的学生//以下使用num的语句均指通过指针引用 main
函数中的num变虽,为了书写简便,省略了指针引用的过程 for(;;) ( h=0;输入所需删除学生的信息关键字
for(i=0;i*ban[i+1]) { } for(k=1;k<=*renshu-1;k++)
for(i=0;i<=*renshu-1-k;i++) if(*ban[k]==*ban[k+1])
q=*ban[i];*ban[i]=*ban[i+1];*ban[i+1]=q;
strcpy(c,hao[i]);strcpy(hao[i],hao[i+1]);strcpy(hao [i+1],c);
strcpy(c,ming[i]);strcpy(ming[i],ming[i+1]);strcpy( ming[i+1],c); for(m=0;m<=3;m++) { }
f=*fen[i][m];*fen[i][m]=*fen[i+1][m];*fen[i+1][m]=f; if(*fen[k][3]<*fen[k+1][3]) { q=*ban[i];*ban[i]=*ban[i+1];*ban[i+1]=q;
strcpy(c,hao[i]);strcpy(hao[i],hao[i+1]);strcpy(hao 爱心—用心—怛心
strcpy(c,ming[i]);strcpy(ming[i],ming[i+1]);strcpy(
ming[i+1],c); } for(i=0;i<=*renshu-1;i++)
( for(m=0;m<=3;m++) ( } f=*fen[i][m];*fen[i][m]=*fen[i+1][m];*fen[i+1][m]=f;
printf(\i][1],*fen[i][2],*fen[i][3]); } void
output(int *ban[MAX],char *ming[MAX],char
*hao[MAX],float *fen[MAX][4],int *renshu) ( int i;
for(i=0;i<=*renshu-1;i++) ( }
printf(\i][1],*fen[i][2],*fen[i][3]); } } int main()
( int *banji[MAX],*number,i,num,mingling; char
*xingming[MAX],*xuehao[MAX]; float *chengji[MAX][4];
struct Student ( char Id[10]; char name[50]; int
clas; float score[4]; } student[MAX]; num=0;
for(i=0;i<=MAX-1;i++) ( } number=#
banji[i]=&student[i].clas;
xingming[i]=&student[i].name[0];
xuehao[i]=&student[i].Id[0];
chengji[i][0]=&student[i].score[0];
chengji[i][1]=&student[i].score[1];
chengji[i][2]=&student[i].score[2];
chengji[i][3]=&student[i].score[3]; for(;;)
( printf(\your option\\n\ }
} return 0; scanf(\if(mingling==1)
input(banji,xingming,xuehao,chengji,number);
if(mingling==2)
del(banji,xingming,xuehao,chengji,number);
if(mingling==3)
selet(banji,xingming,xuehao,chengji,number);
if(mingling==4)
order(banji,xingming,xuehao,chengji,number);
if(mingling==5)
output(banji,xingming,xuehao,chengji,number);
if(mingling==6) break;
for(;;) ( printf(\your option\\n\ }
} return 0; scanf(\if(mingling==1)
input(banji,xingming,xuehao,chengji,number);
if(mingling==2)
del(banji,xingming,xuehao,chengji,number);
if(mingling==3)
selet(banji,xingming,xuehao,chengji,number);
if(mingling==4)
order(banji,xingming,xuehao,chengji,number);
if(mingling==5)
output(banji,xingming,xuehao,chengji,number);
if(mingling==6) break;