c语言课设-学生信息管理系统.doc
《c语言课设-学生信息管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课设-学生信息管理系统.doc(39页珍藏版)》请在咨信网上搜索。
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:学生信息管理系统得设计与实现 院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期: 目 录 第1章 概要设计 1 1、1题目得内容与要求 1 1、2总体结构 1 第2章 详细设计 2 2、1主模块 2 2、2信息录入模块 4 2、3信息插入模块 6 2、4信息查询模块 7 2、5信息浏览模块 7 2、6信息删除模块 8 2、7信息修改模块 9 2、8学生人数统计模块 9 第3章 调试分析 10 第4章 使用说明与执行结果 14 参考文献 19 附 录(程序清单) 20 第1章 概要设计 1、1题目得内容与要求 课程设计得内容就是设计一个简单得单词替换程序,可以替换文本文件中指定得单词。 要求: (1)输入信息要包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。 (2)通过菜单进行信息得录入,查询,修改,删除等等功能。 (3)查询模块要分别用两种方式查询,学号查询,姓名查询。 (4)文件保存到文本中。 (5)采用VC环境进行调试运行。 1、2总体结构 本程序主要分为8个模块(功能模块图见图1、1): 1、主模块,主要显示系统菜单,并且读取所选功能选项。 2、信息录入模块,对学生信息进行录入。 3、信息插入模块,从所有数据中得任一位置插入学生得信息。 4、信息查询模块,对学生得信息进行查询,分两种方式:学号查询,姓名查询。 5、信息浏览模块,将所有学生得信息逐个显示出。 6、信息删除模块,将指定信息删除。 7、信息修改模块,修改指定信息。 8、学生人数统计模块,统计当前所存储得数据条数。 图1、1 功能模块图 第2章 详细设计 2、1主模块 控制整个程序得运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,主要应用循环与switch语句,流程如图2、1所示。 图2、1 主模块流程图 注释:本流程图主要实现了一个switch语句,合法数据域为0~7,输入0则退出,在流程图上没有0就是因为数值合法且数值不为1~7得时候即为0。 2、2学生信息录入模块(input函数) 输入要输入得学生信息,可以显示已保存得学生信息内容,并将内容输出,若内容为空,将提示就是否录入数据,直到选择不继续,就回到主菜单,主要流程如图2、2所示。 注释: 1. 学号为字符串 2. 直到输入不继续才会结束。 3. 结束为回主菜单,而不就是结束程序 图2、2 显示模块流程图 2、3信息插入模块 插入新信息,主要将信息插入任意处,其余信息依次下移一条。不能覆盖某一条信息,而就是顺序下移。主要流程如图2、3所示。 图2、3信息插入模块流程图 注释: 1、检测重复时会将所输入得学号跳过,对之前存在数据进行检测。 2、若没有数据,则会显示无数据并直接退回到主菜单。 2、4信息查询模块 本模块分为两种查询方式,实际上操作方式就是相同得,姓名与学号均为字符串形式,主要流程如图2、4所示。 图2、4 信息查询模块流程图 注释: 1、学号与学生姓名均为字符串 2、程序中会显示选项,流程图中没有表示。 2、5信息浏览模块 可以将所有已保存信息信息显示到屏幕上,计划就是将其作为一个单独函数,然后突然发现该模块可以与信息插入模块联系到一起,并且可以更好地实现两个模块得功能,如果没有数据,则调用信息录入模块录入新信息,若有数据则直接显示出来,主要就是将文件中得内容读取到屏幕上。并且在信息录入时可以显示出已有信息。 2、6信息删除模块 可以删除指定学生得信息,通过学号查找来查找删除目标,在打开文件后会判定就是否有数据,可以在删除时确定就是否删除。主要流程如图2、5所示。 图2、5 信息删除模块流程图 注释: 1、删除后被删除项之后得数据依次向上移动 2、数据总个数会减一 2、7信息修改模块 可以修改指定学生得信息,通过学号查找来查找修改目标,在打开文件后会判定就是否有数据,可以在修改时确定就是否修改。主要流程如图2、6所示。 图2、6 信息修改模块统计图 注释: 1、修改时其余数据不会变化 2、8学生人数统计模块 统计数据条数,即学生人数,主要就就是应用每条数据所占总长度就是固定得,检测共有多少条。 第3章 调试分析 1、对主函数进行调试 图为菜单 2、第一次数据录入 3、第二次录入出现问题 图中上部表头不能对齐,通过一次次对show函数中显示内容进行修改,最终正确对齐。 已改正 4. 对信息浏览模块得检测 出现问题,出现多余信息。 改正后测试时屏幕一闪而过,但已观测到问题已改正。 5. 删除模块出现问题 删除前: 删除: 删除后: 错误得删除了内容。 经仔细查瞧代码发现将学号得形式错误得定义成整形,已改正,图为改正结果,删除功能完全正常,如下图。 第4章 使用说明与执行结果 运行操作及结果: 主界面,输入数字进行操作。 输入1 并选择录入新信息,即输入y。 输入学生得个人信息即可。 输入完成,可以选择继续输入或退出。 选择 n 即回到主菜单界面。 输入2 进入信息插入系统, 输入插入位置。 输入插入得信息 插入成功,按任意键返回主菜单。 输入3 进入查询系统 可以分别进行学号查找与姓名查找 学号查找 姓名查找 输入4 进入学生信息浏览系统,将显示所有已录入学生信息 按任意键返回主菜单 输入5进入学生信息删除界面 通过学号查找方式进行删除 删除后可以输入4 确认就是否删除 输入 6 可以进入信息修改界面 查找方式为学号查找 修改完成。 输入7 会统计保存得数据有多少条。 输入0 退出系统 参考文献 [1] Ivor Horton 、 C语言入门经典(第五版) 、 清华大学出版社,2013 [2] 刘艳伟、 C函数全能速查宝典 、 人民邮电出版社,2012 [3] 戴艳 、 零基础学算法(第三版) 、 机械工业出版社,2014 [4] 郭旭文 、 C语言程序设计与项目实践 、 电子工业出版社,2011 [5] 王敬华 、 C语言程序设计教程(第二版) 、 清华大学出版社,2009 附 录(程序清单) 程序源代码: #include<stdio、h> #include<stdlib、h> #include<string、h> #define LEN sizeof(struct student) #define FORMAT "%-15s%-10s%-6d%-7s%-13s%-16s%-12s\n" #define ALL stu[i]、num,stu[i]、name,stu[i]、age,stu[i]、sex,stu[i]、birth,stu[i]、address,stu[i]、tel struct student//定义学生成绩结构体 { char num[15];//学号 char name[10];//姓名 int age;//年龄 char sex[7];//性别 char birth[13];//出生年月 char address[16];//地址 char tel[12];//电话 }; struct student stu[50]; void input();//学生信息录入系统 void show();//学生信息浏览系统 void insert();//学生信息插入系统 void search();//学生信息查询系统 void del();//学生信息删除系统 void modify();//学生信息修改系统 void all();//学生人数统计模块 int main() { int num=0; while(1) { //系统菜单界面 printf("\t|---------------学生信息管理系统---------------|\n"); printf("\t| 0、退出 |\n"); printf("\t| 1、学生信息录入 |\n"); printf("\t| 2、学生信息插入 |\n"); printf("\t| 3、学生信息查询 |\n"); printf("\t| 4、学生信息浏览 |\n"); printf("\t| 5、学生信息删除 |\n"); printf("\t| 6、学生信息修改 |\n"); printf("\t| 7、学生人数统计 |\n"); printf("\t|----------------------------------------------|\n"); printf("\t请输入数字0~7:"); scanf("%d",&num); while(num>7||num<0)//判断输入就是否合理 { printf("\t输入错误,请重新输入:"); scanf("%d",&num); } switch(num) { case 1: input(); system("cls");//清屏 break; case 2: insert(); system("pause"); system("cls"); break; case 3: search(); system("pause"); system("cls"); break; case 4: show(); system("cls");//清屏 break; case 5: del(); system("pause"); system("cls"); break; case 6: modify(); system("pause"); system("cls"); break; case 7: all(); system("pause"); system("cls"); break; case 0: printf("\t退出系统\n"); return 0; } } } void input()//学生信息录入系统 { int i,m=0;//m就是记录得条数 char ch[2]; FILE *fp; if((fp=fopen("data、txt","a+"))==NULL)//打开指定文件 { printf("文件无法打开\n"); return; } while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++;//统计当前记录条数 } fclose(fp); if(m==0) printf("没有数据\n"); else { system("cls");//清屏 show();//显示原有信息 } if((fp=fopen("data、txt","wb"))==NULL) { printf("文件无法打开\n"); return; } for(i=0;i<m;i++) fwrite(&stu[i] ,LEN,1,fp);//向指定得文件写入信息 printf("就是否录入新信息(就是:y/否:n):"); scanf("%s",ch); while(strcmp(ch,"y")==0)//判断就是否要录入新信息 { printf("学号:"); scanf("%s",&stu[m]、num);//输入学生学号 for(i=0;i<m;i++) if(strcmp(stu[i]、num,stu[m]、num)==0) { printf("该学号已存在,请按任意键继续!\n"); getch(); fclose(fp); return; } printf("姓名:"); scanf("%s",stu[m]、name);//输入学生姓名 printf("年龄:"); scanf("%d",&stu[m]、age);//输入年龄 printf("性别:"); scanf("%s",&stu[m]、sex);//输入性别 printf("出生年月:"); scanf("%s",&stu[m]、birth);//输入出生年月 printf("地址:"); scanf("%s",&stu[m]、address);//输入地址 printf("电话:"); scanf("%s",&stu[m]、tel);//输入电话 if(fwrite(&stu[m],LEN,1,fp)!=1)//将新录入得信息写入指定得磁盘文件 { printf("无法保存"); getch(); } else { printf("%s 已保存\n",stu[m]、name); m++; } printf("就是否继续(就是:y/否:n):");//询问就是否继续 scanf("%s",ch); } fclose(fp); printf("\t完成\n"); } void show()//学生信息浏览系统 { FILE *fp; int i,m=0; fp=fopen("data、txt","rb"); while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++; } if(m==0) { input(); return; } fclose(fp); printf("学号 姓名 年龄 性别 出生年月 地址 电话\t\n"); for(i=0;i<m;i++) { printf(FORMAT,ALL);//将信息按指定格式打印 } system("pause"); } void insert()//学生信息插入系统 { FILE *fp; int i,j,k,m=0; char snum[15]; if((fp=fopen("data、txt","r+"))==NULL) { printf("无法打开\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("没有数据\n"); fclose(fp); return; } printf("请输入插入得位置\n"); scanf("%s",&snum);//输入要插入得位置 for(i=0;i<m;i++) if(strcmp(snum,stu[i]、num)==0) break; for(j=m-1;j>i;j--) stu[j+1]=stu[j];//从最后一条记录开始均向后移一位 printf("请输入插入得学号\n"); printf("学号:"); scanf("%s",&stu[i+1]、num); for(k=0;k<m;k++) { if(k==(i+1)) continue; if(strcmp(stu[k]、num,stu[i+1]、num)==0) { printf("该学生已存在\n"); getch(); fclose(fp); return; } } printf("姓名:"); scanf("%s",stu[i+1]、name);//输入学生姓名 printf("年龄:"); scanf("%d",&stu[i+1]、age);//输入年龄 printf("性别:"); scanf("%s",&stu[i+1]、sex);//输入性别 printf("出生年月:"); scanf("%s",&stu[i+1]、birth);//输入出生年月 printf("地址:"); scanf("%s",&stu[i+1]、address);//输入地址 printf("电话:"); scanf("%s",&stu[i+1]、tel);//输入电话 if((fp=fopen("data、txt","wb"))==NULL) { printf("无法打开\n"); return; } for(k=0;k<=m;k++) if(fwrite(&stu[k] ,LEN,1,fp)!=1)//将修改后得记录写入磁盘文件中 { printf("无法保存"); getch(); } fclose(fp); } void search()//学生信息查询系统 { FILE *fp; int i,m=0,sear; char ch[2]; char snum[15]; char sname[10]; if((fp=fopen("data、txt","rb"))==NULL) { printf("文件无法打开\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("没有数据\n"); return; } printf("\t1、学号查找\n"); printf("\t2、姓名查找\n"); printf("\t请选择查找方式:"); scanf("%d",&sear); if(sear==1) { printf("请输入学号\n"); scanf("%s",&snum); for(i=0;i<m;i++) if(strcmp(snum,stu[i]、num)==0)//查找输入得学号就是否在记录中 { printf("发现该同学信息,就是否显示(就是:y/否:n):"); scanf("%s",ch); if(strcmp(ch,"y")==0) { printf("学号 姓名 年龄 性别 出生年月 地址 电话\t\n"); printf(FORMAT,ALL);//将查找出得结果按指定格式输出 break; } else return; } if(i==m) printf("没有找到该学生\n");//未找到要查找得信息 } else if(sear==2) { printf("请输入姓名\n"); scanf("%s",&sname); for(i=0;i<m;i++) if(strcmp(sname,stu[i]、name)==0)//查找输入得学号就是否在记录中 { printf("发现该同学信息,就是否显示(就是:y/否:n):"); scanf("%s",ch); if(strcmp(ch,"y")==0) { printf("学号 姓名 年龄 性别 出生年月 地址 电话\t\n"); printf(FORMAT,ALL);//将查找出得结果按指定格式输出 break; } else return; } if(i==m) printf("没有找到该学生\n");//未找到要查找得信息 } else printf("输入错误\n"); } void del()//学生信息删除系统 { FILE *fp; int i,j,m=0; char snum[15]; char ch[2]; if((fp=fopen("data、txt","r+"))==NULL) { printf("无法打开\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("没有数据\n"); return; } printf("请输入学号:"); scanf("%s",&snum); for(i=0;i<m;i++) if(strcmp(snum,stu[i]、num)==0) break; if(i==m) { printf("无此学生信息\n"); return; } printf("发现该学生信息,就是否删除(就是:y/否:n):"); scanf("%s",ch); if(strcmp(ch,"y")==0)//判断就是否要进行删除 { for(j=i;j<m;j++) stu[j]=stu[j+1];//将后一个记录移到前一个记录得位置 m--;//记录得总个数减1 if((fp=fopen("data、txt","wb"))==NULL) { printf("无法打开\n"); return; } for(j=0;j<m;j++)//将更改后得记录重新写入指定得磁盘文件中 if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("无法保存\n"); getch(); } fclose(fp); printf("删除成功\n"); } else return; } void modify()//学生信息修改系统 { FILE *fp; int i,j,m=0; char ch[2]; char snum[15]; if((fp=fopen("data、txt","r+"))==NULL) { printf("无法打开\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("没有数据\n"); fclose(fp); return; } printf("请输入要修改得信息得学生学号\n"); scanf("%s",&snum); for(i=0;i<m;i++) if(strcmp(snum,stu[i]、num)==0)//检索记录中就是否有要修改得信息 break; if(i==m) { printf("无此学生信息\n"); return; } printf("发现该学生,就是否修改(就是y/否n):\n"); scanf("%s",ch); if(strcmp(ch,"y")==0)//判断就是否要进行删除 { printf("姓名:"); scanf("%s",stu[i]、name);//输入学生姓名 printf("年龄:"); scanf("%d",&stu[i]、age);//输入年龄 printf("性别:"); scanf("%s",&stu[i]、sex);//输入性别 printf("出生年月:"); scanf("%s",&stu[i]、birth);//输入出生年月 printf("地址:"); scanf("%s",&stu[i]、address);//输入地址 printf("电话:"); scanf("%s",&stu[i]、tel);//输入电话 } else return; if((fp=fopen("data、txt","wb"))==NULL) { printf("无法打开\n"); return; } for(j=0;j<m;j++)//将新修改得信息写入指定得磁盘文件中 if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("无法保存"); getch(); } printf("修改成功"); fclose(fp); } void all()//学生人数统计模块 { FILE *fp; int m=0; if((fp=fopen("data、txt","r+"))==NULL) { printf("无法打开\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("没有数据\n"); fclose(fp); return; } else printf("共有%d条数据",m); fclose(fp); } 课程设计总结: 这个程序严格来说有很多不足之处,漏洞比较多,这样得程序并不适合面向人们,也不适合人们得使用,我希望我得程序做出来之后可以满足我们生活中得某些需求,而这个程序显然不就是,至少现在不能,我会逐渐完善这个程序,使它适合使用。 在做这个信息管理系统时我发现,程序并不就是要一次将其做到完美得,当然也很难一次做到完美,就是要一次次得改进,让程序越来越接近完美,当然程序做到完美就是很难得,但我希望我能将我得程序做到最完美,我也会逐渐得完善我得程序,我相信很多人都会有这种想法。 平时要多读一些计算机方面得书籍,要积累一些算法,这样才不会在做程序得时候卡住,还真就是书到用时方恨少。在写程序得时候,程序尽量要规范,这样在发生错误时可以方便于检查,也方便于其她人对您得程序得读取 指导教师评语: 指导教师(签字): 年 月 日 课程设计成绩- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文