




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生证管理系统课程设计报告C语言课程设计实验报告课程设计题目:学生证管理系统姓 名: 学 号: 班 级: 专 业: 指导教师: 2014年 1 月 2 日学生证管理系统课程设计报告1.需求分析。根据学生证管理的需要,建一个“学生证管理系统”,以方便对学生证信息的各项管理操作。要求完成:1.能对学生证信息进行录入和修改2.能按照学号和班级号显示学生证信息和更改、删除信息。2.总体设计。 根据以上分析,本系统主要包括:从键盘输入学生证信息、从指定的文件中读入学生证信息、按照学号和班号查询学生证信息、删除和修改学生证信息。(1) 主函数main():定义学生结构体数组,输出操作对话框,调用录入、查询、删除、输出等函数对学生证信息进行处理。(2) 录入函数enter():从键盘输入学生证信息。(3) 录入函数load():从文件输入学生证信息。(4) 查询函数search():按学号查找记录信息。(5) 查询函数display():按班级查找记录信息。(6) 删除函数del():删除指定学号的学生记录。(7) 修改函数modify():按照指定学号修改记录。学生证管理系统程序功能机构图如下:学号查询班级查询键盘输入文件输入修改记录删除记录3.详细设计。本功能一共有16个函数,其中一个主函数,15个功能模块,每个功能模块都是由于主函数或其他功能模块调用,分别说明如下:1.主函数main()。输入操作s输入菜单开始键盘输入文件输入删除记录修改记录班级查询学号查询继续操作否结束YN图1.2 主程序流程图(2)键盘输入函数。键盘输入函数主要完成学生信息从屏幕输入数据,并将数据保存到文本文件中,以备后用。开始流程图:输入学生信息是否继续结束YN(3)文件输入函数。文件输入函数主要完成学生信息从文件中读入数据。开始打开文件结束关闭文件是否继续读入学生证信息YN图1.4文件输入流程图(4)学号查询函数。学号查询函数是完成由用户输入需要查询的学号,在现有学生信息中查询是否有此学生信息存在,查到输出学生全部信息,没查到则输出“此学生部存在”信息。流程图如下:开始打开文件读入学生证信息输入查到学生信息结束关闭文件输出学生不存在信息查到否输入查询学号YN图1.5 学号查询流程图(5)班级查询函数。输出查到学生信息结束关闭文件输出此班级学生不存在信息查到否?输入查询班号读入学生信息打开文件开始班级查询函数是完成由用户输入需要查询的班级,在现有学生信息中查询此班级的全部学生信息,查到输出全部信息,没差到则输出“此班级学生不存在”信息。YN(6)学号删除函数。学号删除函数是完成由用户输入需要删除的学号,在现有学生信息中查询是否有该学生信息存在,查到则删除此学生全部信息,没查到则输出“此学生不存在”信息。 程序流程图如下:开始打开文件读入学生信息输入删除学号找到否?输入此学生不存在信息关闭文件结束删除此学生信息YN(7)修改函数。修改函数主要是完成根据学号查找到学生信息,输出学生信息,然后修改学生信息。修改此学生信息结束关闭文件输出此学生不存在信息找到否?输入修改学号读入学生学号打开文件开始程序流程如下:YN图1.7 学号修改流程图4测试结果。(1)程序运行主菜单 1.9 主菜单界面(2)从文件输入并显示结果(3)按学号查找。(4)修改测试。(5)按班号浏览。(6) 统计班级的人数。(7)删除功能测试。5.软件操作使用说明书。本软件采用命令行对话方式进行操作,运行后出现主界面如图1.9所示,然后按菜单提示操作即可。6.总结。通过本次课程设计练习,我们学会了科学分析问题解决问题的方法,从问题分析下手,然后进行模块设计,详细设计,再进行代码编写和测试。在调试程序过程中,学会了分模块进行,避免了以前那种将程序全部功能都放在main()函数中完成的弊病,使得调试过程更加顺利。另外通过本次练习,在前面学习过程中碰到的诸如结构体使用.指针使用.函数之间参数传递等难点问题也迎刃而解了。源代码:/student.h#include /I/O函数 #include /标准库函数#include /字符串函数#include /字符操作函数#define M 50/定义常数表示记录数typedef struct/定义数据结构 char no20;/学号char name20;/姓名char sex5;/性别char classes20;/班号char subject20;/学院专业STUDENTS;/以下是函数原型#includestufun.h/student.cpp/菜单函数,函数返回值为整数,代表所选的菜单项 .int menu_select() char s80; int c;printf(*主菜单*n); printf(* 0. 输入学生证信息记录*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); printf(* 10.程序退出*n); printf(*n); do printf(n 输入您的菜单选项编号(0-10):); /提示输入选项 scanf(%s,s);/输入选择项 c=atoi(s);/将输入的字符串转化为整型数getchar();while(c10);/选择项不在010之间重输 return c;/返回选择项,主程序根据该数调用相应的函数 /输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度 .int enter(STUDENTS t) int i,n; system(cls);printf(n请输入学生记录条数:n); scanf(%d,&n);/输入记录数 printf(请输入学生记录:n); printf(学号 姓名 性别 班号 学院专业n); printf(-n); for (i=0;in;i+) scanf(%s,ti.no);/输入学号scanf(%s,);/输入姓名scanf(%s,ti.sex);/输入性别scanf(%s,ti.classes);/输入班号scanf(%s,ti.subject);/学院专业 getchar();return n;/返回记录条数 /显示记录,参数为记录数组和记录条数 .void list(STUDENTS t,int n) int i; system(cls);printf(n*学生清单*n); printf(学号 姓名 性别 班号 学院专业n);printf(-n); for(i=0;i0)/判断输出是否达到10条记录printf(-n); printf(每页显示10条学生记录,按回车键向后翻页.n); getchar(); system(cls);printf(n*学生清单*n); printf(学号 姓名 性别 班号 学院专业n); printf(-n); printf(-n); /查找记录 .void search(STUDENTS t,int n) char s20;/保存待查找学号字符串 int i;/保存查找到结点的序号 system(cls);printf(请输入查找的学号:n); scanf(%s,s);/输入待查找学号 getchar();i=find_no(t,n,s);/调用find_no函数,得到一个整数 if(in-1)/如果整数i值大于n-1,说明没找到printf(没有学号为%s的学生!n,s); else print(ti);/找到,调用显示函数显示记录 /删除函数,参数为记录数组和记录条数 .int del(STUDENTS t,int n) char s20;/要删除记录的学号 int ch=0; int i; printf(请输入要删除的学生学号:n); scanf(%s,s);/输入学号getchar();i=find_no(t,n,s);/调用find_no函数 if(i=n)printf(没有找到学号为%s的学生!n,s);elseprintf(正在删除中!n);for(;i0)printf(请输入插入位置的姓名,将新记录插入在该名字前:n); scanf(%s,s);/输入插入位置的姓名 getchar();i=find_name(t,n,s);/调用find_name,确定插入位置 elsei=0;for(j=n-1;j=i;j-)/从最后一个结点开始向后移动一条 strcpy(tj+1.no,tj.no); /当前记录的学号拷贝到后一条 strcpy(tj+1.name,); /当前记录的姓名拷贝到后一条 strcpy(tj+1.sex,tj.sex); /当前记录的性别拷贝到后一条strcpy(tj+1.classes,tj.classes); /当前记录的班号拷贝到后一条strcpy(tj+1.subject,tj.subject); /当前记录的学院专业拷贝到后一条 strcpy(ti.no,temp.no); /将新插入记录的学号拷贝到第i个位置 strcpy(,); /将新插入记录的姓名拷贝到第i个位置 strcpy(ti.sex,temp.sex); /将新插入记录的性别拷贝到第i个位置strcpy(ti.classes,temp.classes);strcpy(ti.subject,temp.subject); /将新插入记录的年龄拷贝到第i个位置 n+; /记录数加1 return n; /返回记录数 /保存函数,参数为结构体数组和记录数 .void save(STUDENTS t,int n) int i; FILE *fp; /指向文件的指针 if(fp=fopen(record.txt,wb)=NULL)/打开文件,并判断打开是否正常 printf(无法打开学生记录文件!n);/打开失败 exit(1); /退出 printf(n正在保存中n); fprintf(fp,%d,n); /将记录数写入文件 fprintf(fp,rn); /将换行符号写入文件 for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s%-10s%-10s,ti.no,,ti.sex,ti.classes,ti.subject);/格式写入记录 fprintf(fp,rn);/将换行符号写入文件 fclose(fp);/关闭文件 printf(*保存成功*n);/显示保存成功 /读入函数,参数为结构体数组 .int load(STUDENTS t) int i,n; FILE *fp;/指向文件的指针 if(fp=fopen(record.txt,rb)=NULL)/打开文件 printf(无法打开学生记录文件!n);/打开失败 exit(1);/退出 fscanf(fp,%d,&n); /读入记录数 for(i=0;in-1)printf(没有班号为%d的班级n,s);else printf(n*学生清单*n); printf(学号 姓名 性别 班号 学院专业n); printf(-n-); for(i=0;in-1)printf(没有班号为%d的班级n,s);elseint j=0; for(i=0;in;i+)if(strcmp(s,ti.classes)=0)j+; printf(该班一共有%d人n,j); /显示指定的一条记录 void print(STUDENTS temp) printf(n*n); printf(学号 姓名 性别 班号 学院专业n);printf(-n); printf(%-20s%-20s%-10s%-10s%-10sn,temp.no,,temp.sex,temp.classes,temp.subject); printf(-n); /按姓名查找函数,参数为记录数组和记录条数以及姓名s .int find_name(STUDENTS t,int n,char *s) int i; for(i=0;in;i+) /记录开始,直到最后一条 if(strcmp(s,)=0) /记录中的姓名和待比较的姓名是否相等 return i; /相等,则返回该记录的下标号,程序提前结束 return i; /返回i值 /按班号查找函数,参数为记录数组和记录条数以及姓名s .int find_classes(STUDENTS t,int n,char *s) int i; for(i=0;in;i+) /记录开始,直到最后一条 if(strcmp(s,ti.classes)=0) /记录中的姓名和待比较的姓名是否相等 return i; /相等,则返回该记录的下标号,程序提前结束 return i; /返回i值 /按学号查找函数,参数为记录数组和记录条数以及学号no .int find_no(STUDENTS t,int n,char *no) int i; for(i=0;in;i+) /从第一条记录开始,直到最后一条 if(strcmp(no,ti.no)=0) /记录中的学号和待比较的学号是否相等 return i; /相等,则返回该记录的下标号,程序提前结束 return i; /返回i值 /修改函数,按照输入学号修改void modify(STUDENTS t,int n)char no20; /要修改记录的学号 int ch=0; int i; printf(请输入要修改的学生学号:n); scanf(%s,no);/输入学号 getchar();i=find_no(t,n,no); /调用find_no函数 if(i=n)printf(没有找到学号为%s的学生!n,no);elseprintf(学号为%s的学生修改前:n,no);print(ti);printf(请输入修改后学生记录:n); printf(学号 姓名 性别 班号 学院专业n); printf(-n); scanf(%s,ti.no);scanf(%s,);scanf(%s,ti.sex);scanf(%s,ti.classes);scanf(%s,ti.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节约光荣-浪费可耻课件
- 2025年财务会计职位面试模拟题和答案详解
- 2025年移动端APP产品设计考试题目集
- (2025年标准)股份经营杂志协议书
- 2025年汽车销售顾问招聘笔试预测试题与答案公布
- 初三上学期期末复习教学计划
- 2025年企业战略规划制定与执行面试模拟题集
- 2026届云南省楚雄州牟定一中化学高二第一学期期中监测模拟试题含解析
- 2025年人力资源领域招聘专家面试技巧与模拟题
- 医院手术技术管理审批流程
- 驾驶员服务外包合同范本
- 实际控制人证明书
- 如何提高现场管理能力ppt
- 从力的做功到平面向量数量积说课稿省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件
- 铝合金压铸控制计划模板
- 肿瘤和肾脏病
- 数字电路逻辑设计(第3版)PPT全套完整教学课件
- 工程竣工验收单(简易版)
- (3.1)-第6讲理解列车进路和调车进路
- SB/T 10967-2013红辣椒干流通规范
- GB/T 12755-1991建筑用压型钢板
评论
0/150
提交评论