ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:564.49KB ,
资源ID:17377663      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17377663.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生信息管理系统c代码.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

学生信息管理系统c代码.docx

1、学生信息管理系统c代码学员信息管理系统(C语言项目制作)由于NCAE考试发的是全国信息化工程师“岗位技能”证书,比较重视项目制作能力和动手能力,要求学生必须做一个项目,该项目要有一定实用价值,本文讲述“学员信息管理系统”地制作,学完该项目后,关于用C语言编写、与数据管理有关的项目,大家应该都就会做了。一、软件需求分校1、任务描述随着学校规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,学生信息管理工作变得更加复杂,需要规范的学生信息管理系统来提高工作效率。2、功能模块图13、功能演示3.1、启动软件,进入程序主界面(图2)图2按屏幕提示“按任意键初始化学员信息”:(图3)图3“按

2、任意键进入主目录”:(图4)图43.2、键入“1”,选择“显示”命令,可以显示所有学生信息:(图5)图53.3、返回主目录“图4”,键入“2”,选择“查找”命令,查找指定学号的信息:(图6是查找“002”号学员后,返回的学员信息):图63.4、返回主目录“图4”,键入“3”,选择“录入”命令,录入新的学员信息:(图7是录入“007”号学员信息的步骤和结果):图73.5、返回主目录“图4”,键入“4”,选择“修改”命令,可修改学员信息:(图8是录入“002”号学员信息的步骤和结果):图83.6、返回主目录“图4”,键入“5”,选择“删除”命令,可删除指定学员信息:(图9是成功删除“005”号学员

3、信息的步骤和结果):图9图10是删除“002”号学员不成功的步骤和结果:图 103.7、返回主目录“图4”,键入“6”,选择“排序”命令,可按学号排序:(图11是“按学号降序”的步骤和结果):图11图12是“按学号升序”的步骤和结果图12二、程序设计1、界面设计1.1、在软件开发中,程序界面有两种,如图13所示:图13第一种界面:提示用户如何操作,指令如下:printf(欢迎进入= = = = = = = =学员信息管理系统= = = = = = = =n);printf(nttt按任意键初始化学员信息.nn);第二种界面:返回程序运算的结果,会在后面“算法”中介绍。1.2、如何实现主目录界面

4、?system(cls);printf(以下是程序主目录,请选择功能nn);printf(1)显示n2)查找n3)录入n4)修改n5)删除n6)排序n0)退出nn);printf(键入功能前的数字后,按Enter键:); 图141.3、如何实现“键入功能前的数字后”,就能选择相应的命令?do select=getchar(); switch(select) case 1: display(); break; /显示所有学员信息 case 2: query(); break; /查询学员信息 case 3: input(); break; /录入新学员信息 case 4: update(); b

5、reak; /修改学员信息 case 5: del(); break; /删除学员信息 case 6: sort(); break; /对学员进行排序 case 0: break; /退出 default:printf(请选择功能前的数字n);break; while(select!=0);说明:“select=getchar()”中,select代表输入的数字字符;用switch-case语句实现选择对应的命令;“display( )”函数实现“显示所有学员信息”;“1.4、如何实现“按任意键回到主目录”?printf(nnttt按任意键进入主目录.);getch( ); /从键盘收任一个字

6、符即返回,该函数在 conio.h中1.5、如何实现图15中“输出格式化”?图15printf(n%-8s%-10s%-10s%-10s%-10sn,学号,姓名,语文,数学,英语);printf(%-8s%-10s%-10s%-10s%-10sn, = = = =,= = = =,= = = =,= = ,= =);printf(%-8s%-10s%-10.1f %-10.1f %-10.1f,“001”,“li1”,68,87,63);printf(%-8s%-10s%-10.1f %-10.1f %-10.1f,“001”,“Li2”,68,78,74);在在printf中,“-”表示数据

7、左对齐,“10.1”中的10表示输出宽度,“.1”表示输出1位小数。2、数据结构的设计2.1、如何表示学生信息的数据类型在本项目中,学生信息包括“学号、姓名、三门课的成绩”可以用结构体数据类型来表示:typedef struct /定义学生信息结构体类型 char no10; /学号 char name16; /姓名 float score3; /定义成绩数组 STU;2.2、关于文件包含在项目中用到了很多库函数,因此在程序起始位置,需要用到文件包含:#include stdio.h#include stdlib.h#include string.h#include conio.h2.3、关于

8、“全局变量”由于程序中用到大量的函数,因此可以设置全局变量。int scount; /定义数据库实际学生数量STU stu10000; /声明代表学生的结构体数组,假设最多有10000条数据2.4、关于“函数声明”程序中用到大量的自定义函数,它们可能是主调函数,也可能是被调函数,为了扩展它们的作用域,最好在程序前面加上函数声明。/函数声明部分void readdb( ); /初始化学员信息,把外存中学生数据读入到内存中 void savedb( ); /把内存中结构体数组中的学生数据保存到外存中 void zhumulu( ); /显示程序主目录 void display( ); /显示所有学

9、员信息 void input( ); /录入新学员信息 int find(char str80);/查找指定学号的学员,若找到返回该学员在数组中的下标,若没找到返回-1,str代表指定学号;在多个模块中用到该函数 void query( ); /根据学号查找,并显示学员信息 void update( ); /修改学员信息 void del( ); /删除学员信息 void sort( ); /对学员进行排序 2.5、关于“数据文件”图16上面显示的是所有学生信息,这些学生数据在内存中的表现形式是常量、变量、数组和链表的方式,在外存中的表现形式是文件。由于断电后,内存信息会全部清空,因此,内存信

10、息需要经常存放到外存中。2.5.1、文件操作的步骤(1)打开文件:fopen(2)对文件读写操作:fscanf、fprintf(3)关闭文件:fclose2.5.2、从外存文件中读数据至内存数组stuFILE *fp=fopen(“studb.txt”,r”);i=0;/i是数据库中实际学生数量,其全局变量scountwhile(!feof(fp) /stu是代表学生的结构体数组 fscanf(fp,%s %s %f %f %f, stui.no , stui.name, /no学号,name姓名 &stui.score0, &stui.score1,&stui.score2); i+; /s

11、core是三门课成绩的数组scount=i;fclose(fp);2.5.3、把内存数组中数据输出到外存文件FILE *fp=fopen(“studb.txt”,“w”);i=0;For(i=0;iscount;i+) fprintf(fp,%-8s%-10s%-10.1f%-10.1f%-10.1fn stui.no , stui.name, stui.score0, stui.score1,stui.score2); /”%-10.1f”中,“-”左对齐,“10”宽度,“.1”小数位数fclose(fp);3、主要算法的实现3.1、显示所有学员的信息(如图17)图17方法:遍历数组,用pr

12、intf函数显示数据。for(i=0;iscount;i+) printf(“%-8s%-10s%-10.1f%-10.1f%-10.1fn”,stui.no , stui.name, stui.score0,stui.score1,stui.score2);其中,scount是“实际学生数量”;stu“代表学生信息的结构体数组”,no“学号”,name“姓名”,score“三门课成绩的数组”。3.2、查找指定学号方法:遍历数组,查找指定学号的学员,函数返回值是找到后的学号的下标,如果指定学号不存在,返回-1 ;int find(char str80) /str代表要查找的学号 int i;

13、for(i=0;iscount;i+) /scount代表实际的学生数量 if(strcmp(str,stui.no)=0) return i; / stu是表示学生信息的结构体数组名 return -1;3.3、插入新的学员信息图18方法:(1)依次输入新学员信息,并赋值给新变量s;(2)把s添加到数组中;(3)把内存数据保存至外存。void input( )/录入新学员信息 STU s;/代表新学员信息 /下面输入新学员信息 printf(nnn请输入学号,学号不允许为空字符串:); scanf(%s,&s.no); printf(n请输入姓名,注意姓名里不能加空格:); scanf(%s

14、,&s.name); printf(n请输入语文成绩:); scanf(%f,&s.score0 ); printf(n请输入数学成绩:); scanf(%f,&s.score1 ); printf(n请输入英语成绩:); scanf(%f,&s.score2 ); /把s添加到结构体数组中;同时把表示学员数量的变量scount增加1 stuscount+=s; savedb( );/savedb函数把内存中结构体数组中的学生数据保存到外存中3.4、修改学员信息方法:(1)查找到指定学员的数组下标n;(2)输入修改后的学员信息,存贮到临时变量s中;(3)把s临时变量赋值给stun,即stun=

15、s;(4)保存数据到外存文件。void update( ) /修改学员信息 int n;char str80;STU s;/s作为临时变量,临时存放修改后的学生信息 printf(n请输入要修改的学生的学号:); scanf(%s,str); n=find(str); /find函数返回要查找的学号的下标printf(nnn请输入修改后的学号,学号不允许为空字符串:);scanf(%s,&s.no);printf(n请输入修改后的姓名,注意姓名里不能加空格:);scanf(%s,&s.name);printf(n请输入修改后的语文成绩:);scanf(%f,&s.score0 );printf

16、(n请输入修改后的数学成绩:);scanf(%f,&s.score1 );printf(n请输入修改后的英语成绩:);scanf(%f,&s.score2 ); stun=s;/把修改后的值保存到内存数组中savedb();/把内存数据保存到外存数据文件中3.5、删除某学员信息方法:(1)查找到指定学员的数组下标n;(2)把后续数据前移,实现删除操作;(3)保存数据到外存文件。void del( )/删除学员信息 int n,i;char str80;char ch; printf(n请输入要删除的学生的学号:); scanf(%s,str); n=find(str); for(i=n;i=s

17、count-2;i+) stui=stui+1;/删除指定学号scount-;savedb();/把内存数据保存到外存数据文件中3.6、对学员排序下面是升序排序:for (i=0;i=scount-2;i+)for(j=i+1;j0) t=stui;stui=stuj;stuj=t;三、对本项目的拓展1、本程序是用结构体数组实现,您可以用结构体链表来实现所有的算法;2、结构体的成员发生改变,本结构体成员有:学号、姓名、三门课成绩。您可以增加成员,如性别、年龄、或更多门课的成绩;3、把系统改为“教师信息管理系统”、“档案信息管理系统”、“订单管理系统”等。四、附完整的程序代码/=学员信息管理系统

18、=/=TXT文本文件实时存储数据,运用结构体数组#include stdio.h#include stdlib.h#include string.h#include conio.hint scount; /定义数据库实际学生数量typedef struct /定义学生信息结构体类型 char no10; /学号 char name16; /姓名 float score3; /定义成绩数组 STU;STU stu10000; /声明结构体数组,假设最多10000条信息/函数声明部分void readdb(); /初始化学员信息,把外存中学生数据读入到内存中void savedb(); /把内存中

19、结构体数组中的学生数据保存到外存中void zhumulu(); /显示程序主目录void display(); /显示所有学员信息void input(); /录入新学员信息int find(char str80);/查找指定学号的学员,找到返回该学员在数组中的下标,没找到返回-1,str代表指定学号;在多个模块中用到该函数void query(); /根据学号查找,并显示学员信息void update(); /修改学员信息void del(); /删除学员信息void sort(); /对学员进行排序/函数定义void main() /程序进入“欢迎界面” printf(nnnnntt欢迎

20、进入=学员信息管理系统=n); /按任意键初始化学员信息 printf(nttt按任意键初始化学员信息.nn); getch(); /从键盘收任一个字符即返回,该函数在conio.h中 readdb();/初始化学员信息,把外存中学生数据读入到内存中 printf(ttt共有 %d 条学员信息,scount);/scount是实际学生数量 printf(nnttt按任意键进入主目录.); getch(); /从键盘收任一个字符即返回,该函数在conio.h中 zhumulu();/调出“程序主目录”/显示和返回到程序主目录void zhumulu() char select;/代表用户所选择的

21、子目录号 do system(cls); printf(=学员信息管理系统=nn); printf(以下是程序主目录,请选择功能nn); printf(1)显示n2)查找n3)录入n4)修改n5)删除n6)排序n0)退出nn); printf(键入功能前的数字后,按Enter键:); select=getchar(); switch(select) case 1: /显示所有学员信息 system(cls); display(); /显示完毕,提示用户返回主程序 printf(nnttt按任意键进入主目录.); getch(); /从键盘收任一个字符即返回,该函数在conio.h中 break

22、; case 2:query(); break; /查询学员信息 case 3:input(); break; /录入新学员信息 case 4:update(); break; /修改学员信息 case 5:del(); break; / 删除学员信息 case 6:sort(); break; /对学员进行排序 case 0: break; /退出 default:printf(请选择功能前的数字n);break; while(select!=0);void readdb()/初始化学员信息,把外存中学生数据读入到内存中 FILE *fp; if(fp=fopen(studb.txt,r)=

23、NULL) printf(文件有错误程序不能运行n); return; scount=0;/scount是数据库中实际学生数量,是全局变量 while(!feof(fp) /no是学号,name是姓名,)core是成绩 /stu是学生结构体数组,全局变量 fscanf(fp,%s %s %f %f %f,stuscount.no,stuscount.name,&stuscount.score0,&stuscount.score1,&stuscount.score2); if(strcmp(stuscount.no,)!=0) scount+;/去掉学号为空字符串 fclose(fp);/把内存

24、中结构体数组中的学生数据保存到外存中void savedb() int i; FILE *fp; if(fp=fopen(studb.txt,w)=NULL)/以写的方式打开文件,覆盖原文件 printf(文件有错误程序不能运行n); return; /stu是学生结构体数组,全局变量 for(i=0;iscount;i+)/scount代表实际的学生数量 if(strcmp(stui.no,)!=0)/去掉学号为空字符串的信息 fprintf(fp,%-8s%-10s%-10.1f%-10.1f%-10.1fn,stui.no,stui.name,stui.score0,stui.score

25、1,stui.score2); fclose(fp); void display()/显示所有学员信息 int i; printf(n%-8s%-10s%-10s%-10s%-10sn,学号,姓名,语文,数学,英语); printf(%-8s%-10s%-10s%-10s%-10sn, =,=,=,=,=); for(i=0;iscount;i+) / “-”表示数据左对齐,“10.1”中的10表示宽度,“.1”表示1位小数 printf(%-8s%-10s%-10.1f%-10.1f%-10.1fn,stui.no,stui.name,stui.score0,stui.score1,stui

26、.score2);/find查找指定学号的学员,代表指定学号(str)的下标,如果指定学号不存在,返回-1 ;在多个模块中用到该函数int find(char str80) int i; /stu是表示学生信息的结构体数组名 for(i=0;iscount;i+)/scount代表实际的学生数量, if(strcmp(str,stui.no)=0) return i; return -1;void query() /根据学号查找,并显示学员信息 char str80;int n; system(cls); printf(n请输入要查询的学生的学号:); scanf(%s,str); n=fin

27、d(str); if(n=-1) printf(n对不起,您要查找的学员不存在n); else printf(n%-8s%-10s%-10s%-10s%-10sn,学号,姓名,语文,数学,英语); printf(%-8s%-10s%-10s%-10s%-10sn, =,=,=,=,=); printf(%-8s%-10s%-10.1f%-10.1f%-10.1fn,stun.no,stun.name,stun.score0,stun.score1,stun.score2); /显示完毕,提示用户返回主程序 printf(nnttt按任意键进入主目录.); getch(); /从键盘收任一个字符即返回,该函数在conio.h中void input()/录入新学员信息 STU s;/代表新学员信息 int i; /先显示已有学员信息 system(cls); printf(当前学员信息如下:n); printf(n%-8s%-10s%-10s%-10s%-10sn,学号,姓名,语文,数学,英语); pri

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

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