c语言程序设计之学生信息管理系统.doc_第1页
c语言程序设计之学生信息管理系统.doc_第2页
c语言程序设计之学生信息管理系统.doc_第3页
c语言程序设计之学生信息管理系统.doc_第4页
c语言程序设计之学生信息管理系统.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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)数据结构设计本程序中,对于学生信息的记录用了结构数组的形式,对于主要数据结构的应用如下:结构数组:Typedef struct student /*结构体*/char xuehao20; /* 学号*/char xingming20; /* 姓名*/int scoreM; /* 分数*/int sum; /* 总成绩*/stuN;(2)模块接口设计 本程序执行的入口是main函数,然后用switch语句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要的功能。最后,再从main函数中结束整个程序的运行。 其中涉及到被调用的函数有:Void menu 显示帮助信息;Void dengji 登记学生信息 ;Void shanchu 删除学生信息 ;Void liulan 浏览学生信息 ;Void chazhao 查找学生信息;Void paixu 学生信息排序;Void cunchu 存储学生信息;Void daochu 导出学生信息; 第三章 程序流程图选择1选择3选择2选择4选择5选择7选择6选择8 输出界面 选择操作退出系统结果 开始输入学生信息删除学生信息浏览学生信息查找学生信息学生成绩排序导出学生信息存储学生信息是是是是是是是是否否否否否否否否第四章 源代码摘录#include #include #include #include #define M 3#define N 100typedef struct studentchar xuehao20;char xingming20;int scoreM;int sum;STUDENT;STUDENT studentN;int renshu=0;void menu();void fhzjm()/返回主界面函数char biaozhi20;printf(n);printf(还需要操作么?如果需要操作请输入:yes,否则请输入:non);scanf(%s,biaozhi);if(strcmp(biaozhi,yes)=0)menu();else if(strcmp(biaozhi,no)=0)exit(0);else printf(请输入正确的字符,谢谢!n);fhzjm();void DengJi()/登记学生信息函数int rs;int i,j,k=1;system(CLS);printf(请输入需要输入几个学生信息:);scanf(%d,&rs);for(i=renshu;irenshu+rs;i+,k+)printf(请输入第%d个学生的学号:,k);scanf(%s,studenti.xuehao);printf(请输入学生的姓名:);scanf(%s,studenti.xingming);printf(请输入学生%d门课的成绩,M);for(j=0;jM;j+)printf(请输入第%d门课的成绩:,j+1);scanf(%d,&studenti.scorej);studenti.sum += studenti.scorej;renshu=renshu+rs;fhzjm();void ShanChu()/删除全部学生信息或者指定学生信息的函数char shanchuinfo10;system(CLS);printf(删除全部学生信息请输入all,删除指定学号的学生信息请输入onen); scanf(%s,shanchuinfo);if(strcmp(shanchuinfo,all)=0)renshu=0;printf(删除成功nn);else if(strcmp(shanchuinfo,one)=0)struct student *p=NULL;char choice20;int i,j,k=0;printf(请输入你要删除的人的学号:);scanf(%s,choice); for(i=0;irenshu;i+)if(strcmp(choice,studenti.xuehao)=0)k=1;j=i;break;if(k)if(renshu=1) p=&student0; free(p); renshu=0;elsefor(i=j;irenshu;i+)studenti=studenti+1;renshu=renshu-1;printf(删除成功nn);elseprintf(输入数据错误!n);ShanChu();fhzjm();void LiuLan()/查看所有学生的信息函数int i,j;system(CLS);if(renshu=0)printf(系统里面没有任何学生的信息!n);elsefor(i=0;irenshu;i+)printf(第%d个学生的学号为:%sn,i+1,studenti.xuehao);printf(第%d个学生的姓名为:%sn,i+1,studenti.xingming);for(j=0;jM;j+)printf(第%d个学生的第%d门课的成绩:%dn,i+1,j+1,studenti.scorej); printf(第%d个学生的总成绩为:%dn,i+1,studenti.sum);fhzjm();void ChaZhao()/根据不同的方式查找学生信息函数char choice10,xinxi20;int i,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,studenti.xuehao)=0)j=i;k=1;break;if(k=0) printf(输入信息有误:n);elseprintf(您所查找的学生的信息为:n);printf(-学号-姓名-英语成绩-高数成绩-计算机成绩tn);printf(-%s-%s-%d-%d-%dtn,studentj.xuehao,studentj.xingming,studentj.score0,studentj.score1,studentj.score2);else if(strcmp(choice,姓名)=0)printf(请输入需要查找学生的姓名:n);scanf(%s,xinxi);for(i=0;irenshu;i+)if(strcmp(xinxi,studenti.xingming)=0)j=i;k=1;break;if(k=0) printf(输入信息有误:n);elseprintf(您所查找的学生的信息为:n);printf(-学号-姓名-英语成绩-高数成绩-计算机成绩-n);printf(-%s-%s-%d-%d-%d-n,studentj.xuehao,studentj.xingming,studentj.score0,studentj.score1,studentj.score2);else if(strcmp(choice,成绩)=0)printf(请输入需要查找学生的成绩:n);scanf(%s,xinxi);for(i=0;irenshu;i+)if(strcmp(xinxi,studenti.xingming)=0)j=i;k=1;break;if(k=0) printf(输入信息有误:n);elseprintf(您所查找的学生的信息为:n);printf(-学号-姓名-英语成绩-高数成绩-计算机成绩-n);printf(-%s-%s-%d-%d-%d-n,studentj.xuehao,studentj.xingming,studentj.score0,studentj.score1,studentj.score2);fhzjm();void PaiXu()/根据总成绩从高到底排序struct student *p1N,*p2,*temp;int i,j;system(CLS);p2=p1;/将数组的初始地址赋给指针数组 for( i=0;irenshu;i+) p1i=student+i; /冒泡法排序 for( i=0;irenshu;i+) for( j=i+1;jsumsum) temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp; printf(按照总成绩排序之后的信息为:n); printf(-学号-姓名-总成绩-n); for( i=0;ixuehao,(*(p2+i)-xingming,(*(p2+i)-sum); fhzjm(); void CunChu()int i;FILE *rs;if(rs=fopen(card.dat,wb)=NULL)printf(not open);exit(0);for(i=0;irenshu;i+)fwrite(&studenti, sizeof(studenti), 1, rs);if(ferror(rs)fclose(rs);perror(写文件失败!n);return; printf(存储文件成功!n); fclose(rs); fhzjm();void DaoChu()struct student t;int i=0;FILE* fp = fopen(card.dat, rb);renshu=0;if(NULL=fp)perror(读取文件打开失败!n);return;memset(student,0x0,sizeof(student);while(1)fread(&t,sizeof(t),1,fp);if(ferror(fp)fclose(fp);perror(读文件过程失败!n);return;if(feof(fp)break;studenti=t;i+;fclose(fp); renshu=i;printf(导出文件成功!n);fhzjm();void menu()int n;system(CLS);printf( 学生信息管理系统n);printf( 作者:闫亚运n);printf(-MENU-n);printf( 1.登记学生信息n);printf( 2.删除学生信息n);printf( 3.浏览所有已经登记的学生n);printf( 4.查找n);printf( 4.1.按学号查找n);printf( 4.2按姓名查找n);printf( 4.3按成绩查找n);printf( 5.根据总成绩排序n);printf( 6.存储到文件n);printf( 7.从文件导出n);printf( 8.退出系统n);a:printf( 请选择:); scanf(%d,&n);switch (n)case 1:DengJi();break;case 2:ShanChu();break;case 3:LiuLan();break;case 4:ChaZhao();break;case 5:PaiXu();break;case 6:CunChu();break;case 7:DaoChu();break;case 8:exit(0);break;default:printf(请输入1-8之间的数字,谢谢!n);goto a;main()menu();第五章 程序的运行及结果分析主界面在主界面上选择需要进行什么操作。选择1:则登记一个学生的信息。界面如下:提示输入几个学生的信息,用户输入数据后,系统提示输入学生的学号,姓名和三门课的成绩,用户分别输入数据后,系统提示是否继续操作,如果还继续操作,输入“yes”,则出现下面的界面:如果不需要操作了,则输入“no”,结束整个系统。如果输入内容既不是yes也不是no,比如输入ya,则出现下面界面:如果在主界面再次选择1,则可以在前面的基础上再次登记学生,注意不能把前面的学生覆盖!选择2:可以删除全部学生的信息,也可以删除指定某个学生姓名的信息。当在主界面选择2时,进入下面的界面:如果输入all,则会删除所有的信息。如果删除某个学生的信息,则输入one。当输入one时,则会要求输入需要删除学生的学号,例如输入01,回车以后,确认删除,显示删除成功。输入yes或者no的操作参照选择1.选择3:可以浏览所有学生的信息。回车确认后,出现下面的界面:(本来输入了两个人的信息,但是删除了张三的信息,所以现在只是剩下一个人的信息)可以浏览输入的所有学生的信息(不管输入几次,都要全部显示)。输入yes或者no的操作参照选择1.选择4:进行查找操作。按照不同的方式查找。选择4后,回车确认,出现下面的界面:当输入一种方式进行查找的时候,例如输入姓名则要求输入某个学生的姓名,例如输入李四,显示下面的界面:(其他方式显示类似)注意,如果输入的数据有误,则提示输入错误,如果系统中没有任何学生,则提示没有学生信息。输入yes或者no的操作参照选择1.选择5:回车确认后,显示一下界面,(重新录入的数据)总成绩按照降序排列。输入yes或者no的操作参照选择1.选择6,则可以保存数据。回车确认后,显示文件保存成功!输入yes或者no的操作参照选择1.选择7,导出文件回车确认后则可以继续操作上次保存的数据。输入yes或者no的操作参照选择1第六章 遇到的问题及解决方法在开始进行课程设计时,先进行界面模块的总体把握,充分了解自己要设计的程序的总体的结构,从而,在其过程中能一个模块一个函数进行详细的构思,从而在调试程序时也显得比较轻松,虽说随着程序代码的不断增多、其复杂性不断增大,但是因为是分模块函数一个一个的调试;最后在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论