中南大学c语言课程实践报告
- 格式:doc
- 大小:62.00 KB
- 文档页数:12
中南大学C语言程序设计实践报告题目学生信息管理系统学生姓名张眼指导教师刘伟荣学院信息科学与工程学院专业班级电气信息1113班完成时间2012年6月28日星期四1.设计任务及设计目标学生信息管理系统是基于系统主菜单的操作来实现学生数据的录入、修改、查询和统计等系统的基本功能。
达到对学生信息的存储、统计、管理的目的。
需要处理的数据如:班级、学号、姓名等。
实现的功能模块如:数据的录入、数据的修改、数据的插入、数据的查询和数据的统计等。
在实践过程中熟练掌握C语言的基本知识:数据类型(整型、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握函数嵌套调用、文件的读写、链表的应用等。
2.总体设计将整个系统分成若干子模块,设计流程图如下:学生信息管理系统3.详细设计①主函数:一般比较简单,只提供输入,处理,输出的调用函数,void main(){int z;printf("\t\t\t+---------------------------+\n");printf("\t\t\t|学生信息管理系统欢迎您|\n");printf("\t\t\t+---------------------------+\n");printf("\t\t\t+设计者:张眼\n");printf("\t\t\t+指导老师:刘伟荣\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*[6]----不及格学生列表*\n");printf("\t\t\t*[7]----成绩信息查询*\n");printf("\t\t\t*[8]----平均成绩*\n");printf("\t\t\t*[0]----退出系统*\n");printf("\t\t\t********************************\n");printf("请输入您的选择:");scanf("%d",&z);switch(z){case0:tc();break;case1:lr();break;case2:ll();break;case3:cx();break;case4:sc();break;case5:xg();break;case6:bj();break;case7:kc();break;case8:pj();break;default:printf("\n无效选项!");}}while(z!=0);}②输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,可以通过函数void lr() 实现此功能。
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("%d",&p->clas);printf("请输入大物考试成绩:");scanf("%d",&p->pt);printf("请输入大物平时成绩:");scanf("%d",&p->ps);printf("请输入英语考试成绩:");scanf("%d",&p->et);printf("请输入英语平时成绩:");scanf("%d",&p->es);printf("请输入微积分考试成绩:");scanf("%d",&p->ct);printf("请输入微积分平时成绩:");scanf("%d",&p->cs);printf("请输入信号考试成绩:");scanf("%d",&p->xt);printf("请输入信号平时成绩:");scanf("%d",&p->xe);n++;p++;printf("\n1.继续输入.\n0.输入完毕.\n");printf("请选择:");scanf("%d",&y);}while(y==1);printf("提示:输入完毕!你一共输入%d个\n",n);}③查询模块:该模块是通过输入的学生信息(学号或姓名)来查找学生的所有信息并且显示在屏幕上。
通过函数void cx() 来实现。
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){case0:break;case1:printf("请输入学生的学号;");scanf("%ld",&w);printf("\n");for(i=0;i<n;i++)if(stu[i].num==w){printf("\n学号\t姓名\t年龄\t性别\t班级\n");printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i]. clas);j=1;}if(j==0)printf("提示:没有该学生记录,请核对!");break;case2:printf("请输入学生的姓名:");scanf("%s",name);printf("\n");for(i=0;i<n;i++)if(strcmp(name,stu[i].name)==0){printf("\n学号\t姓名\t年龄\t性别\t班级\n");j=1;printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i]. clas);}if(j==0)printf("提示:没有该学生记录,请核对!");break;default:printf("\n提示:无效选项!");break;}}while(c!=0);}else printf("提示:无学生数据,请输入数据!");}④删除模块:该模块通过输入要删除的学生学号,通过学号查找并删除记录。
如果没有学生信息输出提示:无学生数据,请输入数据!通过函数void sc() 实现void sc()/*删除函数*/{long int num;int i,j,e;if(n!=0){printf("学号\t姓名\t年龄\t性别\t班级\n");printf("-----------------------------------------------------\n");for(i=0;i<n;i++)printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].clas);printf("请输入您要删除的学生的学号:");scanf("%ld",&num);printf("\n");for(i=0;i<n;i++)if(num==stu[i].num)j=i;if(j!=(n-1)){for(e=j;e<(n-1);e++){stu[e].num=stu[e+1].num;strcpy(stu[e].name,stu[e+1].name);strcpy(stu[e].sex,stu[e+1].sex);stu[e].age=stu[e+1].age;stu[e].clas=stu[e+1].clas;stu[e].pt=stu[e+1].pt;stu[e].ps=stu[e+1].ps;stu[e].et=stu[e+1].et;stu[e].es=stu[e+1].es;stu[e].ct=stu[e+1].ct;stu[e].cs=stu[e+1].cs;}n--;}else n--;printf("提示:删除完毕!");}else printf("提示:无学生数据,请输入数据!");}⑤修改信息模块:该模块通过输入要修改的学生学号查找学生信息,并显示用户修改的内容信息,供用户选择,根据选项进行修改。