c语言课程设计学生信息管理

上传人:1888****888 文档编号:36240057 上传时间:2021-10-29 格式:DOC 页数:21 大小:118.01KB
收藏 版权申诉 举报 下载
c语言课程设计学生信息管理_第1页
第1页 / 共21页
c语言课程设计学生信息管理_第2页
第2页 / 共21页
c语言课程设计学生信息管理_第3页
第3页 / 共21页
资源描述:

《c语言课程设计学生信息管理》由会员分享,可在线阅读,更多相关《c语言课程设计学生信息管理(21页珍藏版)》请在装配图网上搜索。

1、计算机程序设计(C语言)课程设计报告题目:学生信息管理系统学院:基础科学学院专业:统计学班级:120802姓名:冯帆指导教师:顾煜新设计日期:2013.7.11题目:学生信息管理系统 一、选题背景:学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院

2、校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。二、设计思想:设计总体功能应有6大模块:1. 信息录入模块 : 用来录入学生信息2. 信息修改模块 : 用来修改学生信息3. 信息查找模块 : 用来查找学生信息4. 信息删除模块 : 用来删除学生信息5. 信息清空模块 : 用来清空学生信息6

3、. 信息显示模块 : 用来显示学生信息三、主要解决问题的方法及技术关键1、 主要问题及解决方法1.通过switch语句直接处理多分支选择结构(开关选择结构)switch (表达式) case 常量表达式1: 语句组1 case常量表达式 2:语句组2. case常量表达式n: 语句组n default: 语句组n+1 2.结构体类型其成员均为字符数组3.字符数组4.在c语言中,对普通文件的操作,都是通过文件指针来进行的5.feof(fp)是判断文件尾的函数本程序中从文件中读取数据,使用的是while(!feof(fp)语句,其含义是读取文件中的内容指导文件尾6.fwrite()函数本程序是按数

4、据块读写文件,也是一次读写一组数据返回值:如果操作成功,返回实际的所写的数据;如果文件结束或操作中有错,则返回07.函数名: fflush功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件头文件:原型:int fflush(FILE *stream)fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃非标准8.对学生信息的删除时用到了字符串比较函数2、 技术关键1.打开文件,对数据的保存,清空数据2.对文件的读写四、程序流程图各模块程序流程图设计开始主函数输入语句判断b值选择语句switch(b)7.清空全 部信 息6.全部学生信 息5.删除学生信 息查找学生信

5、 息2.修改学生信 息1.录入学生信息8.退出系 统3.按姓名查询4.按学号查询1.录入学生信息函数选择1 输出提示,输入人数调用函数save()不在判断人数是否在范围在按提示输入学生信息i+按任意键返回菜单将studentinfo中的信息写入到内存在内存中用结构体数组存放信息,用for循环一个个打印到屏幕选择8打开d盘中的studentinfo文件显示全部信息修改学生信息菜单选择2是y就保存N就不保存修改判断a 修改成功找到后提示要修改什么内容用switch选择输入姓名打开文件并读取到内存,用for循环一个个的找出符合条件的学生提示输入要修改的学生姓名修改性别修改qq修改电话修改姓名修改学号

6、修改地址如果没有找到显示没有此人并推出退出模块删除信息菜单选择7判断a值N就取消删除输入的是y就删除输入一个字符aaaAa没有找到就显示没有此人退出保存操作后的信息后退出如果找到询问是否确定删除用循环一个个查找读到内存中的结构体打开文件并写入内存判断有否此项用strcmp比较 按学号查询 按姓名查询查询学生信息有输出信息是否退出退出是否继续查找没有提示没有此人 五、程序清单:#include #include #include #include void exchange();void type(); /*输入函数*/void save(); /*保存函数*/void clear();void

7、 find_by_name();/*通过姓名查找*/void find_by_numble();/*通过学号*/void dele();/*删除函数*/int openfile();/*打开文件*/void open_and_see();/*打开并查看文件*/struct studentchar num20;/*学号*/char name20;/*姓名*/char sex10;/*性别*/char age5;/*年龄*/char birthday15;/*/char QQ12;/*QQ*/char telephone15;/*电话*/char address100;/*地址*/stu100;i

8、nt n=0;/全局变量void main()int b,flag=0;system(color 1f);/*修改控制台的颜色信息,改为白字蓝底的模式*/while(1)/*菜单*/printf(nttt欢迎进入学生信息管理系统!n);printf(n-);printf(-);printf(nttt 1.录入学生信息。);printf(nttt 2.修改学生的信息。);printf(nttt 3.按姓名查看学生信息);printf(nttt 4.按学号查看学生信息); printf(nttt 5.删除学生信息);printf(nttt 6.打开这个文件);printf(nttt 7.清空所有信

9、息); printf(nttt 8.退出);printf(nn-);printf(-n);printf(nnttt 请选择你要做的操作:);scanf (%d,&b);printf(nn);switch(b)case 1: type();break;/*录入学生信息函数。*/case 2: exchange();break;case 3: find_by_name();break;case 4: find_by_numble();break; case 5: dele();break;case 6: open_and_see();break;case 7: clear();break; cas

10、e 8: flag=1;break; default: printf(nnttt输入错误,请重新输入!n);if(flag) break; /*学生信息录入模块*/void type()int i;printf(ttt 请输入学生人数:);scanf(%d,&n);for(i=0;in;i+)printf(ttt-n);printf(ttt请输入姓名:);scanf(%s,&stui.name);printf(ttt请输入学号:);scanf(%s,&stui.num);printf(ttt请输入性别:);scanf(%s,&stui.sex);printf(ttt请输入年龄:);scanf(

11、%s,&stui.age);printf(ttt请输入生日:);scanf(%s,&stui.birthday);printf(ttt请输入QQ号:);scanf(%s,&stui.QQ);printf(ttt请输入电话:);scanf(%s,&stui.telephone);printf(ttt请输入地址:);scanf(%s,&stui.address);printf(nttt按任意键返回:);getch();/*控制台(键盘),获取一个字符,有些编译环境会在程序运行结束自动退出,出现运行程序的时候屏幕一闪就消失的现象,程序结尾加上getch( )让程序运行窗口停留显示输入字符后退出*/s

12、ave(); /*把信息保存为文件到磁盘模块*/void save()FILE *fp;int i,j;char chose;for(j=1;j20;j+)printf(nttt确实要进行以上操作?yes or non);printf(nnttttYtNnntttt );scanf(%s,&chose);if(chose=y|chose=Y)j=30;if(fp=fopen(d:studentinfo.txt,a+)=NULL)printf(nntttt文件打开错误!nntttt按任意键返回菜单);getch();return;for(i=0;in;i+)if(fwrite(&stui,siz

13、eof(struct student),1,fp)!=1)printf(nntttt文件写入错误!n); fclose(fp);printf(nnntttt操作成功!);printf(nnttt 按任意键返回菜单nntttt );getch();if(chose=n|chose=N)j=30;printf(nntttt操作已取消n);printf(nnttt 按任意键返回菜单nn);getch();if(chose!=n&chose!=N&chose!=y&chose!=Y)printf(nntttt输入错误!n);printf(ntttt请重新选择:n); /*打开文件函数模块*/int o

14、penfile() int i=0;FILE *fp;if(fp=fopen(d:studentinfo.txt,r+)=NULL)printf(ntttt不能打开文件!nnttt 按任意键返回菜单);getch();printf(nn);return -1;for(i=0;!feof(fp);i+)fread(&stui,sizeof(struct student),1,fp);fclose(fp);return(i-1); /*查看学生信息模块*/ /*查看文件中所有的学生信息模块*/void open_and_see()int i=0;FILE *fp;if(fp=fopen(d:stu

15、dentinfo.txt,r)=NULL)printf(ntttt不能打开文件!nnttt 按任意键返回菜单);getch();printf(nn);return; printf(n 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n);for(i=0;!feof(fp);i+)stui=stu150;/先将内存中存在的数据清空。在读。fseek(fp,i*sizeof(struct student),SEEK_SET);fread(&stui,sizeof(struct student),1,fp);printf( %-9s%-9s%-6s%-6s%-14s%-12s

16、%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telephone,stui.address);fclose(fp); printf(nnnttt 按任意键返回菜单:);getch();printf(nn); /*删除学生信息模块*/void dele() FILE *fp;char chose;int i,j;char a;char name20;system(color 1f);n=openfile();printf(nttt 输入要删除学生名字:);scanf(%s,name);printf

17、(n 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n); for(i=0;in;i+)if(strcmp(stui.name,name)=0)break; /注意如果没有break最后i的值将是10printf( %-9s%-9s%-6s%-6s%-14s%-12s%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telephone,stui.address); if(i=n)printf(nntttt没有此人nnttt 按任意键返回菜单);getch();printf(

18、nn);return;elseprintf(nnttt 这是第%d个学生,i+1);printf(nnttt是否确定删除?是就输入Ynntttt );fflush(stdin);scanf(%c,&a);if(a=y|a=Y) for(;in;i+) stui=stui+1;/后面的值一个一个覆盖前面的值printf(nntttt删除成功!n);n=n-1;fflush(stdin);for(j=1;j20;j+)printf(nttt确实要进行以上操作?yes or non);printf(nnttttYtNnntttt );scanf(%c,&chose);if(chose=y|chose

19、=Y)j=30;fp=fopen(d:studentinfo.txt,w);/一定要先打开文件。for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(nntttt文件写入错误!n); fclose(fp);printf(nnntttt操作成功!);printf(nnttt 按任意键返回菜单:);printf(nn);getch();if(chose=n|chose=N)j=30;printf(nntttt操作已取消n);printf(nnttt 按任意键返回菜单:);getch();printf(nn);if(

20、chose!=n&chose!=N&chose!=y&chose!=Y)printf(nntttt输入错误!n);printf(ntttt请重新选择:n); /*按姓名查找模块*/void find_by_name()int i,m=0;char name20;n=openfile();printf(nttt 输入要查找学生名字:);scanf(%s,name);printf(n-nn);printf( 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n); for(i=0;in;i+)if(strcmp(stui.name,name)=0)m+; printf( %-

21、9s%-9s%-6s%-6s%-14s%-12s%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telephone,stui.address); if(m=0) printf(ntttt没有这人!);printf(nnttt 按任意键退出:);getch();printf(nn); /*按学号查查模块*/void find_by_numble()int i,m=0;char num20;n=openfile();printf(nttt 输入要查找学生学号:);scanf(%s,&num);prin

22、tf(n-nn);printf( 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n); for(i=0;in;i+)if(strcmp(stui.num,num)=0)m+;printf( %-9s%-9s%-6s%-6s%-14s%-12s%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telephone,stui.address); if(m=0)printf(ntttt没有这人!);printf(nnttt 按任意键退出:); getch();printf(nn);

23、 /*按学号排序查看模块*/void find_by_paixu ()int i,j;n=openfile();for(i=0;in;i+)for(j=i;j0)stu99=stui;stui=stuj;stuj=stu99;printf(n-nn);printf( 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n); for(i=0;in;i+)printf( %-9s%-9s%-6s%-6s%-14s%-12s%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telep

24、hone,stui.address);if(n=0) printf(ntttt没有这人!);printf(nnttt 按任意键退出:);getch();printf(nn); /*清空所有信息模块*/void clear()char a;FILE *fp;printf(nttt 确定删除?删除后无法恢复!nnttt 按enter键确认删除nntttt );fflush(stdin);scanf(%c,&a);if(a=n)if(fp=fopen(d:studentinfo.txt,w+)=NULL)printf(nnttt打开文件失败,不能删除);return;elseprintf(ntttt

25、 成功删除!nntttt按任意键返回);fflush(stdin);getch();printf(nn);elseprintf(nntt 你没有进行清空操作!按任意键返回菜单);fflush(stdin);getch();printf(nn);return;fclose(fp); /*学生信息修改模块*/void exchange()int i,m=0,j,a;char name20,chose;FILE *fp;n=openfile();if(n=-1)return;/打开失败则返回菜单 elseprintf(nttt 输入要修改学生名字:);scanf(%s,name);printf(n-

26、nn);printf( 学号 姓名 性别 年龄 生日 QQ号 电话 地址nn);printf(-n); for(i=0;in;i+)if(strcmp(stui.name,name)=0)j=i;/如果找到这个人就记住这个人的位置m+; printf( %-9s%-9s%-6s%-6s%-14s%-12s%-14s%sn,stui.num,stui.name,stui.sex,stui.age,stui.birthday,stui.QQ,stui.telephone,stui.address);if(m=0) printf(ntttt没有这人!);printf(nnttt 按任意键退出:);

27、getch();printf(nn);return;elseprintf(nttt 选择要修改学生什么信息:); printf(nnttt-n);printf(ntttt1. -学号);printf(ntttt2. -姓名);printf(ntttt3. -年龄);printf(ntttt4. -性别);printf(ntttt5. -生日);printf(ntttt6. -QQ号);printf(ntttt7. -电话);printf(ntttt8. -地址);printf(nnttt-nntttt );fflush(stdin);scanf(%d,&a);switch(a)case 1 :

28、 printf(nttt 新学号:); fflush(stdin); scanf(%s,stuj.num);break; case 2 : printf(nttt 新姓名:); fflush(stdin); scanf(%s,stuj.name);break;case 3 : printf(nttt 新年龄:); fflush(stdin); scanf(%s,stuj.age);break; case 4 : printf(nttt 新性别:); fflush(stdin); scanf(%s,stuj.sex);break;case 5 : printf(nttt 新生日:); fflus

29、h(stdin); scanf(%s,stuj.birthday);break; case 6 : printf(nttt 新QQ号:); fflush(stdin); scanf(%s,stuj.QQ);break; case 7 : printf(nttt 新电话:); fflush(stdin); scanf(%s,stuj.telephone);break; case 8 : printf(nttt 新地址:); fflush(stdin); scanf(%s,stuj.address);break;fflush(stdin);for(j=1;j20;j+)printf(nttt确实要

30、进行以上操作?yes or non);printf(nnttttYtNnntttt );scanf(%c,&chose);if(chose=y|chose=Y)j=30;fp=fopen(d:studentinfo.txt,w);/一定要先打开文件。for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(nntttt文件写入错误!n); fclose(fp);printf(nnntttt操作成功!);printf(nnttt 按任意键返回菜单:);getch();printf(nn);return;if(chose=n|chose=N)j=30;printf(nntttt操作已取消n);printf(nnttt 按任意键返回菜单:);getch();printf(nn);return;if(chose!=n&chose!=N&chose!=y&chose!=Y)printf(nntttt输入错误!n);printf(ntttt请重新选择:n);六、总结、设计结果说明1、 设计优点:结构清楚思路明了,方便使用2、 设计不足: 没有充分利用所学知识,运用知识点较单一,只有文件型指针.没有设计按学号排序的模块

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!