C语言程序课设学生证管理系统

上传人:文*** 文档编号:68566133 上传时间:2022-04-03 格式:DOC 页数:25 大小:258.50KB
收藏 版权申诉 举报 下载
C语言程序课设学生证管理系统_第1页
第1页 / 共25页
C语言程序课设学生证管理系统_第2页
第2页 / 共25页
C语言程序课设学生证管理系统_第3页
第3页 / 共25页
资源描述:

《C语言程序课设学生证管理系统》由会员分享,可在线阅读,更多相关《C语言程序课设学生证管理系统(25页珍藏版)》请在装配图网上搜索。

1、C语言程序设计报告书学生证管理程序学号:09021106姓名:SYF2010年 5月一、题目内容的提出与描述。大学学生人数众多,学生信息量巨大。手工管理十分艰难,且极易出错和丢失信息,并会占用大量的纸张和空间资源。本款软件就是基于对学生证管理的需求,为学校管理方量身定做,操作容易,快速便捷,并且节约能源。它不仅符合当今信息化社会的需求,还顺应了当代低碳环保的理念此软件可实现学生信息的录入、输出、查询、修改、统计和删除的功能,查询和统计的功能是本款软件的特色,比较方便。另外,因为本人笔记本为windows7系统,调试时无法在中文条件下运行,所以本款软件有中英文两个版本。(英文版为student-

2、english)二、软件的需求分析描述1.软件应具有的功能:(1).输入学生信息。(2).输出全部学生信息。(3).查询学生信息。输入单个学号以查询一个学生;输入专业以查询一专业学生;输入学院以查询一院学生。(4).修改学生信息。输入学生学号以修改信息。(5).统计学生信息。按性别统计男、女生人数及比例;按户籍统计本地生和外地生人数及比例;(6).删除学生信息。输入学生学号以删除信息。补充:教师有特定验证码(验证码为1),输入正确则可实行以上操作。2题目要求:(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学生信息应该包含:学号、姓名、年龄、专业、所属学院、户籍

3、所在地。(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。三、开发工具的介绍本软件采用色开发工具为C语言。C语言Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,且具有强大的功能。许多著名的系统软件,如DBASE 都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORD

4、STAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来,可以像汇编语言一样对位、字节和地址进行操作。2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大。4. C语言适用范围大。适

5、合于多种操作系统,多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。C语言具有绘图能力强,可移植性,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。5.C语言文件由数据序列组成,可以构成二进制文件或文本文件。四、软件的总体设计和详细设计。【总体设计】1、软件的总体设计部分的结构图输入查询统计修改删除按学号按专业按学院按性别按户籍进入主菜单学生证管理系统输入验证码正确错误菜单重试退出输出全部2.各模块函数作用简介因为所用信息为全局变量,所以各函数间无传值或传址函数名主要作用调用及数据传输关系main()-主函数检验

6、验证码是否正确(验证码为1);若正确则显示主菜单,进入下面操作;若错误可选择重新输入或退出。调用了menu();一部分调用了tuichu().tuichu()-退出函数显示“感谢使用”“孙亚飞制作”等结束语,并可实现退出操作;避免了重复语句。被main(),menu()调用;menu()主菜单函数显示主菜单;用户可输入选项后可转向对应模块进行下面操作。分别调用了 tuichu(),input(), printall(),search(),tongji(),modify(),del();也被main()及以上函数调用;input()-输入函数输入要添加的学生人数,之后可输入对应人数的学生的信息;

7、操作完可返回主菜单。被menu()调用,也调用menu();printall()-输出全部函数可输出全部学生的信息;操作完可返主回菜单。被menu()调用,也调用menu();search()-查询函数通过一个菜单可选择输入单个学号以查询一个学生的信息,输入专业名查询一班学生的信息,输入学院名查询一院学生的信息。操作完可返回主菜单。被menu()调用,也调用menu();tongji()-统计函数通过一个菜单可选择按性别统计男、女生人数及比例或按户籍统计本地生和外地生人数及比例;操作完可返回主菜单。被menu()调用,也调用menu();modify()-修改函数通过输入一个学生学号以修改其信

8、息;操作完可返回主菜单。被menu()调用,也调用menu();del()-删除函数通过输入一个学生学号以删除其信息;操作完可返回主菜单被menu()调用,也调用menu();结构体为全局变量:struct studentlong number;char name5;char sex;int age;char college15;char major10;char hukou10;stuN;定义全局变量指针FILE *fp;【详细设计】1.各模块函数框图(1).main()-主函数while判断验证码输入验证码开始重新输入/退出TF重新输入退出tuichu()函数进入主菜单menu()(2)

9、tuichu()-退出函数开始退出输出结束语(3). menu()主菜单函数switchprintf显示菜单开始结束input()函数printall()函数modify()函数search()函数tuichu()函数del()函数tongji()函数case1case2case3case4case5case6case7(4). input()-输入函数TFTF开始输入要添加的学生人数n创建一个文件in+1i=1i+输入学生信息Tstui.number!=0i+i=1T回到主菜单menu()判断fp是否为空显示无法打开文件fwrite!=1显示写入错误(5). printall()-输出全部函

10、数FTF开始in+1i=1i+输出学生信息T打开文件读文件max+feof(fp)max=0回到主菜单menu()没有信息T(6).search()-查询函数T开始If选项显示本模块菜单FiN+1i=1i+读文件Tfeof(fp)Max+输入选项后面的流程图转下页TF输入要查找的学生的学号cTFimax+1i=1i+输出该学生信息d+d=0TStui学号为c输入要查找的专业的名称m与第一种情况流程图相同将Stui学号为c改为Stui专业为m将c改为改为显示没有该学生信息与第一种情况流程图相同将Stui学号为c改为Stui专业为n将c改为改为输入要查找的学院的名称回到主菜单menu()123 (

11、7).tongji()-统计函数FTT前面部分流程图与search()函数第一页流程图相同If选项12开始Fimax+1i=1i+stui性别为男Sum2+Sum1+输出统计信息Sum1为0且sum2为0T显示无法统计FTTFimax+1i=1i+stui性别为男Sum2+Sum1+输出统计信息Sum1为0且sum2为0T显示无法统计回到主菜单menu() (8).modify()-修改函数TTT输入修改后的信息输入要修改的学生学号i+写入文件回到主菜单menu()T开始FiN+1i=1i+读文件feof(fp)Max+Timax+1i=1stui学号为c将修改后的信息付给stuid=0d+s

12、tui学号为cF显示无该学生信息,无法修改转右侧 ().del()-删除函数转右侧TTT输入修改后的信息输入要修改的学生学号i+写入文件回到主菜单menu()T开始FiN+1i=1i+读文件feof(fp)Max+Timax+1i=1stui学号为c将修改后的信息付给stuid=0t=istui学号为cF显示无该学生信息,无法删除五、资源描述计算机需装有winTc软件。计算机的配置:windows Xpvista/7系统:只能运行英文版windows Xp:中、英文两个版本均可运行六、源代码#define N 20#include stdio.hstruct studentlong numbe

13、r;char name20;char sex;int age;char college20;char major20;char hukou20;stuN;FILE *fp; /* 全局变量 */*-主函数-*/main()struct student stuN;int a,b; printf(请输入验证码:n); /* 验证码为1 */scanf(%d,&a);while(a!=1) printf(验证码错误!n); printf(1:重新输入n2:退出n); printf(您的选择是(输入代号):); scanf(%d,&b); if(b=1) printf(请输入验证码:n); scanf

14、(%d,&a); else tuichu(); menu();/*-退出函数-*/tuichu()printf(nn感谢使用本系统!);printf(n孙亚飞制作于2010年);getch();exit(0);/*-主菜单-*/menu()int c;printf(n*n);printf( 欢迎使用本系统!nn);printf(1:输入学生信息n);printf(2:输出全部学生信息n);printf(3:查询学生信息n);printf(4:统计学生信息n);printf(5:修改学生信息n);printf(6:删除学生信息n);printf(7:退出系统n);printf(*nn);prin

15、tf(您的选择是(输入代号):);scanf(%d,&c);switch(c) case 1:input(stu);break; case 2:printall(stu);break; case 3:search(stu);break; case 4:tongji(stu);break; case 5:modify(stu);break; case 6:del(stu);break; case 7:tuichu();break; /*-输入部分-*/input(struct student stu)int i,n;fp=fopen(stu_list,a+);printf(nn请输入要添加的学生

16、的人数:n);scanf(%d,&n);for(i=1;in+1;i+) printf(n第%d个学生,i); printf(n请输入学生学号(取后7位):); scanf(%ld,&stui.number); printf(n请输入学生姓名:); scanf(%s,&stui.name); printf(n请输入学生性别(填“m”或“f”):); scanf(%s,&stui.sex); printf(n请输入学生年龄:); scanf(%d,&stui.age); printf(n请输入学生学院名称:); scanf(%s,&stui.college); printf(n请输入学生专业:)

17、; scanf(%s,&stui.major); printf(n请输入学生户口所在地(北京写作“beijing”):);scanf(%s,&stui.hukou);if(fp=fopen(stu_list,a+)=NULL) printf(无法打开文件n);for(i=1;stui.number!=0;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(写入错误n);fclose(fp);menu();/*-输出部分-*/printall(struct student stu)int i,max=0;fp=fopen(stu

18、_list,r);for(i=1;iN+1;i+) fread(&stui,sizeof(struct student),1,fp); if(feof(fp) fclose(fp); break; max+; fp=fopen(stu_list,r);if(max=0) printf(n没有信息!n);else printf(学号t姓名t性别t年龄t学院t专业t户口n); for(i=1;imax+1;i+) printf(%ldt%st%ct%dt%st%st%snn,stui.number,stui.name, stui.sex,stui.age,stui.college,stui.maj

19、or,stui.hukou); fclose(fp);getch();menu();/*-查找部分-*/search(struct student stu)int c,i,max=0,d=0,e=0,f=0;long g;char m20,n20;fp=fopen(stu_list,r);printf(n1:查询单个学生信息);printf(n2:查询一个专业学生);printf(n3:查询一学院学生);printf(n您的选择是(输入代号):);scanf(%d,&c);for(i=1;iN+1;i+) fread(&stui,sizeof(struct student),1,fp); if

20、(feof(fp) fclose(fp); break; max+; fp=fopen(stu_list,r);if(c=1) printf(nn请输入要查找的学生的学号:); scanf(%ld,&g); printf(学号t姓名t性别t年龄t学院t专业t户口n); for(i=1;imax+1;i+) fread(&stui,sizeof(struct student),1,fp); if(stui.number=g) printf(%ldt%st%ct%dt%st%st%snn,stui.number,stui.name, stui.sex,stui.age,stui.college,s

21、tui.major,stui.hukou); d+; if(d=0) printf(n没有相关信息!n); else if(c=2) printf(nn请输入要查找的专业的名称:); scanf(%s,m); printf(学号t姓名t性别t年龄t学院t专业t户口n); for(i=1;imax+1;i+) fread(&stui,sizeof(struct student),1,fp); if(strcmp(stui.major,m)=0) printf(%ldt%st%ct%dt%st%st%snn,stui.number,stui.name, stui.sex,stui.age,stui

22、.college,stui.major,stui.hukou); e+; if(e=0) printf(n没有相关信息!n); else printf(nn请输入要查找的专业的名称:); scanf(%s,g); printf(学号t姓名t性别t年龄t学院t专业t户口n);for(i=1;imax+1;i+) fread(&stui,sizeof(struct student),1,fp); if(strcmp(stui.college,n)=0) printf(%ldt%st%ct%dt%st%st%snn,stui.number,stui.name, stui.sex,stui.age,s

23、tui.college,stui.major,stui.hukou); f+; if(f=0) printf(n没有相关信息!n); fclose(fp);getch();menu();/*-统计部分-*/tongji(struct student stu)int c,i,sum1,sum2,sum3,sum4,max;float d,e,f,g;sum1=0;sum2=0; sum3=0; sum4=0; max=0;fp=fopen(stu_list,r);printf(n1:统计男女生人数及比例);printf(n2:统计本地生与外地生的人数及比例);printf(n您的选择是(输入代号

24、):);scanf(%d,&c);for(i=1;iN+1;i+) fread(&stui,sizeof(struct student),1,fp); if(feof(fp) fclose(fp); break; max+; if(c=1) for(i=1;imax+1;i+) if(stui.sex=m) sum1+; else sum2+; if(sum1=0&sum2=0) printf(没有相关信息 无法统计!); else printf(n男女生人数分别是:%d %d,sum1,sum2); d=(float)sum1/(sum1+sum2)*100; e=(float)sum2/(

25、sum1+sum2)*100; printf(n男生人数比例为%.2f%,d); printf(n女生人数比例为%.2f%,e); else for(i=1;imax+1;i+) if(strcmp(stui.hukou,beijing)=0) sum3+; else sum4+; if(sum3=0&sum4=0) printf(没有相关信息 无法统计!); else printf(nn本地生与外地生人数分别是:%d %d,sum3,sum4); f=(float)sum3/(sum3+sum4)*100; g=(float)sum4/(sum3+sum4)*100; printf(n本地生

26、比例为:%.2f%,f); printf(n外地生比例为:%.2f%,g); fclose(fp);getch();menu();/*-修改部分-*/modify(struct student stu)int i,d=0,max=0;long c;struct student st1;fp=fopen(stu_list,r);printf(请输入要修改的学生的学号:);scanf(%ld,&c);for(i=1;iN+1;i+) fread(&stui,sizeof(struct student),1,fp); if(feof(fp) fclose(fp); break; max+; if(s

27、tui.number=c) d+; if(d=0) printf(n没有相关信息 无法修改!n);else printf(n请输入学生学号(取后7位):); scanf(%ld,&st0.number); printf(n请输入学生姓名:); scanf(%s,&st0.name); printf(n请输入学生性别(填“m”或“f”):); scanf(%s,&st0.sex); printf(n请输入学生年龄:); scanf(%d,&st0.age); printf(n请输入学生学院名称:); scanf(%s,&st0.college); printf(n请输入学生专业:); scanf

28、(%s,&st0.major); printf(n请输入学生户口所在地(北京写作“beijing”):);scanf(%s,&st0.hukou);fp=fopen(stu_list,r);for(i=1;imax+1;i+) if(stui.number=c) stui.number=st0.number; stui.sex=st0.sex; stui.age=st0.age; strcpy(stui.name,st0.name); strcpy(stui.college,st0.college); strcpy(stui.major,st0.major); strcpy(stui.huko

29、u,st0.hukou); fclose(fp);fp=fopen(stu_list,w);for(i=1;imax+1;i+) fwrite(&stui,sizeof(struct student),1,fp);fclose(fp);getch();menu();/*-删除部分-*/del(struct student stu)int t,i,max=0;long c;fp=fopen(stu_list,r);printf(请输入要修改的学生的学号:);scanf(%ld,&c);for(i=1;iN+1;i+) fread(&stui,sizeof(struct student),1,fp

30、); if(stui.number=c) t=i; if(feof(fp) fclose(fp); break; max+; If(max=0) printf(n没有相关信息 无法删除n);else fp=fopen(stu_list,w); for(i=1;imax+1;i+) if(i!=t) fwrite(&stui,sizeof(struct student),1,fp); else continue; fclose(fp);getch();menu();七、调试程序 检查验证码 显示菜单 退出函数输入函数输出全部函数 查找函数统计函数修改函数(修改后) 删除函数八、在编程过程中遇到的

31、问题与解决办法因为是一个人编程,所以在编程过程中出现了许许多多、形形色色的错误。通过发现及改正这些错误,我对c语言又有了更深刻的理解,最重要的是,我对知识的掌握与灵活运用方面有了极大的提高!下面我就举一些典型的错误例子和解决方法。1.自己改正的(1)。在未定义前使用应把定义放于函数最前(2)while语句执行结果不对反复修改加看书。(3)退出函数最好不要叫exit,不然运行结果可能出错exit为库函数。(5)查找一个专业及一个学院信息处出现语法错误字符串比较要用“”还有一些更低级的错误在此就不多说了。这些错误大多因为我对知识的掌握不够深刻,运用不够熟练。2.在老师指点下改正的(1)警告:不可移

32、动的指针在。函数中此函数中将number用作了数组,而long型数据不能用数组表示。类似的,还有char型在判断时要用“=”,而不是strcmp语句。(2)信息无法存入stu_list中i值表的有问题,输入循环处是i=1,后面判断是否可打开文件处是i=0(3)因为预编译N为10,尽管后面输入的学生不足10,也会全部输出,多出来的显示0老师告诉我可以用if(feof(fp) fclose(fp); break;的语句改正这个错误。还有一些有关文件部分的错误在此就不全部详述了。由于这部分只是有一定难度,上学期也没有接触过,所以掌握起来比较吃力。但是王微老师非常耐心细致地帮我一一解决这方面的问题。非常感谢老师!(O_O)总之,这次的课设我受益匪浅。虽然没有体验到团队合作的感觉,但一个人编程我学会了很多东西,我知道了要想学好C一定要多动手编,多实践。25 / 25

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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