




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 C语言课程设计 题 目 学生成绩管理系统设计 分 院 电信分院 专业班级 11电气4班 学号 20110210470401 学生姓名 蒋芬 指导教师 徐亦丹 2012 年 6 月 18 日 华东交通大学理工学院课程设计报告目录第1章 程序设计目的.?第2章 程序实现思路.?第3章 程序清单(或正文).?第4章 课程设计心得.?第5章 参考文献.致谢第1章 程序设计目的1.编写目的:本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C+系统编程有一个大致的了解。2.需求简述:设计一个学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、学生信息录入功能(学生信息用文件保存)输入3、学生信息浏览功能输出4、学生信息查询功能算法按学号查询按姓名查询5、学生信息的删除与修改(可选项)。第2章程序实现思路(学生自己拟定)设计以菜单方式工作的学生信息管理系统,主要有学信息排序功能,学生生信息输入功能,学生信息查询功能三个模块。本设计的基本操作是通过构造结构来实现的。是通过结构体类数组存放25个学生基本信息。在通过函数调用实现各子函数的功能,如:调用冒泡法排序子函数实现成绩排序。第3章程序清单或正文(学生自己拟定)(二)、功能图解概要设计学生信息管理系统由用户登陆、学生信息管理系统菜单、学生信息录入、查询、学生基本信息修改和删除这几个功能模块组成,其结构如图1-1:(二)、编程设计#include #include #include struct studyInfochar num20; /预留20位 char name20; int sex; /1为男生;2为女生int age; char hometown20;char department20;char major20;char classNum10;char changes10; /学籍变动(学籍状态);void main()void checkDate();while (1)int showMsg(int msgCode); /文字输出总函数int actionSelect(int actCode); /动作控制函数int *getInput=malloc(sizeof(int);*getInput=NULL;if(!(showMsg(1)free(getInput);showMsg(88);exit(0);checkDate();printf(请选择(序号):);scanf(%d,getInput);actionSelect(*getInput);free(getInput);system(cls);void checkDate()FILE *fp;char *head=malloc(1);if (fp=fopen(dat.db,rb)/不为NULL(0),文件打开成功int i;fseek(fp,0,0);for(i=0;i+)if(!(fread(head,1,1,fp)printf(目前的数据记录共有%d条.n,i);break;fseek(fp,sizeof(struct studyInfo)-1,1);fclose(fp);free(head);elsefp=fopen(dat.db,wb);fclose(fp);printf(初次使用,数据文件已建立.目前的数据记录共有0条.n);int showMsg(int msgCode)switch(msgCode) case 1: printf( 欢迎使用学生学籍管理系统n-n1.注册登记 2.学籍修改 3.检索学籍n4.删除学籍 5.籍贯表格 6.学籍变化(查询)nt 0.退出系统n-n*作者:蒋芬*n-n); return 1;case 2: printf(感谢使用!n); return 1;case 88: printf(sorry,程序出错O_O 。n); return 1;default: return 0;int actionSelect(int actCode)int showMsg(int msgCode);int addInfo();int changeOne();int pickOut();int delOne();int findChange();system(cls);switch(actCode)case 0: showMsg(2); exit(0);case 1: addInfo();break;case 2: changeOne();break;case 3: pickOut();break;case 4: delOne();break;case 5: showAll();break;case 6: findChange();break;default: return 0;int addInfo()FILE *fp;int i=1; /连续输入的次数int state=0;int isIn(char *num);int addRecord(struct studyInfo *addOne);void checkDate();while (i)struct studyInfo stuinfo=stuinfo.age=0; /使系统自动初始化结构体变量system(cls);switch (state)case 0: i+=1;break;case 1: printf(记录写入成功!继续录入nn);i=i-1;break;case 2: printf(记录写入失败,请重新录入!nn);break;case 3: printf(记录已存在,请重新录入!nn);break;default:break;checkDate();if(i=1)printf(请输入录入数目(输入0结束录入):);scanf(%d,&i);continue;printf(请按以下格式录入信息:n性别为1(代表男)或2(代表女);n学籍变化为:入学,转专业,退学,降级,休学,毕业n如录入结束,请在学号位输end并完成该行nnn学号 姓名 性别 年龄 籍贯 系别 专业 班级 学籍变化n);scanf(%s %s %d %d %s %s %s %s %s,&stuinfo.num,&,&stuinfo.sex,&stuinfo.age,&stuinfo.hometown,&stuinfo.department,&stuinfo.major,&stuinfo.classNum,&stuinfo.changes);if(isIn(stuinfo.num) /检验是否已存在在数据库中state=3;continue;elseif(addRecord(&stuinfo)state=1;continue;int isIn(char *num)int found=1;FILE *fp;char *tmp=malloc(20*sizeof(char);int i;fp=fopen(dat.db,rb);fseek(fp,0,0);for(i=1;i+)if(!(fread(tmp,20,1,fp)found=0;break;if(!(strcmp(tmp,num)found=1;break;fseek(fp,sizeof(struct studyInfo)-20,1);fclose(fp);free(tmp);return found;int addRecord(struct studyInfo *addOne)FILE *fp;fp=fopen(dat.db,ab);fwrite(addOne,sizeof(struct studyInfo),1,fp);fclose(fp);return 1;int pickOut()void checkDate();int showInfo(char *strTmp); char *strTmp=malloc(20*sizeof(char); /保存用户输入结果的。while (1)printf(%12sn,检索学籍);checkDate();printf(请输入学号进行检索(输入end返回主菜单):);scanf(%s,strTmp);if (!(strcmp(end,strTmp) break;showInfo(strTmp);system(cls);free(strTmp);int showInfo(char *strTmp) int i;FILE *fp; char *tmp=malloc(20*sizeof(char);int result;struct studyInfo stuinfo=stuinfo.age=0; /使系统自动初始化结构体变量fp=fopen(dat.db,rb);fseek(fp,0,0);for(i=1;i+)if(!(fread(tmp,20,1,fp)/state=1;printf(未找到n);system(pause);result=-1;break;if(!(strcmp(tmp,strTmp)/state=2;fseek(fp,-20,1);fread(&stuinfo,sizeof(struct studyInfo),1,fp);printf(学号 姓名 性别 年龄 籍贯 系别 专业 班级 学籍变化n%-14s%-7s%-5d%-5d%-8s%-9s%-10s%-9s%sn,stuinfo.num,,stuinfo.sex,stuinfo.age,stuinfo.hometown,stuinfo.department,stuinfo.major,stuinfo.classNum,stuinfo.changes);system(pause);result=(int)ftell(fp)-sizeof(struct studyInfo);break;fseek(fp,sizeof(struct studyInfo)-20,1);fclose(fp);free(tmp);return result; int delOne()void checkDate();int showInfo(char *strTmp);int pos;char *tmp=malloc(20*sizeof(char);struct studyInfo stuinfo=stuinfo.age=0;while(1)system(cls);checkDate();printf(请输入需要删除的学籍的学号( 输入end返回主菜单):);scanf(%s,tmp);if (!(strcmp(end,tmp) break;if(pos=showInfo(tmp)!=-1)printf(确认删除?(y/n):);scanf(%s,tmp);if (!(strcmp(y,tmp)FILE *fp1;FILE *fp2;fp1=fopen(dat.db,rb);fp2=fopen(dat1.db,wb);while (1)if(pos=(int)ftell(fp1)fread(&stuinfo,sizeof(struct studyInfo),1,fp1);if(!(fread(&stuinfo,sizeof(struct studyInfo),1,fp1)break;fwrite(&stuinfo,sizeof(struct studyInfo),1,fp2);fclose(fp1);fclose(fp2);remove(dat.db);rename(dat1.db,dat.db);printf(记录删除成功!n);system(pause); elsecontinue;elseprintf(记录不存在!n);system(pause);continue;free(tmp);return 1;int showAll()FILE *fp;struct studyInfo *p=malloc(sizeof(struct studyInfo);int i;printf(%33sn,籍贯表格);printf(学号 专业 性别 年龄 籍贯 系别 姓名 班级 学籍变化n);fp=fopen(dat.db,rb);fseek(fp,0,1);for(i=1;i+)if(!(fread(p,sizeof(struct studyInfo),1,fp)break;printf(%-14s%-7s%-5d%-5d%-8s%-9s%-10s%-9s%sn,p-num,p-major,p-sex,p-age,p-hometown,p-department,p-name,p-classNum,p-changes);fclose(fp);system(pause);int findChange()void checkDate();int showChange(char *strTmp); char *strTmp=malloc(20*sizeof(char); /保存用户输入结果的。while (1)printf(%22sn,学籍变化查询);checkDate();printf(请输入学号进行检索(输入end返回主菜单):);scanf(%s,strTmp);if (!(strcmp(end,strTmp) break;showChange(strTmp);system(cls);free(strTmp);int showChange(char *strTmp) int i;FILE *fp; char *tmp=malloc(20*sizeof(char);int result;struct studyInfo stuinfo=stuinfo.age=0; /使系统自动初始化结构体变量fp=fopen(dat.db,rb);fseek(fp,0,0);for(i=1;i+)if(!(fread(tmp,20,1,fp)/state=1;printf(未找到n);system(pause);result=-1;break;if(!(strcmp(tmp,strTmp)/state=2;fseek(fp,-20,1);fread(&stuinfo,sizeof(struct studyInfo),1,fp);printf(nn学号 姓名 学籍变化n%-14s%-7s%sn,stuinfo.num,,stuinfo.changes);system(pause);result=(int)ftell(fp)-sizeof(struct studyInfo);break;fseek(fp,sizeof(struct studyInfo)-20,1);fclose(fp);free(tmp);return result;int changeOne()void checkDate();int showInfo(char *strTmp);int pos;char *tmp=malloc(20*sizeof(char);char *typeIn=malloc(20*sizeof(char);struct studyInfo stuinf=stuinf.age=0;struct studyInfo stuinfo=stuinfo.age=0;while(1)system(cls);checkDate();printf(请输入需要修改的学籍的学号( 输入end返回主菜单):);scanf(%s,tmp);if (!(strcmp(end,tmp) break;if(pos=showInfo(tmp)!=-1)printf(确认修改?(y/n):);scanf(%s,typeIn);if (!(strcmp(y,typeIn)FILE *fp1;FILE *fp2;strcpy(&stuinf.num,tmp);printf(请输入以下信息nn性别为1(代表男)或2(代表女);n学籍变化为:入学,转专业,退学,降级,休学,毕业nnn姓名 性别(1或2) 年龄 籍贯 系别 专业 班级 学籍变化n);scanf(%s %d %d %s %s %s %s %s,&,&stuinf.sex,&stuinf.age,&stuinf.hometown,&stuinf.department,&stuinf.major,&stuinf.classNum,&stuinf.changes);fp1=fopen(dat.db,rb);fp2=fopen(dat1.db,wb);while (1)if(pos=(int)ftell(fp1)fread(&stuinfo,sizeof(struct studyInfo),1,fp1);fwrite(&stuinf,sizeof(struct studyInfo),1,fp2);if(!(fread(&stuinfo,sizeof(struct studyInfo),1,fp1)break;f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教育心理咨询师国家认证考核试题及答案解析
- 课件中插入网格的方法
- 2025年广告公司经理专业素质评估试题及答案解析
- 2025年公共关系策划师职业技能检测试题及答案解析
- 2025年服装潮流设计师职业水平评估试题及答案解析
- 2025年房地产投资顾问专业知识评估考试试题及答案解析
- 2025年本科实验员招聘面试模拟题生物解析及答案
- 2025年职业健康安全面试题解析
- 2025年安全生产培训实操考试题集
- 2025年政府会计准则气象事业单位考题及答案集
- 有害物质过程管理系统HSPM培训教材
- 2025年蛇年年会汇报年终总结大会模板
- 存款代持协议书范文模板
- DB3301T 0374-2022 疗休养基地评价规范
- 胖东来企业文化指导手册
- 北师大版八年级物理(上册)期末复习题及答案
- 【历年真题合集+答案解析】2024年教资高中历史
- 委托别人找工作的协议
- 医技三基三严知识模拟习题含参考答案
- Y -S-T 732-2023 一般工业用铝及铝合金挤压型材截面图册 (正式版)
- 不定代词专项练习(附详解)
评论
0/150
提交评论