资源描述:
《c语言学籍管理系统实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告课程程序设计基础实验名称课内实验共5页系别 计算机系专业班级 姓名学号实验题目:使用C编程实现一个学籍管理系统1.程序设计与分析程序实现的功能1.提供基本的菜单选项,能根据不同的选项执行不同操作;2.对学生信息进行录入信息、删除学生信息、查询信息、学生信息排序、学生信息统计输出的操作;数据类型学生信息:结构体数组学生学号、班级、姓名:字符串数组学生的三个成绩及总分:浮点型变量用户选项、计数器:整形变量各个功能模块:被调函数主函数核心算法主界面——功能选择退出输出排序查找删除录入2.程序设计中存在的问题和解决思路存在问题:1.从调用函数返回主函数后
2、无法再次调用主函数。2.全程使用数组而没用指针。3.不会编写退出程序的指令。4.一些基础性的语法错误。解决思路:1.在被调函数中使用return;语句,在主函数中利用while(1)循环,使每次返回主函数均可再次调用主函数。2.再设置一个指向结构体的指针,利用该指针的自增输出结构体。3.在用户选择为退出程序时,在跳出switch函数后再利用一个break;语句跳出while循环,读取return0;语句,退出程序。4.利用编译器中的build功能进行语法筛查。3.实验总结收获:1.懂得了编写程序前计划好核心算法的重要性。2.对于调用函数有了更清楚的认识,
3、可以更加熟练地运用return语句。3.更加了解结构体,熟悉了结构体指针、结构体数组。4.熟练掌握输入输出语句。5.学会分块编译程序,调试程序更加熟练。不足:1.对于指针的理解不足,没有用指针做成链表进行函数间的调用。2.尚存在一些基础性的语法错误,这要通过复习课本、上机实验来消灭这些错误。3.对于调用函数掌握不足,可以尝试着做一些带返回值的函数。4.源代码清单#include#includestructStudent{charid[10];charcla[10];charname[10];floatscore1;f
4、loatscore2;floatscore3;floatsum;}stu[3],mark,temp,*p;/*学生信息结构体数组,mark用来标记待删除的学生信息,temp用来交换,*p指向结构体数组*/intchoice,i,j;charstr1[10],str2[10]={"no"};//用以判断是否继续voidhomepage()//输出主页面并获取用户的选项{printf("1.input2.delete3.select4.order5.output6.quitpleaseinputyouroption");scanf
5、("%d",&choice);}voidinput()//输入学生信息{for(i=0;;i++,p++){printf("id");scanf("%s",&stu[i].id);printf("class");scanf("%s",&stu[i].cla);printf("name");scanf("%s",&stu[i].name);printf("score1");scanf("%f",&stu[i].score1);printf("score2");scanf("%f",&stu[i].score2);printf("score3");scanf
6、("%f",&stu[i].score3);stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;printf("continue?");scanf("%s",str1);if(strcmp(str1,str2)==0)break;}return;}voiddel()//用指针将数据输出,将用户想找到的学生信息进行标记{charfind[10];scanf("%s",find);for(i=0,p=stu;i<3,p7、d)!=0)&&(strcmp(stu[i].id,find)!=0)){printf("%s,%s,",p->id,p->cla);printf("%s,",p->name);printf("%4.1f,%4.1f,%4.1f,",p->score1,p->score2,p->score3);printf("%5.1f",p->sum);}if((strcmp(stu[i].name,find)==0)
8、
9、(strcmp(stu[i].id,find)==0))mark=stu[i];}printf("continue?");scanf("%s
10、",str1);if(strcmp(str1,str2)==0)return;e