




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目要求题目要求 学生证管理信息系统学生证管理信息系统 假设某校学生学生证基本信息主要包括:学号、姓名、所在系、班级等,本系统应能对这 些基本信息进行管理,并要求具有以下功能: (1) 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证; (2) 给定学号,显示某位学生的学生证信息; (3) 给定某个班级的班号,显示该班所有学生的学生证信息; (4) 给定某位学生的学号,修改该学生的学生证信息; 进制转换算法设计进制转换算法设计 本系统要求具有以下功能: 1、具有将十进制转换为二进制功能 2、具有将十进制转换为十六进制功能 3、具有将二进制转换为十进制功能 4、具有将十六进制转换为十进制功能 第 2 页 共 26 页 目录目录 1.1.意义及功能意义及功能.5 1.1 系统意义 .5 1.1.1 学生证管理信息系统意义.5 1.1.2 进制转换算法设计意义.5 1.2 系统功能 .5 1.2.1 学生证管理信息系统功能 .5 1.2.2 进制转换算法设计功能.5 2 2 功能结构图功能结构图.6 2.1 学生证管理信息系统.6 2.2 进制转换算法设计.6 3.3.流程图流程图.6 3.1 学生证管理信息系统流程图 .6 3.2 学生证管理信息系统各部分功能流程图 .6 4 4 调试运行调试运行.9 4.1 学生证管理信息系统 .9 4.2 进制转换算法设计 .11 5 5 C C 语言源程序代码语言源程序代码.12 5.1 学生证管理信息系统.12 5.2 进制转换算法设计.23 6 6 心得体会心得体会.26 7 7 实习日志实习日志.27 8 8 参考文献参考文献.28 第 3 页 共 26 页 1.1.意义及功能意义及功能 1.11.1系统意义系统意义 1.1.1 学生证管理信息系统意义 使用 VC+编译学生证管理系统,使繁琐的普通人工管理转变成简单易行的 C 程序系统,用户只需在该界面上按要求输入学生证信息,就可随意删除和修 改信息,还可以按学号、姓名或班号查询到相关学生的信息,使学生证的管理 不再复杂。 1.1.2 进制转换系统算法设计意义 本进制转换系统可以快速便捷地实现十进制和二进制,十进制和十六进制 之间的互相转换,用户不需要自己在纸面上忙碌而复杂地算了,只需简单输入 需要转换的进制数,系统就能很快算出相应的其他进制数。使进制转换简单易 行。 1.21.2 系统功能系统功能 1.2.1 学生证管理信息系统功能 假设某校学生学生证基本信息主要包括:学号、姓名、所在系、班级等,本系统应能 对这些基本信息进行管理,并要求具有以下功能: (1) 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证; (2) 给定学号,显示某位学生的学生证信息; (3) 给定某个班级的班号,显示该班所有学生的学生证信息; (4) 给定某位学生的学号,修改该学生的学生证信息; 1.2.2 进制转换算法设计功能 本系统要求具有以下功能: 1、具有将十进制转换为二进制功能 2、具有将十进制转换为十六进制功能 3、具有将二进制转换为十进制功能 4、具有将十六进制转换为十进制功能 第 4 页 共 26 页 2 2 功能结构图功能结构图 2.12.1 学生证管理信息系统学生证管理信息系统 学生证管理 添加删除查询 给定学号,显示某 位学生的学生证信 息 给定某个学生姓名, 显示该班所有学生 的学生证信息 显示 给定某位学生的学 号,修改该学生的 学生证信息 通过键盘输入某 位学生的学生证 信息 给定某个班级的班 号,显示该班所有 学生的学生证信息 图图 1 1 功能结构图功能结构图 2.22.2 进制转换算法设计进制转换算法设计 进制转换系统进制转换系统 十进制转换为二进 制 十进制转换为十六 进制 二进制转换为十进 制 十六进制转换为十 进制 3.3.流程图流程图 3.13.1 学生证管理信息系统流程图学生证管理信息系统流程图 3.23.2 学生证管理信息系统各部分功能流程图学生证管理信息系统各部分功能流程图 第 5 页 共 26 页 (1)添加模块 (2)删除模块 (3)根据学号查找某学生的学生证信息 第 6 页 共 26 页 (4)根据姓名查找某学生的学生证信息 (5)根据班号查询某个班级所有学生的信息 (6)显示模块 第 7 页 共 26 页 4 4 调试运行调试运行 4.14.1 学生证管理信息系统学生证管理信息系统 图(1)菜单 图(2)添加 图(3)添加时输入错误的改正 图(4)删除 第 8 页 共 26 页 图(5)查询菜单 图(6)按学号查询 图(7)按姓名查询 图(8)按班号查询 图(9)显示模块 第 9 页 共 26 页 4.24.2 进制转换算法设计进制转换算法设计 图(10)主菜单 图(11)十进制转换为二进制 图(12)十进制转换为十六进制 图(13)二进制转换为十进制 图(14)十六进制转换为十进制 图(15)退出菜单 第 10 页 共 26 页 5 5 C C 语言源程序代码语言源程序代码 5.15.1 学生证管理信息系统学生证管理信息系统 / 学生证管理系统.cpp : Defines the entry point for the console application. / #include stdafx.h #include #include #include #define N 100 struct Class /班级 char Cname20;/班名 char Cno20;/班号 ; struct Student/学生 char Sname20;/姓名 char Sex10;/性别 char Sno20;/学号 int Age;/年龄 struct Class CInfo;/嵌套结构体,表示班级信息 studentN; void main(); /主菜单 void input(); /添加模块 void del(); /删除模块 void find(); /查询模块 void bySname(); /按姓名查询,子模块 void bySno(); /按学号查询,子模块 void byCno(); /按班号查询,子模块 void browse(); /显示模块 void main() /菜单 char c; int i; do system(cls); for(i=0;i80;i+) printf(*); printf(t 1: 添加一个学生n); 第 11 页 共 26 页 printf(t 2: 删除一个学生n); printf(t 3: 查找一个学生n); printf(t 4: 显示一个学生n); printf(t 5: 退出n); printf(t 请选择输入选项12345:n); do c=getchar(); while(c!=1 getchar(); switch(c) case 1: input(); break; case 2: del(); break; case 3: find(); break; case 4: browse(); break; case 5: exit(0); printf( 按任意键返回主菜单:n); getchar(); system(cls); while(1); void input() /添加学生信息,一次添加一条记录 int num; int i; int age; char sno20; char sex20; char cno20; int right; FILE*fp; if(fp=fopen(StuInfo.txt,r+)=NULL) /以读写方式打开 if(fp=fopen(StuInfo.txt,w)=NULL) /文件不存在则创建文件 printf(n 文件不存在且创建失败,返回!n); main(); printf(n 请按照提示输入学生信息:nn); printf(姓名:); scanf(%s, do 第 12 页 共 26 页 printf(n 性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0) right=1; getchar(); else right=0; while(right=1); strcpy(student0.Sex,sex); do printf(n 学号(7 位):); scanf(%s,sno); if(strlen(sno)!=7) printf(输入错误,学号长度应为 7 位数!n); right=1; getchar(); else right=0; while(right=1); strcpy(student0.Sno,sno); do printf(n 年龄:); scanf(%d, if(age100) printf(年龄应在 0-100 之间,请重新输入年龄!n); right=1; getchar(); else right=0; while(right=1); student0.Age=age; do printf(n 班号(3 位):); scanf(%s,cno); if(strlen(cno)!=3) 第 13 页 共 26 页 printf(输入错误,班号长度应为 3 位数!n); right=1; getchar(); else right=0; while(right=1); strcpy(student0.CInfo.Cno,cno); printf(n 班名:); scanf(%s, fprintf(fp,n%st%st%st%dt%st%s,student0.Sname,student0.Sex,student0.Sno,student0.A ge,student0.CInfo.Cno,student0.CInfo.Cname); fclose(fp); printf(n 保存成功!n); printf(n 请按 enter 键返回主菜单!n); getchar(); getchar(); main(); for(i=0;!feof(fp);i+) /读取文件 fscanf(fp,%s%s%s%d%s%s, num=i; if(num=N) printf(n 保存记录数超出结构体数组数的大小,请先修改 N 的值n); main(); printf(n 请按照提示输入学生信息:nn); printf(姓名:); scanf(%s, do printf(n 性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0) right=1; getchar(); else right=0; 第 14 页 共 26 页 while(right=1); strcpy(studentnum.Sex,sex); do printf(n 学号(7 位):); scanf(%s,sno); if(strlen(sno)!=7) printf(输入错误,学号长度应为 7 位数!n); right=1; getchar(); else right=0; for(i=0;inum;i+) if(strcmp(sno,studenti.Sno)=0) printf(该学号已经存在,请重新输入!n); right=1; getchar(); while(right=1); strcpy(studentnum.Sno,sno); do printf(n 年龄:); scanf(%d, if(age100) printf(年龄应在 0-100 之间,请重新输入年龄!n); right=1; getchar(); else right=0; while(right=1); studentnum.Age=age; do printf(n 班号(3 位):); scanf(%s,cno); if(strlen(cno)!=3) printf(输入错误,班号长度应为 3 位数!n); right=1; getchar(); 第 15 页 共 26 页 else right=0; while(right=1); strcpy(studentnum.CInfo.Cno,cno); printf(n 班名:); scanf(%s, /把该记录写到文件末尾 fprintf(fp,n%st%st%st%dt%st%s,studentnum.Sname,studentnum.Sex,studentnum.Sno, studentnum.Age,studentnum.CInfo.Cno,studentnum.CInfo.Cname); fclose(fp); printf(n 保存成功!n); printf(n 请按 enter 键返回主菜单!n); getchar(); getchar(); main(); void del() int num; int i; int found=-1; char StuNO20; FILE*fpr,*fpw; if(fpr=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); main(); for(i=0;!feof(fpr);i+) /读取文件 fscanf(fpr,%s%s%s%d%s%s, num=i; fclose(fpr); printf(n 请输入学号选择你要删除的记录:); scanf(%s,StuNO); for(i=0;inum;i+) if(strcmp(StuNO,studenti.Sno)=0) found=i; printf(n 你删除的学生信息为:nn); 第 16 页 共 26 页 printf(姓名 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,studentfound.Sname,studentfound.Sex,studentfound.Sno, studentfound.Age,studentfound.CInfo.Cno,studentfound.CInfo.Cname); if(foundnum-1) for(found;foundnum-1;found+) strcpy(studentfound.Sname,studentfound+1.Sname); strcpy(studentfound.Sex,studentfound+1.Sex); strcpy(studentfound.Sno,studentfound+1.Sno); studentfound.Age=studentfound+1.Age; strcpy(studentfound.CInfo.Cno,studentfound+1.CInfo.Cno); strcpy(studentfound.CInfo.Cname,studentfound+1.CInfo.Cname); if(fpw=fopen(StuInfo.txt,w)=NULL) printf(文件打不开!n); main(); for(i=0;inum-1;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,studenti.Sname,studenti.Sex, studenti.Sno,studenti.Age,studenti.CInfo.Cno,studenti.CInfo.Cname); fclose(fpw); printf(n 修改成功!n); printf(n 请按 enter 键返回主菜单!n); getchar(); getchar(); main(); if(found0) printf(n 没有找到该学号的记录:n); printf(n 请按 enter 键返回主菜单!n); getchar(); getchar(); main(); void find() 第 17 页 共 26 页 int chose; int right; do system(cls); printf(nt1-按学号查询t2-按姓名查询t3-某班学生信息t4-返回n); printf(n 请输入数字选择:); scanf(%d, if(chose4) right=1; getchar(); else right=0; while(right=1); switch(chose) case 1:bySno();break; case 2:bySname();break; case 3:byCno();break; case 4:main(); void bySno() int found=-1; int num; int i; char no20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); main(); for(i=0;!feof(fp);i+) /读取文件 fscanf(fp,%s%s%s%d%s%s, num=i; 第 18 页 共 26 页 fclose(fp); printf(n 请输入学生学号:); scanf(%s,no); for(i=0;inum;i+) if(strcmp(no,studenti.Sno)=0) found=i; printf(n 该学生的信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,studentfound.Sname,studentfound.Sex,studentfound.Sno, studentfound.Age,studentfound.CInfo.Cno,studentfound.CInfo.Cname); if(found0) printf(n 没有找到该班号的记录!n); printf(n 请按 enter 键返回上级菜单!n); getchar(); getchar(); find(); void bySname() int found=-1; int num; int i; char name20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); main(); for(i=0;!feof(fp);i+) /读取文件 fscanf(fp,%s%s%s%d%s%s, num=i; fclose(fp); printf(n 请输入学生姓名:); scanf(%s,name); printf(n 叫该姓名的学生信息为:nn); 第 19 页 共 26 页 printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) if(strcmp(name,studenti.Sname)=0) found=i; printf(%st%st%st%dt%st%sn,studentfound.Sname,studentfound.Sex,studentfound.Sno, studentfound.Age,studentfound.CInfo.Cno,studentfound.CInfo.Cname); if(found0) printf(n 没有找到该班号的记录!n); printf(n 请按 enter 键返回上级菜单!n); getchar(); getchar(); find(); void byCno() int found=-1; int num; int i; char ClaNO20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); main(); for(i=0;!feof(fp);i+) /读取文件 fscanf(fp,%s%s%s%d%s%s, num=i; fclose(fp); printf(n 请输入班号:); scanf(%s,ClaNO); printf(n 该班级的学生信息为:nn); printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) if(strcmp(ClaNO,studenti.CInfo.Cno)=0) found=i; 第 20 页 共 26 页 printf(%st%st%st%dt%st%sn,studentfound.Sname,studentfound.Sex, studentfound.Sno,studentfound.Age,studentfound.CInfo.Cno,studentfound.CInfo.Cname); if(found0) printf(n 没有找到该班号的记录!n); printf(n 请按 enter 键返回上级菜单!n); getchar(); getchar(); find(); void browse() int num; int i; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); main(); for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s, fclose(fp); num=i; printf(n 已添加%d 个学生信息nn,num); printf(姓名 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) printf(%st%st%st%dt%s%sn,studenti.Sname,studenti.Sex,studenti.Sno,studenti.Age,st udenti.CInfo.Cno,studenti.CInfo.Cname); printf(n 请按 enter 键返回主菜单!n); getchar(); getchar(); main(); 第 21 页 共 26 页 5.25.2 进制转换算法设计进制转换算法设计 / 进制转换.cpp : Defines the entry point for the console application. / #include stdio.h #include stdlib.h #include string.h void input(); void del(); void arrange(); void find(); void main() char c; int i; do system(cls); for(i=0;i80;i+) printf(*); printf(n); for(i=0;i34;i+) printf(*); printf(MENU); for(i=0;i0) printf(%d,b-a); if(i0) fprintf(fp,%d,b-n); fclose(fp); void del() /十进制转换为十六进制/ 第 23 页 共 26 页 FILE*fp; int i=0,j,n; int b8; char a16; fp=fopen(十变十六.out,w); system(cls); printf(输入十进制数:n); scanf(%d, while(n) bi=n%16; n/=16; i+; printf(十六进制数为:n); for(j=0;j9) bj=bj+55;aj=bj; else aj=bj+48; for(j=i-1;j=0;j-) printf(%c,aj); getchar(); for(j=i-1;j=0;j-) fprintf(fp,%c,aj); fclose(fp); void find() /二进制转换为十进制/ FILE*fp; int i,t,n,sum=0; char s50; fp=fopen(二变十.out,w); system(cls); printf(输入二进制数:n); gets(s); n=strlen(s); for(i=0;in;i+) 第 24 页 共 26 页 t=si-0; sum=sum*2+t; printf(十进制数为:n%d,sum); fprintf(fp,该二进制转换的十进制为%d,sum); getchar(); fclose(fp); void arrange() /十六进制转换为十进制/ FILE *fp; int i,t,n,sum=0; char s50; fp=fopen(十六变十.out,w); system(cls); printf(输入十六进制数:n); scanf(%s,s); n=strlen(s); for(i=0;in;i+) if(si=9) t=si-0; else t=si-a+10; sum=sum*16+t; printf(十进制数为:n%d,sum); fprintf(fp,该十六进制转换的十进制为%d,sum); getchar(); fclose(fp); 6 6 心得体会心得体会 本次 C 语言课程设计非常有意义,它锻炼了我们解决实际问题的能力。由 于本人对编程感兴趣,在编程方面有一定基础,因此尝试着由自己完成整个系 统,在设计的过程里也遇到了很多麻烦,但是通过查询参考书和网络,一个个 疑难迎刃而解。通过这次实践课,不只是强化了我们 C 语言编程的能力,更重 要的是使我们学会了一种工作方法,学会了如何规划、组织、设计、实施项目, 从整体到局部,从局部又到整体。此外,在设计流程图和编制报告的过程里也 学了不少东西,学会了制作流程图,学会了组织报告等等。 第 25 页 共 26 页 7 7 实习日志实习日志 2011 年 6 月 13 日: 今天开始 C 程序课程设计,看到题目是关于函数调用的:学生证管理程序。 开始很茫然不知如何下手,经过老师一番讲解,我似乎有了些眉目,把大概结 构用 VC+编了一下。 2011 年 6 月 14 日: 今天编录了添加模块,有一些错误,网上找了一下,找到类似的,修改了 一下,具体如下:首先要判断文件 StuInfo.txt 是否存在,如果存在就以读写 (r+)的方式打开,如果不存在,就以写(w)的方式创建文件 StuInfo.txt。 输入格式要求:性别为男或女,学号为 11 位且不能重复,年龄在 0-100 之间, 班级号为 6 位,程序提供了完善的验证机制,输入错误时将提示重新输入直到 正确为止。此外,如果以读写的方式打开,还要判断记录数 numN 是否成立, 因为结构体数组的大小为 N,当 num=N 时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版电商平台销售欠款还款协议
- 二零二五年度二建实务招标合同管理要点及实施细则合同
- 二零二五年度文化产业干股分红及知识产权共享协议书
- 2025版股权债权转让协议书:跨境投资版
- 二零二五年度建筑粉刷合同(含外墙保温、隔热)
- 2025房地产企业绿色建筑项目劳动合同书
- 2025版新能源车辆租赁合作合同
- 二零二五年度商用车辆入股合作合同范本
- 2025版排洪系统防渗漏处理施工合同
- 2025版家庭财产分割与离婚后共同财产分割及子女教育金协议
- 经皮肾术后护理试题及答案
- DB51T2681-2020 预拌混凝土搅拌站废水废浆回收利用技术规程
- 海上风力发电项目可行性研究报告
- 2025共同担保合同模板
- 大疆无人机在农业领域的创新应用
- 2024年内科护理学(第七版)期末考试复习题库(含答案)
- DG-TJ08-2170-2015 城市轨道交通结构监护测量规范
- 2025过敏性休克抢救指南
- 2025年度签约主播与短视频平台合作协议
- 数据管理知识培训课件
- 设备润滑知识培训课件
评论
0/150
提交评论