《C语言程序设计》课程设计报告题目:学生信息管理系统专业:电气工程及其自动化班级:电气002班学号:10010170姓名:闫亚运完成日期:2011年6月15日第一章选题意义1.1意义现代科学多元化已经开始了。随着科学技术的快速发展和人们生活水平的提高,信息技术越来越深入人心。计算机在人类生活和学习中充当着很重要的作用。随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。而建立一个方便快捷的管理系统是每个管理者所希望的。我设计的是一个关于学生信息管理的数据库系统,通过这个系统管理员可以简捷、方便的对学生信息进行增加、浏览、删除等功能,而用户也可以通过这个系统对学生信息进行查询等功能,从而使学校和个人更方便的查找,浏览学生的信息,并通过成绩排序对学生的情况作进一步的了解,对学生的管理更加便捷。1.2目标通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。第二章系统功能模块设计2.1功能模块设计学生管理系统:1、录入学生信息2、删除学生信息3、浏览学生信息4、查找学生信息4、1按学号查找4、2按姓名查找4、3按成绩查找5、根据总成绩排序6、保存学生信息7、将文件导出8、退出信息系统2.2函数的设计与描述(1)数据结构设计本程序中,对于学生信息的记录用了结构数组的形式,对于主要数据结构的应用如下:结构数组:Typedefstructstudent/*结构体*/{charxuehao[20];/*学号*/charxingming[20];/*姓名*/intscore[M];/*分数*/intsum;/*总成绩*/}stu[N];(2)模块接口设计本程序执行的入口是main函数,然后用switch语句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要的功能。最后,再从main函数中结束整个程序的运行。其中涉及到被调用的函数有:Voidmenu显示帮助信息;Voiddengji登记学生信息;Voidshanchu删除学生信息;Voidliulan浏览学生信息;Voidchazhao查找学生信息;Voidpaixu学生信息排序;Voidcunchu存储学生信息;Voiddaochu导出学生信息;第三章程序流程图选择1选择3选择2选择4选择5选择7选择6选择8输出界面选择操作退出系统结果开始输入学生信息删除学生信息浏览学生信息查找学生信息学生成绩排序导出学生信息存储学生信息是是是是是是是是否否否否否否否否第四章源代码摘录#includestdio.h#includestring.h#includestdlib.h#includeconio.h#defineM3#defineN100typedefstructstudent{charxuehao[20];charxingming[20];intscore[M];intsum;}STUDENT;STUDENTstudent[N];intrenshu=0;voidmenu();voidfhzjm()//返回主界面函数{charbiaozhi[20];printf(\n);printf(还需要操作么?如果需要操作请输入:yes,否则请输入:no\n);scanf(%s,biaozhi);if(strcmp(biaozhi,yes)==0){menu();}elseif(strcmp(biaozhi,no)==0)exit(0);else{printf(请输入正确的字符,谢谢!\n);fhzjm();}}voidDengJi()//登记学生信息函数{intrs;inti,j,k=1;system(CLS);printf(请输入需要输入几个学生信息:);scanf(%d,&rs);for(i=renshu;irenshu+rs;i++,k++){printf(请输入第%d个学生的学号:,k);scanf(%s,student[i].xuehao);printf(请输入学生的姓名:);scanf(%s,student[i].xingming);printf(请输入学生%d门课的成绩,M);for(j=0;jM;j++){printf(请输入第%d门课的成绩:,j+1);scanf(%d,&student[i].score[j]);student[i].sum+=student[i].score[j];}}renshu=renshu+rs;fhzjm();}voidShanChu()//删除全部学生信息或者指定学生信息的函数{charshanchuinfo[10];system(CLS);printf(删除全部学生信息请输入\all\,删除指定学号的学生信息请输入\one\\n);scanf(%s,shanchuinfo);if(strcmp(shanchuinfo,all)==0){renshu=0;printf(删除成功\n\n);}elseif(strcmp(shanchuinfo,one)==0){structstudent*p=NULL;charchoice[20];inti,j,k=0;printf(请输入你要删除的人的学号:);scanf(%s,choice);for(i=0;irenshu;i++){if(strcmp(choice,student[i].xuehao)==0){k=1;j=i;break;}}if(k){if(renshu==1){p=&student[0];free(p);renshu=0;}else{for(i=j;irenshu;i++){student[i]=student[i+1];}renshu=renshu-1;}printf(删除成功\n\n);}}else{printf(输入数据错误!\n);ShanChu();}fhzjm();}voidLiuLan()//查看所有学生的信息函数{inti,j;system(CLS);if(renshu==0){printf(系统里面没有任何学生的信息!\n);}else{for(i=0;irenshu;i++){printf(第%d个学生的学号为:%s\n,i+1,student[i].xuehao);printf(第%d个学生的姓名为:%s\n,i+1,student[i].xingming);for(j=0;jM;j++){printf(第%d个学生的第%d门课的成绩:%d\n,i+1,j+1,student[i].score[j]);}printf(第%d个学生的总成绩为:%d\n,i+1,student[i].sum);}}fhzjm();}voidChaZhao()//根据不同的方式查找学生信息函数{charchoice[10],xinxi[20];inti,j,k=0;system(CLS);if(renshu==0){printf(系统里面没有任何学生的信息!\n);fhzjm();}printf(三种查找方式:学号,姓名,成绩,请输入查找方式:);scanf(%s,choice);if(strcmp(choice,学号)==0){printf(请输入需要查找学生的学号:);scanf(%s,xinxi);for(i=0;irenshu;i++){if(strcmp(xinxi,student[i].xuehao)==0){j=i;k=1;break;}}if(k==0)printf(输入信息有误:\n);else{printf(您所查找的学生的信息为:\n);printf(----学号----姓名----英语成绩----高数成绩----计算机成绩\t\n);printf(------%s------%s-------%d---------%d-------------%d\t\n,student[j].xuehao,student[j].xingming,student[j].score[0],student[j].score[1],student[j].score[2]);}}elseif(strcmp(choice,姓名)==0){printf(请输入需要查找学生的姓名:\n);scanf(%s,xinxi);for(i=0;irenshu;i++){if(strcmp(xinxi,student[i].xingming)==0){j=i;k=1;break;}}if(k==0)printf(输入信息有误:\n);else{printf(您所查找的学生的信息为:\n);printf(----学号-----姓名-----英语成绩-----高数成绩-------计算机成绩---\n);printf(----%s-----%s-----------%d-----------%d---------------%d---\n,student[j].xuehao,student[j].xingming,student[j].score[0],student[j].score[1],student[j].score[2]);}}elseif(strcmp(choice,成绩)==0){printf(请输入需要查找学生的成绩:\n);scanf(%s,xinxi);for(i=0;irenshu;i++){if(strcmp(xinxi,student[i].xingming)==0){j=i;k=1;break;}}if(k==0)printf(输入信息有误:\n);else{printf(您所查找的学生的信息为:\n);printf(-----学号-----姓名-----英语成绩-----高数成绩-------计算机成绩-----\n);printf(-----%s-----%s-----------%d-----------%d---------------%d-----\n,student[j].xuehao,student[j].xingming,student[j].score[0],student[j].score[1],student[j].score[2]);}}fhzjm();}voidPaiXu()//根据总成绩从高到底排序{structstudent*p1[N],**p2,*temp;inti,j;system(CLS);p2=p1;//将数组的初始地址赋给指针数组for(i=0;irenshu;i++){p1[i]=student+i;}//冒泡法排序for(i=0;irenshu;i++){for(j=i+1;jrenshu;j++){if((*(p2+i))-sum(*(p2+j))-sum){temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;}}}printf(按照总成绩排序之后的信息为:\n);printf(-----学号-----姓名------总成绩-----\n);for(i=0;irenshu;i++){printf(-----%s-----%s--------%d\n,(*(p2+i))-xuehao,(*(p2+i))-xingming,(*(p2+i))-sum);}fhzjm();}voidCunChu(){inti;FILE*rs;if((rs=fopen(card.dat,wb))==NULL){printf(notopen);exit(0);}for(i=0;irenshu;i++){fwrite(&student[i],sizeof(student[i]),1,rs);}if(