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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生证管理程序.doc

1、高级语言程序设计课程设计题 目: 学生证管理程序班 级: 学生学号: 学生姓名: 指导老师: 提交时间:华南农业大学 信息(软件)学院学生证管理程序1系统分析 1.1问题描述:设计一个学生证的管理程序。实现录入、修改、删除学生的学生证信息,并能根据输入的学生的学号,显示该学生的学生证信息或根据输入的班级的名称,显示该班所有学生的学生证信息,以及实现一些统计各类信息的功能。1.2系统功能分析: 学生证管理程序是用来进行学生证管理的应用软件,不属于学生可使用的系统,个人认为进入该系统不需要进行相应的身份登录。所以进入系统者应当可以使用所有功能; 使用者可行使基本功能有:录入某位学生的学生证信息;根

2、据给定学生的学号,修改、删除或显示该学生的学生证信息;根据输入的班级的编号,显示该班所有学生的学生证信息和一些统计功能。 另外,为了方便管理员操作,减少管理员重复工作的可能,另外加入额外功能:批量录入学生的学生证信息和班级删除。除此以外,亦另外添加操作台指令,方便管理员进行功能切换。1.3 开发平台及工具介绍:根据所学知识及所要用到的相关操作,采用C语言进行开发。开发平台:CodeBlocks+ MinGW + wxWidgets 2系统设计2.1 系统总体结构设计在对学生证管理程序进行系统功能分析之后,我对整个系统进行总体设计。首先,确定大致的开发和设计的思路,并在此基础上,用图表将系统总体

3、的设计架构勾画出来,制定模块结构图,通过模块功能分析对每一个模块进行总体设计。值得一提,总体的设计架构中,shell和kernel的设计应注意彼此的联系,这一方面设计的好坏对后面的设计有很大的影响。然后,根据总体设计的需求,确定要首先那些函数。 学生证管理程序可视作一个简易身份证管理系统,开发设计的方向是方便管理员的操作,节省管理员的操作时间。对于这个问题,可采用批量操作和指令操作的思路。可以将所有的学生证信息存储在一个文件(txt格式)中,在对大量学生证数据的处理用到链表和文件处理等基本技术,并用两个函数实现文件读取和写入。2.2 系统各个功能模块详细设计及功能模块之间关系设计(包括功能结构

4、图等)(1)添加模块(录入模块):可以逐个录入学生信息,也可以设定录入人数,批量录入学生信息。在输入学生信息时,可输入return返回,可随意输入指令进行功能切换。其功能图如下图.(2)搜索模块:根据给出信息,可以是学号,名字或班级,搜索符合条件的某位学生或某些学生,并返回地址。修改信息修改模块(3)修改模块:通过地址找到该学生信息,然后进行修改。 (4) 统计模块,统计学生总男女生人数;某班男生人数,女生人数;统计指定日子出生的学生;统计与指定名字相同的学生;(5) 显示模块,显示学生证信息。分为针对单人的详细显示和针对集体的行显示两种模式。(6)删除模块,本模块有2种删除方式,分别是按学号

5、删除和按班级名删除。 (7)指令模块,本模块负责辨认输入的为指令还是操作序号,并根据输入选择操作。 2.3 数据结构的设计(文件等)(1)学生证信息结构描述学生证信息,并作为一整条记录存放在文件中。typedef struct stud char name20; char sex8; char snumber14; char time12; char id20; char college24; char major20; char classes40; struct stud *next;LNode,*LinkList;LinkList p,q,m,n,c;(2) 链表存储学生证信息,并作为一

6、整条记录在程序中进行操作。 p=(LinkList)malloc(sizeof(LNode);/头指针 q=p;(3) 文件在程序开始前和结束后存储学生证信息void rewirte()/程序结束后将一切写进文件void load()/文件内容装载至链表2.4 界面设计遵循简洁美观、方便使用的原则。(1) 首页:用printf语句构造简单的界面,注重界面的简洁性。(2) 、录入界面(3) 、修改界面:(4) 删除界面(5)学号查询(6) 班级查询(7)其他(8) 指令(9) 统计班级男女人数(10) 统计同名(11) 统计同年同日出生流程图如下:3系统实现基于系统需求分析与系统总体设计的结果,

7、本系统采用开发平台:CodeBlocks+ MinGW + wxWidgets 实现各模块的功能,下面将展现某些模块的录入操作的详细设计和实现过程。录入模块:(1)(2) 代码段片段相关函数char console()/控制台录入:void entry()/录入 system(cls); char ,op,i=1; LinkList std; std=(LinkList)malloc(sizeof(LNode); std-next=NULL; printf(请分别输入学生的信息n); while(iname,cl);break; case 2:strcpy(std-sex,cl);break;

8、 case 3:strcpy(std-snumber,cl);break; case 4:strcpy(std-time,cl);break; case 5:strcpy(std-id,cl);break; case 6:strcpy(std-college,cl);break; case 7:strcpy(std-major,cl);break; case 8:strcpy(std-classes,cl);break; i+; q-next=std; q=q-next; q-next=NULL; printf(录入成功n); printf(输入任意键以退出n); a=getchar();4系

9、统测试模块测试:测试各模块的测试显示模块:(1)输出单个学生学生证信息。 1、输入学号 2、预期结果: 3、输出结果:4、结论:运行正常。(2) 显示班级学生证信息 1、输入2013软件工程1班 2、预期结果:3、4、结论:运行正常。系统测试:系统功能的完整测试(1)系统测试1:1、输入流程: 批量录入信息batchentry 输入3后输入信息 信息如下:根据学号输出信息,根据班级输出信息,2、预测结果:3、实际结果:4、结论:运行正常。5系统运行界面1、 运行界面1:统计同年同日生的学生2、 运行界面2:指令实现6总结 怎么说呢,这次设计的并不难,要是只完成基本功能的话其实不用什么力气。但在

10、这次设计中呢,却陆陆续续地遇到小问题。这些问题都得归因于自己整体设计时不够用心,未曾仔细地思考,又盲目地想做点新意,结果有一阵子一直停滞不前。结果,最后还是静下心来梳理了一遍思路,做好前期准备,情况才好起来。然后,感觉做这种课题真的非常好,题目分析、整体设计、模块分析.一整套做下来实在令人兴奋。Debug过程既是无聊的也是有趣的。能在程序设计中找到快乐实在不错。这次设计已经完结了,但是我的路还有很长,离成为一个合格的程序员实在还有很远,不过,还有几年时间可以抢救一下,我觉得我还有救的7参考文献C语言程序设计(第二版) 附录:全代码:#include#include#include#includ

11、e#include#define TRUE 1#define OK 1#define ERROR 0#define INFEASIBLE -1#define STACK_INIT_SIZE 100char need= ,ne=n;int k=0,sw=0;char cl80;typedef struct stud char name20; char sex8; char snumber14; char time12; char id20; char college24; char major20; char classes40; struct stud *next;LNode,*LinkLis

12、t;LinkList p,q,m,n,c;char console() int i=0; k=0; gets(cl); if(cl0=1&!cl1) return cl0; else while(cli) k=k+cli; i+; return 0;void shell() printf( 学生证管理系统 n); printf(=n); printf(1、学生证信息录入n); printf(2、学生证信息修改n); printf(3、学生证信息删除n); printf(4、显示学生的学生证信息n); printf(5、显示班级所有学生学生证信息n); printf(6、其他n); printf

13、(7、说明书n); printf(8、结束n); printf(=n); printf(请输入操作序号或正确指令n);void shell_II() /*system(cls);*/ printf(请选择你想修改的信息n); printf(1、姓名n); printf(2、性别n); printf(3、学号n); printf(4、入学时间n); printf(5、身份证号码n); printf(6、学院n); printf(7、专业n); printf(8、班级n); printf(9、返回n);void shell_III() printf( 请选择你想实现的统计功能n); printf(

14、1、统计某个班的男女人数n); printf(2、统计已录入学生之间的男女人数n); printf(3、统计并显示已录入学生中同名的学生n); printf(4、统计同年同日出生同学n); printf(5、批量录入n); printf(6、班级删除n);void rewirte()/罚抄 /程序结束后将一切写进文件 FILE *fp; fp=fopen(date.txt,w+); q=p; p=p-next; while(p) fputs(p-name,fp); fputc(need,fp); fputs(p-sex,fp); fputc(need,fp); fputs(p-snumber,

15、fp); fputc(need,fp); fputs(p-time,fp); fputc(need,fp); fputs(p-id,fp); fputc(need,fp); fputs(p-college,fp); fputc(need,fp); fputs(p-major,fp); fputc(need,fp); fputs(p-classes,fp); fputc(need,fp); fputc(ne,fp); q=p; p=p-next; free(q); void load() /文件内容装载至链表 FILE *fp; char ch,e80; LinkList one; int i=

16、1,l=0; fp=fopen(date.txt,a+); while(!feof(fp) i=1;l=0; one=(LinkList)malloc(sizeof(LNode); ch=fgetc(fp); if(feof(fp) break; while(ch!=ne) while(ch!= ) el+=ch; ch=fgetc(fp); ch=fgetc(fp); el=0; switch(i) case 1:strcpy(one-name,e);break; case 2:strcpy(one-sex,e);break; case 3:strcpy(one-snumber,e);bre

17、ak; case 4:strcpy(one-time,e);break; case 5:strcpy(one-id,e);break; case 6:strcpy(one-college,e);break; case 7:strcpy(one-major,e);break; case 8:strcpy(one-classes,e);break; default:break; l=0;i+; q-next=one; q=q-next; q-next=NULL; fclose(fp);void pri(LinkList l) printf(姓名:); puts(l-name); printf(n)

18、; printf(性别:); puts(l-sex); printf(n); printf(学号:); puts(l-snumber); printf(n); printf(入学时间:); puts(l-time); printf(n); printf(身份证号码:); puts(l-id); printf(n); printf(学院:); puts(l-college); printf(n); printf(专业:); puts(l-major); printf(n); printf(班级:); puts(l-classes); printf(n);void pri_II(LinkList

19、l) printf(%s %s %s %s %s %s %s %sn,l-name,l-sex,l-snumber,l-time,l-id,l-college,l-major,l-classes);void search()/根据学号找人 char op; op=console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1;return; m=n=p-next; while(n) if(strcmp(cl,n-snumber)=

20、0) break; m=n;n=n-next; void search_II()/根据班级找人 system(cls); char op; int i=0; printf(请输入要查询的班级(如2013软件工程1班):n); op=console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1;return; n=p-next; while(n) if(strcmp(cl,n-classes)=0) pri_II(n); i+;

21、n=n-next; if(i=0) printf(找不到要查询的班级n);void entry()/录入 system(cls); char ,op,i=1; LinkList std; std=(LinkList)malloc(sizeof(LNode); std-next=NULL; printf(请分别输入学生的信息n); while(iname,cl);break; case 2:strcpy(std-sex,cl);break; case 3:strcpy(std-snumber,cl);break; case 4:strcpy(std-time,cl);break; case 5:

22、strcpy(std-id,cl);break; case 6:strcpy(std-college,cl);break; case 7:strcpy(std-major,cl);break; case 8:strcpy(std-classes,cl);break; i+; q-next=std; q=q-next; q-next=NULL; printf(录入成功n); printf(输入任意键以退出n); a=getchar();void batchentry()/批量录入 system(cls); int i=0,num=0; char op; printf(请输入录入人数n); op=

23、console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1;return; else while(cli) num+=cli-0; i+; i=1; while(inext;m=p; while(n) if(strcmp(cl,n-classes)=0) m-next=n-next; free(n); n=m-next; i+; else m=n;n=n-next; if(i=0) printf(找不到要查询的班级n);voi

24、d statistical_I()/统计某个班的男女人数 int i=0,boy=0,girl=0,sum=0; char op; printf(请输入你所要查询的班级n); op=console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1; return; n=p-next; while(n) if(strcmp(cl,n-classes)=0) while(n-sexi) sum=sum+n-sexi; i+; i=0;

25、if(sum=-108) boy+; else if(sum=-141) girl+; sum=0;n=n-next; printf(男:%d 女:%dn,boy,girl);void statistical_II()/统计已录入学生之间的男女人数 int i=0,boy=0,girl=0,sum=0; n=p-next; while(n) while(n-sexi) sum=sum+n-sexi; i+; i=0; if(sum=-108) boy+; else girl+; sum=0;n=n-next; printf(男:%d 女:%dn,boy,girl);void statistic

26、al_III()/统计并显示已录入学生中同名的学生 char op; printf(请输入名字(如王小明)n); op=console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1; return; n=p-next; while(n) if(strcmp(cl,n-name)=0) pri_II(n); n=n-next; void statistical_IV()/统计同年同日出生同学 int i=0,sum=0,deal=

27、0; char op; printf(请输入生日(如19940505)n); op=console(); if(k=562|k=648|k=627|k=966|k=1164|k=1218|k=311|k=672|k=1189|k=735|k=840|k=839|k=836|k=1076|k=1161) sw=1; return; n=p-next; while(n) while(iidi+6!=cli) deal=1;break; i+; if(deal=0) pri_II(n);sum+; n=n-next; deal=0;i=0; if(sum=0) printf(NOT FOUNDn);

28、void operation(char e)/其他 switch(e) case 1:statistical_I();break; case 2:statistical_II();break; case 3:statistical_III();break; case 4:statistical_IV();break; case 5:batchentry();break; case 6:classdelete();break; default:break; int main(void) FILE *fp; char op,sf,a,ch; int end=1; /*shell();*/ /*LinkList b;/链表头*/ p=(LinkList)malloc(sizeof(LNode); q=p; load(); x6:shell(); /*system(cls);*/ x8:while(end) she:op=console(); if(op=1) switch(op) case1: sw=0; x1:entry(); if(sw=1) sw=0;goto x7; break; case2: x2:sys

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922