版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《高级语言程序设计》课程设计报告书题目:班级档案管理系统专业:计算机科学和技术学号:学生姓名:指导老师:完成日期:目录一、设计内容和设计要求 11.设计内容 12.设计要求 1二、程序设计目标 2三、程序模块分析 21.系统控制步骤图 22.部分关键函数算法步骤图 3四、函数功效说明 61.函数说明 62.用户说明 6五、程序测试 7六、总结 14附录 15一、设计内容和设计要求1.设计内容对一个有N个学生班级,经过该系统实现对该班级学生基础信息进行录入、显示、修改、删除、保留等操作管理。2.设计要求(1)本系统采取一个包含N个数据结构体数组,每个学生数据应该包含:学号、姓名、性别、年纪、备注。(2)本系统显示这么菜单:请选择系统功效项:a从文件中读入学生基础信息b添加新学生基础信息c学生基础信息显示d学生基础信息保留至文件e学生基础信息删除f学生基础信息修改(要求先输入修改密码)g学生基础信息查询(1)按学号查询(2)按姓名查询(3)按性别查询(4)按年纪查询h退出系统(3)实施一个具体功效以后,程序将重新显示菜单。(4)将学生基础信息保留到文件中。(5)进入系统之前要先输入登录密码。说明:登录密码和修改密码使用文件保留。二、课程设计目标在平时学习C语言过程中,通常只是在课堂上跟随老师讲解来进行学习,所以在练习上较为缺乏,而课程设计恰恰填补了这点,它不仅是对平时学习一个检测,同时在做它过程中也对自己学习知识进行了巩固和提升,为以后学习和工作打下了基础。三、程序模块分析1.系统控制步骤图结束添加学生信息功效保留信息功效退出功效信息查询功效信息修改功效信息删除功效读取学生信息功效开始密码函数结束添加学生信息功效保留信息功效退出功效信息查询功效信息修改功效信息删除功效读取学生信息功效开始密码函数2.部分关键函数算法步骤图开始开始开始开始输入添加学生数打开文件输入添加学生数打开文件for循环Ffor循环For循环输出添加学生信息调用输出添加学生信息调用fscanf函数从文件读取信息结束结束结束结束图4.1:read函数图4.2:input函数开始开始开始开始输入学号密码错误打开文件输入学号密码错误打开文件for循环调用strcmp函数密码函数for循环调用strcmp函数密码函数查找失败查找失败输入学号for循环调用fprintf函数输入学号for循环调用fprintf函数输出信息输出信息输入新信息结束输入新信息结束结束结束图4.3:Delete函数图4.4:modi函数开始开始调用fscanf函数调用fscanf函数按性别查询按年纪查询按姓名查询按学号查询按性别查询按年纪查询按姓名查询按学号查询图4.5:search函数输出信息否是结束for循环调用strcmp函数该学生是否存在
图4.5:search函数输出信息否是结束for循环调用strcmp函数该学生是否存在四、函数功效说明1.函数说明main()函数是程序入口有调取各个模块作用,里面包含一个switch语句,实现选择功效;read():读取函数,从文件中读取学生信息;input():添加函数,学生基础信息录入;save():学生信息保留函数;Delete():删除函数;search():查找函数;modi():信息修改函数;secretcode():密码验证函数;2.用户说明输入密码进入系统后,经过a~g选项来进行功效选择。选项a:调用read函数,将在文件中保留学生信息读入结构体数组中,然后在屏幕上显示出来,按enter键便重新返回菜单;选项b:调用input函数,输入需要添加学生人数,显示出需要添加信息,将信息填写完成后,按enter键重新返回菜单,再经过选项c将新添加学生信息保留到文件中;选项c:调用save函数将新输入或修改后学生信息保留到文件中,在input函数和modi函数调用以后需要调用此函数,然后按enter键重新返回菜单;选项d:经过调用delete函数,输入需要删除学生学号,按enter键提醒删除成功,该学生信息已被从文件中删除,并重新返回菜单;选项e:在调用该函数实现学生信息修改功效时,需要输入修改密码,当密码错误时,提醒密码错误,此时重新输入密码。密码正确以后,输入需要修改信息学生学号,输出该学生信息,确定后输入新学生信息,按enter键重新返回菜单,此时需要经过选项c将信息保留到文件中;选项f:经过调用search函数,在选择该项后,会出现一个子菜单,根据需求能够分别经过学号、姓名、性别和年纪来查询学生信息,按enter键显示查询信息并重新返回菜单。五、程序测试输入登陆密码123456进入系统图5.1输入a从文件中读入学生信息图5.2输入b添加学生基础信息图5.3图5.4输入c将信息保留至文件图5.5输入d删除学生信息图5.6信息删除成功图5.7再次从文件输入信息时需要删除信息已被删除图5.8输入e进行学生信息修改图5.9图5.10输入c将信息保留到文件中图5.11输入f学生信息查询图5.12图5.13六、总结这次课程设计给了我很大体会,我能独立完成这项任务,是对平时学习和练习一个肯定,同时也提升了自己信心。在完成它过程中当然会碰到很多困难,首先是结构体定义问题,因为刚开始对程序不熟悉,在定义结构体内元素数组时出现了错误,以后经过一次次检测将数组定义到了一个适宜大小。其次在input函数中,输入完新学生信息保留至文件中时,对文件原有信息进行了覆盖,所以为了避免这种情况,将for循环中i从N-n开始,经过测试这种方法是有效。最终是删除函数,因为开始定义年纪是整型变量,在对文件中结构体数据进行删除时,在年纪位置会出现数字0,从而使从文件中读取数据时出现乱码,于是便将年纪定义成字符型数组,利用strcpy函数将结构体数组下一位元素将前一位元素进行覆盖,从而实现删除功效。即使较为成功完成了课程设计,但因为知识和时间不足,系统仍然存在缺点,我认为此系统还能经过链表来进行优化,链表好处是能够经过指针愈加好实现查找、修改和删除功效,所以假如有时间便会经过链表来时、使这个系统愈加含有实用性。附录源程序清单#include"stdafx.h"#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#defineN4structstudent//定义一个包含学生信息结构体数组{ charno[10];//学号 charname[8];//姓名 charsex[5];//性别 charage[5];//年纪 charnote[5];//备注};structstudentstu[N];//定义全局变量voidmenu()//菜单函数{ printf("\n"); printf("****************\n"); printf("**\n"); printf("*a.从文件中读入学生基础信息*\n"); printf("*b.添加新学生基础信息*\n"); printf("*c.学生基础信息保留至文件*\n"); printf("*d.学生基础信息删除*\n"); printf("*e.学生基础信息修改*\n"); printf("*f.学生基础信息查询*\n"); printf("*g.退出系统*\n"); printf("**\n"); printf("****************\n"); printf("\n");printf("请输入选项:(a~g)\n");}voidinput()//学生基础信息录入{ inti; intn; printf("请输入添加学生数:"); scanf("%d",&n); for(i=N-n;i<N;i++) {printf("请输入学生基础信息:\n"); printf("no:\n");scanf("%s",stu[i].no); printf("name:\n"); scanf("%s",stu[i].name); printf("sex:\n"); scanf("%s",stu[i].sex); printf("age:\n"); scanf("%s",stu[i].age); printf("note:\n"); scanf("%s",stu[i].note); } printf("\n"); printf("请检验信息是否输入正确!\n"); printf("\n"); for(i=N-n;i<N;i++) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }}voidsave()//学生信息保留{FILE*fp; inti;fp=fopen("e:\\student.txt","w"); if(fp==NULL) { printf("文件不存在!\n"); exit(0); } for(i=0;i<N;i++)//在此处判定姓名所占长度调整学生信息存入文件中格式 { if(strlen(stu[i].name)==4){ fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } } fclose(fp);fflush(fp); printf("保留成功!\n");}voidDelete()//删除函数;{FILE*fp;fp=fopen("e:\\student.txt","w");charnumber[10];intf;boolflag=false;printf("删除学生信息:\n");printf("请输入学号:\n");scanf("%s",number);for(inti=0;i<N;i++){if(!strcmp(number,stu[i].no)){ for(f=i;f<N;f++)//调用strcpy函数令数组中下一位元素将上一位覆盖从而实现删除功效 { strcpy(stu[f].name,stu[f+1].name); strcpy(stu[f].note,stu[f+1].note); strcpy(stu[f].no,stu[f+1].no); strcpy(stu[f].sex,stu[f+1].sex); strcpy(stu[f].age,stu[f+1].age); } flag=true;}}if(!flag) { printf("该学生不存在!:\n"); Delete(); }for(i=0;i<N;i++){fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);}printf("删除成功!\n");fclose(fp);}voidsearch()//查找函数{ intf; FILE*fp; fp=fopen("e:\\student.txt","rb");for(f=0;f<N;f++) { fscanf(fp,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); } boolflag=false;//定义一个bool类型进行判定intm; inti; printf("1按学号查询\n"); printf("2按姓名查询\n"); printf("3按性别查询\n"); printf("4按年纪查询\n"); printf("请输入选项:"); printf("\n"); scanf("%d",&m); switch(m) { case1: charnum[10]; printf("请输入学号:\n"); scanf("%s",num); for(i=0;i<N;i++) { if(!strcmp(num,stu[i].no)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } if(strlen(stu[i].name)==6) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("该学生不存在.\n"); } break; case2: printf("请输入姓名:\n"); charna[10];//定义一个姓名数组 scanf("%s",na); for(i=0;i<N;i++) { if(!strcmp(na,stu[i].name)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("该学生不存在.\n"); } break; case3: charch[5]; printf("请输入性别:\n"); scanf("%s",ch); for(i=0;i<N;i++) { if(!strcmp(ch,stu[i].sex)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("t该学生不存在.\n"); } break; case4: charnum_age[5]; printf("请输入年纪:\n"); scanf("%s",&num_age); for(i=0;i<N;i++) { if(!strcmp(num_age,stu[i].age)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("该学生不存在.\n"); } break; default: break; } }voidmodi()//信息修改函数{ FILE*fp;//定义修改密码文件指针 FILE*fp1;//定义学生信息文件指针 chara[7]; charb[7]; charc[10]; charch; inti=0; intf; booltemp=false;fp1=fopen("e:\\student.txt","r");for(f=0;f<N;f++)//从文件中将信息读到结构体中 { fscanf(fp1,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); } fclose(fp1); printf("请输入修改密码:\n"); scanf("%s",b); if((fp=fopen("e:\\1.txt","r"))==NULL) { printf("打开文件夹失败!"); exit(0); } ch=fgetc(fp); while(ch!=EOF&&i<6) { a[i]=ch; ch=fgetc(fp); i++; } a[6]='\0'; fclose(fp);while(1) { if(!strcmp(a,b)) { break; } else { printf("密码错误!请重新输入密码:\n"); scanf("%s",b); } } printf("请输入需要修改信息学生学号:\n"); scanf("%s",c);for(f=0;f<N;f++) {if(!strcmp(c,stu[f].no)) { printf("%s%s%s%s%s\n",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); printf("\n"); printf("请输入新信息:\n");printf("no:\n"); scanf("%s",stu[f].no); printf("name:\n"); scanf("%s",stu[f].name); printf("sex:\n"); scanf("%s",stu[f].sex); printf("age:\n"); scanf("%s",stu[f].age); printf("note:\n"); scanf("%s",stu[f].note); temp=true; break; } } if(!temp) { printf("该学生不存在!\n"); }}intsecretcode(charb[6])//密码验证函数{ FILE*fp; charc[7]; inti=0; charch; if((fp=fopen("e:\\2.txt","r"))==NULL) { printf("打开文件失败!\n"); exit(0); } ch=fgetc(fp); while(ch!=EOF&&i<6) { c[i]=ch; ch=fgetc(fp); i++; } c[6]='\0'; if(!strcmp(b,c))//判定字符串b和c是否相等,是返回值0,否返回值1 { return0; } else { return1; } fclose(fp);}voidread()//从文件中读取学生信息{ inti; FILE*fp; fp=fopen("e:\\student.txt","r");for(i=0;i<N;i++) { fscanf(fp,"%s%s%s%s%s",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); if(strlen(stu[i].name)==4){ printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } } printf("\n"); p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年68083号锅炉安装工程专项施工合同版
- 2024年专业消防设施安装工程承包协议版B版
- 2024年幕墙项目劳务分包标准协议样式版B版
- 2024年国际邮政服务协议
- 2024年定制家具购销协议精简版版B版
- 2024年住宅小区绿化带围挡工程承包协议
- 2024年度丙丁双方关于影视作品改编权转让合同3篇
- 2024年工业用水净化设备维修服务协议
- 2024年专业吊车租赁服务协议模板版B版
- 2024年一次性解决离婚纠纷合同样本版
- 五年级数学(小数乘法)计算题专项练习及答案
- 声带麻痹治疗及护理
- 【初中地理】丰富多彩的世界文化-2024-2025学年七年级地理上册同步课件(湘教版2024)
- 小学合唱团活动评估与改进方案
- 2024二十届三中全会知识竞赛题库及答案
- 成人重症患者人工气道湿化护理专家共识 解读
- 商业伦理与企业社会责任(山东财经大学)智慧树知到期末考试答案章节答案2024年山东财经大学
- 《色彩基础知识》PPT课件(详解)
- 滚柱式单向超越离合器的尺寸系列
- 公司财务管理制度(最新完整版)
- 社会调查关于延安红色旅游调查报告
评论
0/150
提交评论