欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言学生信息管理系统设计.docx

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

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

    C语言学生信息管理系统设计.docx

    1、C语言学生信息管理系统设计1前言在计算机技术和互联网飞速发展的今天,计算机成为了现代生活中一个重要的工具。学生信息管理系统利用计算机对学生信息进行统一管理,为学校老师的工作提供便利。本程序是利用结构数组实现此学生信息管理系统。2设计目的利用本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。3功能描述如图1所示,学生信息管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成

    2、。图1 学生信息管理系统功能模块(1)输入记录模块。输入记录模块主要完成将数据存入数组中的工作。在此学生信息管理系统中,记录可以从以文本形式存储的数据文件中读入,也可从键盘逐个输入记录。当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。(2)查询记录模块。查询记录模块主要完成在数组中查找满足相关条件的记录。在此学生信息簿管理系统中,用户可以按照学生姓名或学生学号在数组中进行查找。若找到该记录,则显示出此记录的信息;否则,显示出未找到该记录的提示信息。(3)更新记录模块。更新记录模块主要完成对记录的维护。在此电话簿管理系统中,它实现对记录的修

    3、改、删除操作。一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。(4)输出记录模块。输出记录模块主要完成两个任务。第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。第二,它实现将数组中存储的录信息在屏幕上显示出来。4总体设计1、功能模块设计(1)主控main()函数执行流程学生信息管理系统执行主流程如图2所示。它先以可读写的方式打开文本类型的数据文件。选择打开的文件名“a”,从文件中读出数据添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。值得一提的是,文本类型文件与二进制类型文件不同,它可以使用Windows自带的记事本打开并查

    4、看到存储的文件内容。图2 主控函数执行流程图在判断键值时,有效的输入为1-6之间的任意数值,其他输入都被视为错误按键。若输入为6(即变量select=6),则会进行存盘操作。最后,系统执行退出学生信息管理系统的操作。若选择1,则调用input()函数,执行录入信息操作;若选择2,则调用scan()函数,执行查询记录操作;若选择3,则调用list()函数,执行将所有信息打印输出至屏幕的操作;若选择4,则调用change()函数,执行修改记录操作:若选择5,则调用drop()函数,执行删除记录操作;若输入为1-6之外的值,则显示输入错误,请重新输入。(2)输入记录模块输入记录模块主要实现将数据存入

    5、数组中。调用int input()函数,学生信息存入某个数组元素中的操作,并且这个操作在main()中调用执行,即在学生信息管理系统进入显示菜单界面时,该操作己经执行了。此时,用户应选择1,调用input()函数,进行记录的输入,即完成在数组中添加元素的操作。(3)查询记录模块查询记录模块主要实现在数组中按学生姓名或学号查找满足条件的记录。在查询函数void scan()中,通过FILE * fp,调用fopen(a.txt)函数,将数据读入到结构体struct test 中的scan(),list()函数,可将其数组在屏幕中打印输出,即完成查询学生信息的操作。(4)更新记录模块更新记录模块主

    6、要实现了对记录的修改和删除操作。因为记录是以数组的结构形式存储的,所以这些操作都在数组中完成。下面分别介绍这2个功能模块。1)修改记录修改记录操作需要对数组中目标元素的数据域中的值进行修改,它分两步完成。第一步,输入要修改的学生学号,输入后找到该学生相关的记录;第二步,若找到该记录,修改需要修改的信息,并将存盘标记变saveflag置1,表示已经对记录进行了修改,但还未执行存盘操作。2)删除记录删除记录操作完成删除指定学生的记录,它也分两步完成。第一步,输入要修改的学生学号,输入后找到该学生的记录,返回指向该记录的数组元素下标;第二步,若找到该记录,则从该记录所在元素的后续元素起,依次向前移一

    7、个元素位置,有值的数组元素个数减1,其具体过程如图3所示,在删除了数组元素A2后,数组元素A3和A4向前移动了一个位置图3 数组中删除记录示意图(5)输出记录模块当把记录输出至文件时,将数组元素tempi 中各字段的值,写入文件指针fp所指的文件:当把记录输出至屏幕时,调用void list()函数,将数组中存储的记录信息在屏幕上打印出来。2、数据结构设计本程序定义了结构体Student,用于存放学生的基本信息。这里仅有8个与学生有关的字段,读者可以按照需要扩展相关字段。struct Student char num15; char name9; char age3; char sex3; c

    8、har birth11; char address50; char phonenum15; char email22;t100;其各字段的值的含义如下: num15:学生学号。 name10:学生姓名。 age3:学生年龄。 birth11:学生出生年月。 address50:学生地址。 phonenum15:学生电话号码。 email22:学生邮箱地址。3、函数功能描述1)menu()函数原型:void menu()menu()函数用于在屏幕开头,输出菜单,让用户自行选择。2)input () 函数原型:int input(int cnt)input ()函数用于用户输入学生姓名、学号、年龄

    9、、出生年月、地址、号码、E-mail。3)scan()函数原型:void scan(int cnt)scan()函数用于查询学生有关信息。4)list()函数原型:void list(int cnt)list()函数用于显示学生有关信息。5)change()函数原型:void change(int cnt)change()用于修改学生有关信息。6)drop()函数原型:int drop(int cnt)drop()用于删除学生有关信息。5程序实现1、源程序#include#include#includestruct Teacher char num7; char name9; char zc7

    10、; int jbgz; int jt; int ksf; int yksk; int sfgz;t100;void menu() printf(*教师工资管理系统*n); printf(*1 输入记录 2 插入记录*n); printf(*3 修改记录 4 删除记录*n); printf(*5 查询记录 6 显示记录*n); printf(*7 记录排序 8 工资统计*n); printf(* 9 退出系统 *n); printf(*n);int input(int cnt) int choice=0,i,j,count; char temp7; printf(开始输入记录.n); count

    11、=cnt; for(i=cnt;i100;i+) printf(Continue?(1 Yes 0 No):); scanf(%d,&choice); getchar(); if(choice=0) break; else if(choice=1) printf(请输入教师号:); gets(temp); for(j=0;jcnt;j+) if(strcmp(temp,tj.num)=0) printf(教师号重复,请重新输入:); gets(temp); j=-1; strcpy(ti.num,temp); printf(请输入教师姓名:); gets(ti.name); printf(请输

    12、入教师职称:); gets(ti.zc); if(strcmp(ti.zc,教授)=0) ti.jbgz=2500; ti.jt=3000; else if(strcmp(ti.zc,副教授)=0) ti.jbgz=2000; ti.jt=2500; else if(strcmp(ti.zc,讲师)=0) ti.jbgz=2000; ti.jt=2500; else ti.jbgz=1500; ti.jt=2000; printf(请输入教师课时费:); scanf(%d,&ti.ksf); printf(请输入教师扣款:); scanf(%d,&ti.yksk); ti.sfgz=ti.jb

    13、gz+ti.jt+ti.ksf-ti.yksk; cnt+; if(count!=cnt) printf(n记录输入成功,); else printf(n未输入记录,); system(pause); return cnt;void insert() printf(开始插入记录); system(pause);void change(int cnt) int choice=0,i,j,p=-1; char temp7,tnum7; printf(开始修改记录.nn); getchar(); printf(请输入要修改的教师号:); gets(temp); for(i=0;icnt;i+) if

    14、(strcmp(ti.num,temp)=0) p=i; break; if(p=-1) printf(n输入的教师号不存在,修改失败,按任意键返回主菜单.); getchar(); else printf(要修改的教师信息如下所示:n); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dnn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); printf(n1教师号 2姓名 3职称 4 课时费 5扣款); p

    15、rintf(n请输入要修改的选项:); scanf(%d,&choice); getchar(); switch(choice) case 1: printf(请重新输入教师号:); gets(tnum); for(j=0;jcnt;j+) if(strcmp(tnum,tj.num)=0) printf(教师号重复,请重新输入:); gets(tnum); j=-1; strcpy(tp.num,tnum); break; case 2: printf(请重新输入教师姓名:); gets(tp.name); break; case 3: printf(请重新输入教师职称:); gets(tp

    16、.zc); if(strcmp(tp.zc,教授)=0) tp.jbgz=2500; tp.jt=3000; else if(strcmp(tp.zc,副教授)=0) tp.jbgz=2000; tp.jt=2500; else if(strcmp(tp.zc,讲师)=0) tp.jbgz=2000; tp.jt=2500; else tp.jbgz=1500; tp.jt=2000; tp.sfgz=tp.jbgz+tp.jt+tp.ksf-tp.yksk; break; case 4: printf(请重新输入教师课时费:); scanf(%d,&tp.ksf); tp.sfgz=tp.j

    17、bgz+tp.jt+tp.ksf-tp.yksk; break; case 5: printf(请重新输入教师扣款:); scanf(%d,&tp.ksf); tp.sfgz=tp.jbgz+tp.jt+tp.ksf-tp.yksk; break; default:printf(输入错误,修改失败.); printf(修改记录完成,); system(pause); return;int drop(int cnt) int i,p=-1; char temp7; printf(开始删除记录.nn); getchar(); printf(请输入要删除的教师号:); gets(temp); for

    18、(i=0;icnt;i+) if(strcmp(ti.num,temp)=0) p=i; break; if(p=-1) printf(n输入的教师号不存在,删除失败,按任意键返回主菜单.); getchar(); else printf(n要删除的教师信息如下所示:n); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dnn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); for(i=p;icnt-1;i+

    19、) ti=ti+1; cnt-; printf(n记录删除成功,按任意键返回主菜单.); getchar(); return cnt;void scan(int cnt) int choice=0,i,p=-1,count=0; char temp9; printf(开始查询记录.nn); printf(请选择查询方式(1按教师号 2 按教师姓名 3按教师职称):); scanf(%d,&choice); getchar(); switch(choice) case 1: printf(请输入要查询的教师号:); gets(temp); for(i=0;icnt;i+) if(strcmp(t

    20、i.num,temp)=0) p=i; break; if(p=-1) printf(n输入的教师号不存在,查询失败,按任意键返回主菜单.); getchar(); else printf(n要查询的教师信息如下所示:n); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dnn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); printf(n查询成功,按任意键返回主菜单.); getchar(); break

    21、; case 2: printf(请输入要查询的教师姓名:); gets(temp); for(i=0;icnt;i+) if(strcmp(ti.name,temp)=0) if(count=0) p=i; printf(n要查询的教师信息如下所示:n); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); count+; else p=i; printf(%

    22、-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); count+; if(p=-1) printf(n输入的教师姓名不存在,查询失败,按任意键返回主菜单.); getchar(); else printf(n查询成功,按任意键返回主菜单.); getchar(); break; case 3: printf(请输入要查询的教师职称:); gets(temp); for(i=0;icnt;i+) if(strcmp(ti.zc,temp)=0) if(cou

    23、nt=0) p=i; printf(n要查询的教师信息如下所示:n); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz); count+; else p=i; printf(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dn,tp.num,tp.name,tp.zc,tp.jbgz,tp.jt,tp.ksf,tp.yksk,tp.sfgz)

    24、; count+; if(p=-1) printf(n输入的教师职称不存在,查询失败,按任意键返回主菜单.); getchar(); else printf(n查询成功,按任意键返回主菜单.); getchar(); break; default: printf(选择错误,按任意键返回主菜单.); getchar(); return;void list(int cnt) int i; printf(开始显示记录.n); printf(n当前文件中所有记录显示如下nn); printf(教师号 姓名 职称 基本工资 津贴 课时费 扣款 应发工资n); for(i=0;icnt;i+) print

    25、f(%-10s%-10s%-8s%-10d%-8d%-8d%-8d%-8dn,ti.num,ti.name,ti.zc,ti.jbgz,ti.jt,ti.ksf,ti.yksk,ti.sfgz); printf(n记录显示完成,); system(pause);void sort(int cnt) int choice=0,i,j; struct Teacher temp; printf(开始记录排序.n); printf(n请选择排序方式(1按教师号 2 按教师姓名 3按教师职称):); scanf(%d,&choice); switch(choice) case 1: for(i=0;icnt-1;i+) for(j=0;jcnt-i-1;j+)


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开