版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计报告书学生证管理程序学号: 09021106姓名: SYF2010年 5 月一、题目内容的提出与描述。大学学生人数众多,学生信息量巨大。手工管理十分艰难,且极易出错和丢失信息,并会占用大量的纸张和空间资源。 本款软件就是基于对学生证管理的需求, 为学校管理方量身定做,操作容易,快速便捷,并且节约能源。它不仅符合当今信息化社会的需求,还顺应了当代低碳环保的理念此软件可实现学生信息的录入、输出、查询、修改、统计和删除的功能,查询和统计的功能是本款软件的特色,比较方便。另外,因为本人笔记本为windows7 系统,调试时无法在中文条件下运行,所以本款软件有中英文两个版本。 (英文版为
2、student-english)二、软件的需求分析描述1. 软件应具有的功能:(1).输入学生信息。(2).输出全部学生信息。(3). 查询学生信息。 输入单个学号以 查询一个学生 ;输入专业以 查询一专业学生 ;输入学院以查询一院学生 。(4).修改学生信息。输入学生学号以修改信息。(5).统计学生信息。 按性别 统计男、 女生人数及比例;按户籍 统计本地生和外地生人数及比例;(6).删除学生信息。输入学生学号以删除信息。补充:教师有特定验证码(验证码为1),输入正确则可实行以上操作。2题目要求:(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学生信息应该包含
3、:学号、姓名、年龄、专业、所属学院、户籍所在地。(3) 为各项操作功能设计一个菜单。 应用程序运行后, 先显示这个菜单, 然后用户通过菜单项选择希望进行的操作项目。三、开发工具的介绍本软件采用色开发工具为C 语言。C语言 Combined Language(组合语言) 的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,且具有强大的功能。许多著名的系统软件,如DBASE 都是由C 语言编写的。用 C 语言加上一些汇编语言子程序,就
4、更能显示C 语言的优势了,像 PC-DOS 、 WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:1. C 是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来,可以像汇编语言一样对位、字节和地址进行操作。2.C 是结构式语言。结构式语言的显著特点是代码及数据的分隔化,使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C 语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外 C语言也具有强大的图形功能,支持多种显示器和驱动器。
5、而且计算功能、逻辑判断功能也比较强大。4. C 语言适用范围大。适合于多种操作系统,多种机型。C 语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用 C 语言编写的。C 语言具有绘图能力强,可移植性,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。5.C 语言文件由数据序列组成,可以构成二进制文件或文本文件。四、软件的总体设计和详细设计。【总体设计】1、软件的总体设计部分的结构图学生证管理系统输入验证码正确错误进入主菜单菜单输输出全查修统删重退入部询改计除试出按按按按按学专学性户号业院别籍2. 各模块函数作用简介因为所用信息为全局变量,所
6、以各函数间无传值或传址函数名主要作用调用及数据传输关系main()-主函数tuichu()- 退出函数menu()主菜单函数检验验证码是否正确(验证码为1);调用了 menu();若正确则显示主菜单,进入下面操作;若一部分调用了tuichu().错误可选择重新输入或退出。显示“感谢使用” “孙亚飞制作”等结束被 main(),语,并可实现退出操作;menu() 调用;避免了重复语句。显示主菜单;分 别 调 用 了tuichu(),input(),用户可输入选项后可转向对应模块进行printall(),search(),tongji(),modi下面操作。fy(),del();也被 main()
7、 及以上函数调用;输入要添加的学生人数,之后可输入对应被 menu() 调用,input()-输 入函人数的学生的信息;也调用 menu() ;数操作完可返回主菜单。printall()-输出全部函数search()- 查询函数可输出全部学生的信息;被 menu() 调用,操作完可返主回菜单。也调用 menu() ;通过一个菜单可选择输入单个学号以查询一个学生的信息,输入专业名查询一班被 menu() 调用,学生的信息, 输入学院名查询一院学生的也调用 menu() ;信息。操作完可返回主菜单。tongji()- 统计函数modify()- 修改函数del()-删除函数通过一个菜单可选择按性别
8、统计男、女生人数及比例或按户籍统计本地生和外地被 menu() 调用 ,生人数及比例;也调用 menu();操作完可返回主菜单。通过输入一个学生学号以修改其信息;被 menu() 调用 ,操作完可返回主菜单。也调用 menu();通过输入一个学生学号以删除其信息;被 menu() 调用 ,操作完可返回主菜单也调用 menu();结构体为全局变量:struct studentlong number;char name5;char sex;int age;char college15;char major10;char hukou10;stuN;定义 全局变量指针 FILE *fp;【详细设计】1
9、. 各模块函数框图(1).main()-主函数开始输入验证码Twhile判断验证码F重新输入重新输入 /退出退出进入主菜单tuichu() 函数menu()(2) tuichu()-退出函数开始输出结束语退出(3). menu()主菜单函数开始printf 显示菜单switchcase 1case 2case 3case 4case 5case6case 7input(printalsearch(modifytongjidel()tuichu() 函数l() 函数) 函数() 函() 函数函数函数数结束(4).input()-输入函数开始创建一个文件输入要添加的学生人数 ni=1in+1T输入
10、学生信息i+判断fp是T否为空Fi=1stui.number!=0TTfwrite!=1显示写入Fi+错误回到主菜单显示无法打开文件menu()(5).printall()-输出全部函数开始打开文件i=1in+1T读文件输出学生信息max+feof(fp)Fi+Tmax=0T没有信息F回到主菜单menu()(6).search()-查询函数开始i=1TiN+1读文件feof(fp)FTMax+i+显示本模块菜单输入选项If 选项后面的流程图转下页123输入要查找的输入要查找的输入要查找的学生的学号c专业的名称m学院的名称i=1imax+1TStui学号为 cFi+与第一种情况流程图相同将 St
11、ui学号为 c改为Stui专业为 mT将 c 改为改为输出该学生信息d+Td=0F显示没有该学生信息回到主菜单与第一种情况流程图相同将 Stui 学号为 c改为Stui专业为 n将 c 改为改为menu()(7).tongji()-统计函数开始前面部分流程图与search()函数第一页流程图相同If 选项12i=1i=1imax+1imax+1TTstui性Fstui性别为男别为男TTSum1+Sum2+Sum1+i+i+Sum1为 0 且TSum1为 0 且显示无sum2为 0法统计sum2为 0FF输出统计输出统计信息信息FSum2+T 显示无法统计回到主菜单menu()(8).modif
12、y()-修改函数开始i=1TiN+1读文件feof(Tfp)FMax+stui学号为 cTd+输入要修改的学生学号输入修改后的信息i=1imax+1Tstui学号为 c将修改后的信息付给stui写入文件i+d=0Fi+T显示无该学生信息,无法修改转右侧回到主菜单menu()( ). del()-删除函数开始i=1TiN+1读文件feof(Tfp)FMax+stui学输入要修改的学生学号输入修改后的信息i=1imax+1Tstui学号为 c将修改后的号为 cTt=ii+d=0F信息付给stui写入文件i+回到主菜单T显示无该学生信息,无法删除转右侧五、资源描述计算机需装有winTc 软件。计算机
13、的配置 :windows Xpvista/7系统:只能运行英文版windows Xp :中、英文两个版本均可运行menu()六、源代码#define N 20#include stdio.hstruct studentlong number;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
14、(a!=1)printf(验证码错误! n);printf(1:重新输入 n2 :退出 n);printf(您的选择是(输入代号): );scanf(%d,&b);if(b=1)printf(请输入验证码:n);scanf(%d,&a);else tuichu();menu();/*-tuichu()printf(nn感谢使用本系统!);printf(n孙亚飞制作于2010 年 );getch();exit(0);退出函数-*/*-主菜单-*/menu()int c;printf(n*n);printf(printf(1:printf(2:printf(3:printf(4:printf(5:
15、printf(6:printf(7:欢迎使用本系统!输入学生信息n);输出全部学生信息查询学生信息n);统计学生信息n);修改学生信息n);删除学生信息n);退出系统 n);nn);n);printf(*nn);printf(您的选择是(输入代号)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;cas
16、e 7:tuichu();break; /*-input(struct student stu)int i,n;fp=fopen(stu_list,a+);printf(nn请输入要添加的学生的人数:scanf(%d,&n);输入部分n);-*/for(i=1;in+1;i+)printf(n第%d个学生 ,i);printf(n请输入学生学号(取后scanf(%ld,&stui.number);7 位):);printf(n请输入学生姓名:);scanf(%s,&);printf(n请输入学生性别(填“m”或“ f ”): );scanf(%s,&stui.sex);pri
17、ntf(n请输入学生年龄:);scanf(%d,&stui.age);printf(n请输入学生学院名称:);scanf(%s,&stui.college);printf(n请输入学生专业:);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
18、)!=1)printf(写入错误 n);fclose(fp);menu();/*-输出部分-*/printall(struct student stu)int i,max=0;fp=fopen(stu_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);elseprintf( 学号 t 姓名 t 性别 t 年龄 t 学院 t 专业 t 户口 n); for(i
19、=1;imax+1;i+)printf(%ldt%st%ct%dt%st%st%snn,stui.number,, stui.sex,stui.age,stui.college,stui.major,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
20、:查询一学院学生);printf(n您的选择是(输入代号):);scanf(%d,&c);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(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(
21、stui.number=g)printf(%ldt%st%ct%dt%st%st%snn,stui.number,,stui.sex,stui.age,stui.college,stui.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(st
22、rcmp(stui.major,m)=0)printf(%ldt%st%ct%dt%st%st%snn,stui.number,,stui.sex,stui.age,stui.college,stui.major,stui.hukou);e+;if(e=0)printf(n没有相关信息!n);elseprintf(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(strcm
23、p(stui.college,n)=0)printf(%ldt%st%ct%dt%st%st%snn,stui.number,,stui.sex,stui.age,stui.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=
24、fopen(stu_list,r);printf(n1:统计男女生人数及比例);printf(n2:统计本地生与外地生的人数及比例printf(n您的选择是(输入代号):);-*/);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+;elsesum2+;if(sum1=0&sum2=0)printf(没有相关信息无法统计! );elseprintf(n
25、男女生人数分别是:%d %d,sum1,sum2);d=(float)sum1/(sum1+sum2)*100;e=(float)sum2/(sum1+sum2)*100;printf(n男生人数比例为%.2f%,d);printf(n女生人数比例为%.2f%,e);elsefor(i=1;imax+1;i+)if(strcmp(stui.hukou,beijing)=0)sum3+;elsesum4+;if(sum3=0&sum4=0)printf(没有相关信息无法统计! );elseprintf(nn本地生与外地生人数分别是:%d %d,sum3,sum4);f=(float)sum3/(
26、sum3+sum4)*100;g=(float)sum4/(sum3+sum4)*100;printf(nprintf(n本地生比例为:外地生比例为:%.2f%,f);%.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 stud
27、ent),1,fp);if(feof(fp)fclose(fp);break;max+;if(stui.number=c)d+;if(d=0)printf(n没有相关信息无法修改!n);elseprintf(n请输入学生学号(取后7 位): );scanf(%ld,&st0.number);printf(n请输入学生姓名:);scanf(%s,&);printf(n请输入学生性别(填“m”或“ f ”): );scanf(%s,&st0.sex);printf(n请输入学生年龄:);scanf(%d,&st0.age);printf(n请输入学生学院名称:);scanf(%s,
28、&st0.college);printf(n请输入学生专业:);scanf(%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(,);strcpy(stui.college,st0.college);strcpy(stui.ma
29、jor,st0.major);strcpy(stui.hukou,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);if(stui.number=c)t=i;if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026企业运营部面试题及答案
- 2026浅根树面试题及答案
- 部编版四年级上册语文1-8单元知识点归纳 暑假预习版
- 开学拼车协议书
- 强制停贷协议书
- 毕业前解约协议书
- 亲子守护协议书范本
- 放弃执行协议书
- 2026数控普工面试题及答案
- 关于设备调试进度确认的通知(8篇范文)
- 2026年中小学生安全知识竞赛试题(附答案)
- 2026年安全管理人员安全培训考试题附答案
- 2026年人教版七年级下册政治期末综合测评卷(含答案可下载)
- 2026年全国新高考1卷英语试卷(含答案及详解)
- (2026版)学校保密安全管理制度
- 市场监督管理局特种设备安全监察工作手册(标准版)
- 高中数学必修一2.2基本不等式常见题型(含答案)
- 2026年贵州省六盘水市初二地生会考试卷题库及答案
- 20kV及以下配电网工程预算定额(2022版)全5册excel版
- 城镇污水处理厂资产管理方案
- 卖身合同范例
评论
0/150
提交评论