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

    最新C语言学生信息管理系统2.doc

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

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

    最新C语言学生信息管理系统2.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言学生信息管理系统2C语言学生信息管理系统2学生信息管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。1、问题定义创建一个学生成绩管理系统。假设系统中每个学生记录只包括学生学号、学生姓名、年龄、性别、出生年月、电话等信息。程序的运行效果如下图所示,选择任意菜单后,实现相应功能。在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2、系统设计21 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。本成绩管理系统要求采用数组实现,它由如下六大功能模块组成:l 输入学生记录。l 查询学生记录。l 删除学生记录。l 显示所有学生记录。l 统计学生人数。刷新当前信息。22 详细设计2.2.1数据结构设计l 学生个人信息结构体结构体struct student将用于存储学生的基本信息,它将作为单链表的数据域。struct record /*结构体*/char codeLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char dateLEN+1; /* 出生年月 */char telLEN+1; /* 电话号码 */stuN;2.2.2输入记录模块void readfile()/* 建立信息 */char *p="student.txt"FILE *fp;int i=0;if (fp=fopen("student.txt","r")=NULL) printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);while(fscanf(fp,"%s %s %d %s %s %s",stui.code,stui.name,&stui.age,stui.sex,stui.date,stui.tel)=8)i+;i=i;fclose(fp);n=i;printf("录入完毕!n");2.2.3查询记录模块void seek() /*查找*/int i,item,flag;char s121; /* 以姓名和学号最长长度+1为准 */printf("-n");printf("-1.按学号查询-n");printf("-2.退出本菜单-n");printf("-n");while(1)printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item)case 1:printf("请输入要查询的学生的学号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0)flag=1;printf("学生学号 学生姓名 年龄 性别 出生年月 电话 n");printf("-n");printf("%6s %7s %6d %5s %9s %10sn",stui.code,stui.name,stui.age,stui.sex,stui.date,stui.tel);if(flag=0)printf("该学号不存在!n"); break;case 2:return;default:printf("请在1-2之间选择n");2.2.4删除记录模块void del()int i,j,flag=0;char s1LEN+1;printf("请输入要删除学生的学号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;j<n-1;j+)stuj=stuj+1;if(flag=0)printf("该学号不存在!n");if(flag=1)printf("删除成功,显示结果请选择菜单6n");n-;2.2.5显示所有学生记录模块void display() int i;printf("所有学生的信息为:n");printf("学生学号 学生姓名 年龄 性别 出生年月 电话 n");printf("-n");for(i=0;i<n;i+) printf("%6s %7s %5d %5s %8s %10sn",stui.code,stui.name,stui.age,stui.sex,stui.date,stui.tel); 3、系统实现3.1.1 程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作#include<stdio.h> /*I/O函数*/#include<stdlib.h> /*其它说明*/#include<malloc.h>#include<string.h> /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/3.1.2 主函数main()main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。FILE *fp;void seek();/* 函数声明 */void insert();void del();void display();void save();void getnum();void readfile();void menu(); int main() while(k)menu();system("pause");return 0; switch(num) case 1:insert();break;case 2:del();break;case 3:seek();break;case 4:display();break;case 5:getnum();break;case 6:readfile();break;case 7:k=0;break;default:printf("请在1-7之间选择n");3.1.3 主菜单界面用户进入成绩管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被main()函数调用。void menu()/* 界面 */int num;printf(" *系统功能菜单* n");printf(" *闫晨曦 0951100206* n");/printf("友情提醒:查询前请先刷新系统! n");printf(" * * n");printf(" * 1.增加学生信息 *n");printf(" * 2.删除学生信息 *n");printf(" * 3.查询学生信息 *n");printf(" * 4.显示当前信息 *n");printf(" * 5.统计学生人数 *n"); printf(" * 6.刷新当前信息 *n"); printf(" * 7.退出系统 *n"); printf(" * * n");printf("请选择菜单编号:");scanf("%d",&num);3.1.4 插入学生记录在插入学生记录操作中,系统会先按学号查找到要插入的节点的位置,然后在该学号之后插入一个新节点。void insert() /*插入函数*/ int i=n,j,flag;printf("请输入待增加的学生数:n");scanf("%d",&m);do flag=1;while(flag)flag=0;printf("请输入第 %d 个学生的学号:n",i+1);scanf("%s",stui.code);for(j=0;j<i;j+)if(strcmp(stui.code,stuj.code)=0)printf("已有该学号,请检查后重新录入!n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf("请输入第 %d 个学生的姓名:n",i+1);scanf("%s",stui.name);printf("请输入第 %d 个学生的年龄:n",i+1);scanf("%d",&stui.age);printf("请输入第 %d 个学生的性别(格式:男1女0):n",i+1);scanf("%s",stui.sex);printf("请输入第 %d 个学生的出生年月:(格式:年.月)n",i+1);scanf("%s",stui.date);printf("请输入第 %d 个学生的电话:n",i+1);scanf("%s",stui.tel);if(flag=0) i=i;i+;while(i<n+m);n+=m;printf("录入完毕!nn");sort();3.1.5 统计学生记录在统计学生记录操作中,系统会统计学生人数总数,并打印输出统计结果。void getnum() int num_b=0,num_g=0; int i; fp=fopen("student.txt","a+"); for(i=0;i<num;i+) if(strcmp(stui.sex,"1") num_g+; else num_b+; printf("【统计结果】n"); fprintf(fp,"【统计结果】n"); printf("学生总人数为:10人n",num); fprintf(fp,"学生总人数为:10人n",num); printf("其中男生5人,女生5人n",num_b,num_g); fprintf(fp,"其中男生%d人,女生%d人n",num_b,num_g); fclose(fp);3.1.6 排序学生记录在排序学生记录操作中,系统会利用插入排序法实现单链表的按总分字段的降序排序,并打印出排序前和排序后的结果。void sort()/*按学号排序*/int i,j,*p,*q,s; char temp10;for(i=0;i<n-1;i+)for(j=n-1;j>i;j-)if(strcmp(stuj-1.code,stuj.code)>0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,stuj-1.name);strcpy(stuj-1.name,stuj.name);strcpy(stuj.name,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strcpy(stuj.sex,temp);strcpy(temp,stuj-1.date);strcpy(stuj-1.date,stuj.date);strcpy(stuj.date,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s;32 测试与调试3.2.1 概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“;”或少加“”等等。调试则是确定测试中找到的错误性质并改正错误的过程。测试与调试通常交替进行,即测试调试再测试再调试。能检查出尚未发现的、各种不同类型错误的测试才是成功的测试。测试程序需要测试用例,测试用例可用如下公式表示:测试用例测试数据预期结果。好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大。要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确。还应分别测试输入合法数据与非法数据时,程序的运行情况,。对于合法数据,还要考虑数据的一般性与特殊性,如求最大值的问题,应测试最大值在最前面、最后面、中间某一位置的情况。测试程序时,用监视窗口可以随时查看变量或表达式的值,有时还可以将部分程序代码用注释符暂时括起来,缩短程序,以便压缩出错代码的范围。3.2.2 程序测试l 在主菜单中选择1当用户输入1并按回车键后,即可进入数据输入界面。如下图所示:请根据提示输入所需记录的内容。l 在主菜单中选择2当用户输入2并按回车键后,即可进入记录删除界面。l 在主菜单中选择3当用户输入3并按回车键后,即可进入记录查找界面。如图所示,可按学号或姓名进行查找。l 在主菜单中选择4l 在主菜单中选择5l 在主菜单中选择74、系统维护经测试与调试确认软件无错时,开发就告一段落,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护。一般维护的工作有:更改使用中发现的错误;为适应实际环境而对程序进行修改;为满足新的需求而对程序作必要的改进等等。5、归纳总结51 开发经验通过对本题目的开发,体会到要掌握以下几点内容。52 实训中遇到的问题及解决方法在这次的实训中,主要遇到的问题是编译环境的不同对程序也不同。本来我们的程序是不支持在VC+里面编译的,因此一直都处在编译失败,该函数未定义的错误中。后来经过老师的指导,终于找到了根源,就是把“clrscr()”改为“system("cls")”就可以了。53 设计中尚存的不足之处关于这次的程序,也有挺多不足的地方。首先,我觉得程序还不够完善,有些地方甚至有点乱;其次,有些地方好像功能有点重复了;最后,就是该程序界面不够美观大方。54 感想和心得体会通过这次实训,我感触甚深, -

    注意事项

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

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




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

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

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

    收起
    展开