欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言大作业学生信息管理系统完稿.doc

    • 资源ID:17404149       资源大小:415KB        全文页数:23页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言大作业学生信息管理系统完稿.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流C语言大作业学生信息管理系统完稿.精品文档.武汉工业学院语言 学 院电气与电子工程学院班 级英才班1101学 号111204525姓 名刘兴目录摘要3第一章 综合设计概述31.1综合设计名称31.2任务要求31.3开发环境41.4应用平台4第二章 总体设计42.1系统功能需求分析42.2系统总体设计框架42.3系统功能模块图及各功能模块的目的与意义6第三章详细设计73.1N-S流程图73.1.1主函数main( )73.1.2录入学生基本信息函数student_new( )83.1.3修改学生档案函数student_edit ( )83.1.4注销学生基本信息函数student_del( )83.1.5查找学生基本信息函数search_num ( )93.1.6录入成绩函数score_input( )93.1.7修改成绩函数score_edit( )93.1.8浏览学生成绩函数browser( )103.1.9学生成绩排序函数sort_it( )10第四章 调试分析过程描述114.1调试过程114.2调试发现的问题与解决15第五章 源程序代码21参考文献30摘要大作业为程序设计的第六题 “学生信息管理系统的设计”。在设计中用到了一个主函数和12个自定义函数。主函数实现了菜单操作,可根据数据的输入,控制操作选项。自定义函数则完成了对数据的处理和学生管理的各种功能。如学生信息的录入,查找,修改,成绩的录入,修改和排序,在程序设计中尽量使用模块化,结构化设计,追求功能齐全,界面完整,简洁易读的设计理念。但是,限于内存局限与设计时间限制,本程序的学生人数设计最大为32人,而且不具备读取上次已录入学生信息档案功能。但总体来说,该程序已能满足要求的功能需求。因为本人学识有限,若有未发现的缺陷,敬请谅解第一章 综合设计概述1.1 综合设计名称学生信息管理系统的设计1.2 任务要求学生信息包括学号、姓名、年龄、性别、电话等。试设计一学生的信息管理系统,使之能提供以下功能:(1) 系统以菜单方式工作。(2) 学生信息录入功能(学生信息用文件保存)-输入。(3) 学生信息浏览功能-输出。(4) 查询排序功能:n 按学号查询。n 按学号排序。n 按成绩与总分排序。(5) 学生信息的删除与修改(可选项)。1.3 开发环境开发工具为Microsoft Visual C+ 6.0.1.4 应用平台Windows XP32位。第二章 总体设计2.1 系统功能需求分析(1)建立学生信息,每个学生的信息包括:学号、姓名、年龄、性别、电话等。(2)求出每个学生的总分和平均分。(3)查找:根据学号、姓名中任一项查询该生的基本信息。(4)排序:根据学号、各科分数或总分将学生的信息按照一定的顺序进行排序。(5)根据需要修改学生的基本信息。(6)根据实际情况注销某生的信息。(7)根据实际情况插入某生的信息。(8)将学生信息输出至文本文件中。2.2 系统总体设计框架(1)利用switch语句设计如图所示的主菜单。主选单选项编号1输入学生信息2修改学生信息3注销学生信息4查询学生信息5录 入 成 绩6修 改 成 绩7 浏 览8 输 出0 退 出 图1 学生信息管理系统主菜单(2)选择1后,调用录入函数student_new,进入录入函数后利用输入学生基本信息。(3)选项2后,调用修改信息函数student_edit,先进入查找函数后查找到学生信息并进行修改。(4)选择3后,调用查找函数student_del,查找某个学生的信息。(5)选择4后,调用删除函数search_num,根据需要删除某个学生的信息。(6)选择5后,调用浏览函数score_input,浏览所有学生的信息。(7)选择6后,调用修改成绩函数score_edit,将每个学生的信息排序并全部输出。(6)选择7后,调用浏览函数student_browser,浏览所有学生的信息。(7)选择8后,调用输出函数save,将每个学生的信息全部输出。(8)选择0后,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。排序菜单 输入选项编号1按学号排序2按语文分数查找3按高数分数查找4按外语分数查找5按总分查找6按平均分查找0退 出图2 排序子菜单2.3 系统功能模块图及各功能模块的目的与意义录入学生信 息修改学生信息查 找学生信息录入学生成绩删除学生信 息浏览学生成绩修改学生成绩主模块修改学生信息删除学生信 息修改学生成绩按学号排序按语文排序按数学排序按外语排序按总分排序按平均分排序找 按学号查询输出至文件退出第三章详细设计3.1 N-S流程图3.1.1 主函数main( )主函数主要通过switch()循环语句,实现菜单界面的操作控制,并且发挥了界面友好,模块化等特点,追求语句简洁,调用简单函数,通俗易懂。但是,由于switch语句的局限性,因而在菜单操作过程中使用了goto语句,这与结构化程序设计理念相悖,也是主函数中的最大缺陷。主函数的N-S流程图如下:3.1.2 录入学生基本信息函数student_new( )在编写student_new( )函数时,主要设计思路就是通过判断语句进行递归嵌套,以此达到循环连续输入的效果,减少了操作复杂性。 录入学生基本信息函数N-S流程图如下:当N<32且学号为0时输入32名学生基本信息N=0N+输入S0非0重新执行成绩录入0退出3.1.3 修改学生档案函数student_edit ( )修改学生档案函数则调用了后来的查询函数,通过查询要修改的学生信息,并显示在屏幕上,再重新对学生基本信息进行录入。search_num( ) 函数N-S流程图如下:3.1.4 注销学生基本信息函数student_del( )注销学生的基本信息也是通过调用了后来的查询函数,查询到待修改的同学的学号,并对学号进行清零,实现删除学生信息。student_del( ) 函数N-S流程图如下:输入要查询的学号n如果n=studentsi.numstudentsi.num=03.1.5 查找学生基本信息函数search_num ( )本函数只设计了一种查询方法,及对学号查询,使用循环方法寻找待查学生档案,并将结果显示在屏幕上。student_edit( ) 函数N-S流程图如下:输入要查询的学号n如果n=studentsi.num输出studentsi的基本信息3.1.6 录入成绩函数score_input( )录入成绩函数有两部分组成,其一是判断结构,选择要输入的成绩代码;其二是循环结构,对学号非零的学生进行成绩录入;其三是判断结构,如果需要继续录入其它科成绩,还可以继续录入。score_input( ) 函数N-S流程图如下:输入要录入的成绩代号n如果studentsi.num!=0录入studentsi的分数3.1.7 修改成绩函数score_edit( )修改学生成绩函数则调用了后来的查询函数,通过查询要修改的学生信息,并显示在屏幕上,再重新对学生成绩进行录入。score_edit( ) 函数N-S流程图如下:输入要查询的学号n如果n=studentsi.num修改studentsi的分数3.1.8 浏览学生成绩函数browser( )使用循环函数,对学号非零的学生信息进行循环输出。browser( ) 函数N-S流程图如下:当studentsi.num为非0时输出studentsi的各科成绩3.1.9 学生成绩排序函数sort_it( )学生成绩的排序则在浏览输出后,通过菜单的形式,根据用户需要,可以对学号,语文成绩,数学成绩,外语成绩,物理成绩,化学成绩和总分等进行降序排序,排序使用了次要函数冒泡排序函数Bubblesort()函数和swap()交换函数对结构体进行排序。sort_it( ) 函数N-S流程图如下:第四章 调试分析过程描述4.1 调试过程4.1.1 文件调试主界面:4.1.2 录入学生信息:4.1.3 修改学生信息:4.1.4 注销学4.1.5 查询学生信息:4.1.6 录入学生成绩:4.1.7 修改学生成绩:4.1.8 浏览学生成绩:4.1.9 保存数据到文件:4.2 调试发现的问题与解决该学生信息管理系统,在调试过程修复了以下几个问题:(1) 成绩的students-add函数中return_confirm();在连续录入后的多次执行问题:原代码:scanf("%d",&s0); if (s0=1) student_add(); if(s0=0) if (s0!=1&&s0!=0) printf("nntt >>输入错误!");return_confirm();修改后代码:scanf("%d",&s0);if (s0=1)student_add();else if(s0=0) return_confirm(); else printf("nntt >>输入错误!");return_confirm();(2) 修改学生成绩score_edit函数,在执行时学号不存在时仍然修改问题原代码:if(n=student_search()!=-1) printf("tt >>语文:%d 数学:%d 英语:%dn",studentsn.chinese,studentsn.math,studentsn.english);printf("tt >>请重新输入成绩:nntt >>语文:");scanf("%d",&studentsn.chinese);printf("tt >>数学:");scanf("%s",&studentsn.math);printf("tt >>英语:");scanf("%d",&studentsn.english);return_confirm();修改后代码:if(n=student_search()!=-1&&n!=33) printf("tt >>语文:%d 数学:%d 英语:%dn",studentsn.chinese,studentsn.math,studentsn.english);printf("tt >>请重新输入成绩:nntt >>语文:");scanf("%d",&studentsn.chinese);printf("tt >>数学:");scanf("%s",&studentsn.math);printf("tt >>英语:");scanf("%d",&studentsn.english);return_confirm();if(n=33)return_confirm();(3) 浏览函数中由于学号太长而引起的打印不齐问题原代码:sort_it('1'); while(1)page_title("tt - *浏览*");printf("按数字键选择排序方式或按 0 返回n");printf("学号-1tt姓名tt年龄t语文-2t数学-3t英语-4t总分-5n");for(n=0;n<32;n+)if(INDEXn!=-1)x=INDEXn;printf("%dtt%stt",studentsx.num,studentsx.name);printf("%dt%dt",studentsx.age,studentsx.chinese);printf("%dt%dt",studentsx.math,studentsx.english);printf("%dn",studentsx.chinese+studentsx.math+studentsx.english);修改后代码:sort_it('1');while(1)page_title("tt - *浏览* -");printf("按数字键选择排序方式或按 0 返回n");printf("t学号-1| 姓名| 年龄| 语文-2| 数学-3| 英语-4| 总分-5| 平均分-6|n");for(n=0;n<32;n+)/循环打印学生成绩if(INDEXn!=-1)x=INDEXn;printf("%14d|%10s|",studentsx.num,studentsx.name);printf("%5d|%7d|",studentsx.age,studentsx.chinese);printf("%7d|%7d|",studentsx.math,studentsx.english);printf("%7d|",studentsx.chinese+studentsx.math+studentsx.english); printf("%9d|n",(studentsx.chinese+studentsx.math+studentsx.english)/5);修改后视图:(4) 录入成绩函数的数字超出指定范围的继续操作问题:原代码:printf("ntt >>请用数字键选择科目nntt >>1-语文 2-数学 3-英语nnntt >>");scanf("%d",&s);for(n=0;n<32;n+) if(s!=1&&s!=2&&s!=3)printf("tt >>输入错误!tt >>nn");break;if(studentsn.num!=0)printf("tt >>学号:%dntt >>姓名:%sntt >>成绩:",studentsn.num,studentsn.name);scanf("%d",&t);printf("n");switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break;printf("tt >>若需继续录入,请按1,退出录入请按0.nnntt >>");scanf("%d",&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf("nntt >>输入错误!");return_confirm();修改后代码:printf("ntt >>请用数字键选择科目nntt >>1-语文 2-数学 3-英语nnntt >>");scanf("%d",&s);for(n=0;n<32;n+) if(s!=1&&s!=2&&s!=3)printf("tt >>输入错误!tt >>nn");break;if(studentsn.num!=0)printf("tt >>学号:%dntt >>姓名:%sntt >>成绩:",studentsn.num,studentsn.name);scanf("%d",&t);printf("n");switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break;printf("tt >>若需继续录入,请按1,退出录入请按0.nnntt >>");scanf("%d",&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf("nntt >>输入错误!");return_confirm();第五章 源程序代码/*学生成绩管理系统 刘兴*/*microsoft visual C+ 6.0 下编译通过*/#include <stdio.h>#include <string.h>#include <stdlib.h>/用于动态单元分配,如malloc(),calloc(),rand()等#include <conio.h>/字符串输入输出,如出现getch(),clrscr()等#define N 32;int INDEX32;/定义学生信息数组,学生数目最大为32/*定义学生信息结构体*/struct STUDENT int num,age,chinese,math,english; char name21,sex16,tele20;students32;/结构体变量为数组students,数目为32/*打印标题函数*/void page_title(char *menu_item) system("cls");/清屏,包含于conio,h函数中 printf("*>>> 欢迎进入学生信息管理系统 <<<*nn%snn",menu_item);/*操作完成后的返回函数*/void return_confirm(void)printf("ntt >>按任意键返回nn");getch();/*操作完成后的返回函数*/void return_con(void)printf("ntt >>按回车进行下步 nn");getch();/*录入学生基本信息函数*/void student_add(void)int s0; int n; page_title("tt - *录入学生基本信息* -"); for(n=0;n<32;n+) if(studentsn.num=0) /避免学生的学号为0,防止在按学号查询时搜到未登记的学生数组 printf("tt >>学号:"); scanf("%d",&studentsn.num); printf("tt >>姓名:"); scanf("%s",&studentsn.name);printf("tt >>年龄:"); scanf("%d",&studentsn.age);printf("tt >>性别:"); scanf("%s",&studentsn.sex);printf("tt >>电话:"); scanf("%s",&studentsn.tele);break;printf("nntt >>如需继续请按1,返回请按0.nnnntt >>");/次步骤方便了学生信息的连续录入scanf("%d",&s0); if (s0=1)student_add(); else if(s0=0) return_confirm(); else printf("nntt >>输入错误!");return_confirm();/*查找学生档案函数*/int student_search(void)int n,i;printf("tt - *请输入学生学号* -nnntt >>学号:");scanf("%d",&i);for(n=0;n<32;n+)if(studentsn.num=i&&studentsn.num!=0)printf("tt >>姓名:%sn",studentsn.name);printf("tt >>年龄:%dn",studentsn.age);printf("tt >>性别:%sn",studentsn.sex);printf("tt >>电话:%sn",studentsn.tele); if (studentsn.chinese=0) printf("tt >>语文:%sn","尚未录入");else printf("tt >>语文:%dn",studentsn.chinese);if (studentsn.math=0) printf("tt >>数学:%sn","尚未录入");else printf("tt >>数学:%dn",studentsn.math);if (studentsn.english=0) printf("tt >>英语:%sn","尚未录入");else printf("tt >>英语:%dn",studentsn.english);return_con();return n;printf("ntt >>输入错误或学号不存在.n");return_con();return 33;/*注销学生基本信息函数*/void student_delete(void)int n;page_title("tt - *注销学生基本信息* -");if(n=student_search()!=-1) studentsn.num=0;printf("ntt >>该学生已注销.n");return_confirm();/*修改学生基本信息函数*/void student_edit(void)int n;page_title("tt - *查找学生基本信息* -");n=student_search();if(n!=33)printf("ntt >>请重新输入新信息:ntt >>学号:");scanf("%d",&studentsn.num);printf("tt >>姓名:");scanf("%s",&studentsn.name);printf("tt >>年龄:");scanf("%d",&studentsn.age); printf("tt >>性别:");scanf("%s",&studentsn.sex);printf("tt >>电话:");scanf("%s",&studentsn.tele);return_confirm();/录入成绩函数void score_input(void)int s1;int s,n,t;page_title("tt - *录入成绩* -");printf("ntt >>请用数字键选择科目nntt >>1-语文 2-数学 3-英语nnntt >>");scanf("%d",&s);for(n=0;n<32;n+) if(s!=1&&s!=2&&s!=3)printf("tt >>输入错误!tt >>nn");break;if(studentsn.num!=0)printf("tt >>学号:%dntt >>姓名:%sntt >>成绩:",studentsn.num,studentsn.name);scanf("%d",&t);printf("n");switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break;printf("tt >>若需继续录入,请按1,退出录入请按0.nnntt >>");scanf("%d",&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf("nntt >>输入错误!");return_confirm();/*修改成绩函数*/void score_edit(void)int n;page_title("tt - *修改成绩* -");if(n=student_search()!=-1&&n!=33) printf("tt >>语文:%d 数学:%d 英语:%dn",studentsn.chinese,studentsn.math,studentsn.english);printf("tt >>请重新输入成绩:nntt >>语文:");scanf("%d",&studentsn.chinese);printf("tt >>数学:");scanf("%s",&studentsn.math);printf("tt >>英语:");scanf("%d",&studentsn.english);/return_confirm();if(n=33)return_confirm();/*学生成绩排序函数*/void sort_it(char nn)int n,m,p,x,t32;for(n=0;n<32;n+)switch(nn)/不同排序方式的选择结构case '1' : tn=studentsn.num;break;case '2' : tn=studentsn.chinese;break;case '3' : tn=studentsn.math;break;case '4' : tn=studentsn.english;break;case '5' : tn=studentsn.chinese+studentsn.math+studentsn.english;break;case '6' : tn=(studentsn.chinese+studentsn.math+studentsn.english)/5;break;for(n=0;n<32;n+)/对结构体的序号数进行排序x=0;p=-1;for(m=0;m<32;m+)if(tm>x)x=tm;p=m;tp=-1;INDEXn=p; /*浏览学生成绩*/void score_browser(void)int n,x;char k;sort_it('1');/初始时按学号降序排序while(1)page_title("tt - *浏览* -");printf("按数字键选择排序方式或按 0 返回n");printf("t学号-1| 姓名| 年龄| 语文-2| 数学-3| 英语-4| 总分-5| 平均分-6|n");/提醒排序输入的命令for(n=0;n<32;n+)/循环打印学生成绩if(INDEXn!=-1)x=INDEXn;printf("%14d|%10s|",studentsx.num,studentsx.name);printf("%5d|%7d|",studentsx.age,studentsx.chinese);printf("%7d|%7d|",studentsx.math,studentsx.english);printf("%7d|",studentsx.chinese+studentsx.math+studentsx.english);printf("%9d|n",(studentsx.chinese+studentsx.math+studentsx.english)/5);k=getch();if(k<'6'&&k>'0') sort_it(k);else if(k='0') break;else continue; /数据储存函数void save(struct STUDENT *students)/将数据保存到文件int i;FILE *fp;fp=fopen("成绩统计表.txt","w");fprintf(fp,"%32s", "tt>>>>>>>>>>>学生基本信息数据库<<<<<<<<<<<n");/打印标题行fprintf(fp,"%8s", "学号");fprintf(fp,"%8s", "姓名");fprintf(fp,"%8s", "年龄");fprintf(fp,"%8s", "性别");fprintf(fp,"%15s", "电话");fprintf(fp,"%8s", "语文");fprintf(fp,"%8s", "数学");fprintf(fp,"%8s", "外语");fprintf(fp,"%10sn", "总分");fprintf(fp,"=n");putchar('n');for (i = 0; studentsi.num!=0; i+)/循环打印学生信息fprintf(fp,"%8d", studentsi.num);fprintf(fp,"%8s", studentsi.name);fprintf(fp,"%8d", studentsi.age);fprintf(fp,"%8s", studentsi.sex);fprintf(fp,"%15s", studentsi.tele);fprintf(fp,"%8d", studentsi.chinese);fprintf(fp,"%8d", studentsi.math);fprintf(fp,"%8d", studentsi.english);fprintf(fp,"%10d", studentsi.chinese+studentsi.math+studentsi.english);putchar('n');fprintf(fp,"n");fprintf(fp,"=n");fclose(fp);printf("tt >>>>文件已保存到"成绩统计表.txt"");getchar();getchar();/主函数void main(void)/生成操作选单 menu: page_title(" - *>>>>>>>>操作选单<<<<<<<<* -"); printf(" * 请用数字键选择操作 * n"); printf(" *

    注意事项

    本文(C语言大作业学生信息管理系统完稿.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开