c语言课设-学生信息管理系统(67页).doc

上传人:1595****071 文档编号:34801482 上传时间:2022-08-18 格式:DOC 页数:70 大小:1.52MB
返回 下载 相关 举报
c语言课设-学生信息管理系统(67页).doc_第1页
第1页 / 共70页
c语言课设-学生信息管理系统(67页).doc_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《c语言课设-学生信息管理系统(67页).doc》由会员分享,可在线阅读,更多相关《c语言课设-学生信息管理系统(67页).doc(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:学生信息管理系统的设计与实现院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:完成日期:第 67 页-目 录第1章 概要设计11.1题目的内容与要求11.2总体结构1第2章 详细设计22.1主模块22.2信息录入模块42.3信息插入模块62.4信息查询模块72.5信息浏览模块72.6信息删除模块82.7信息修改模块92.8学生人数统计模块9第3章 调试分析10第4章 使用说明与执行结果14参考文献19附 录(程序清单)20第1章 概要设计1.1题目的内容与要求课程设计的内容是设计一个简

2、单的单词替换程序,可以替换文本文件中指定的单词。要求: (1)输入信息要包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(2)通过菜单进行信息的录入,查询,修改,删除等等功能。(3)查询模块要分别用两种方式查询,学号查询,姓名查询。(4)文件保存到文本中。(5)采用VC环境进行调试运行。1.2总体结构本程序主要分为8个模块(功能模块图见图1.1):1.主模块,主要显示系统菜单,并且读取所选功能选项。2.信息录入模块,对学生信息进行录入。3.信息插入模块,从所有数据中的任一位置插入学生的信息。4.信息查询模块,对学生的信息进行查询,分两种方式:学号查询,姓名查询。5.信息浏览模

3、块,将所有学生的信息逐个显示出。6.信息删除模块,将指定信息删除。7.信息修改模块,修改指定信息。8.学生人数统计模块,统计当前所存储的数据条数。图1.1 功能模块图第2章 详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,主要应用循环和switch语句,流程如图2.1所示。图2.1 主模块流程图注释:本流程图主要实现了一个switch语句,合法数据域为07,输入0则退出,在流程图上没有0是因为数值合法且数值不为17的时候即为0。2.2学生信息录入模块(input函数)输入要输入的学生信息,可以显示已保存的学生信息内容,并将内容输出,若内容为空

4、,将提示是否录入数据,直到选择不继续,就回到主菜单,主要流程如图2.2所示。注释:1. 学号为字符串2. 直到输入不继续才会结束。3. 结束为回主菜单,而不是结束程序图2.2 显示模块流程图2.3信息插入模块插入新信息,主要将信息插入任意处,其余信息依次下移一条。不能覆盖某一条信息,而是顺序下移。主要流程如图2.3所示。图2.3信息插入模块流程图注释:1.检测重复时会将所输入的学号跳过,对之前存在数据进行检测。2.若没有数据,则会显示无数据并直接退回到主菜单。2.4信息查询模块本模块分为两种查询方式,实际上操作方式是相同的,姓名和学号均为字符串形式,主要流程如图2.4所示。图2.4 信息查询模

5、块流程图注释:1.学号与学生姓名均为字符串2.程序中会显示选项,流程图中没有表示。2.5信息浏览模块可以将所有已保存信息信息显示到屏幕上,计划是将其作为一个单独函数,然后突然发现该模块可以和信息插入模块联系到一起,并且可以更好地实现两个模块的功能,如果没有数据,则调用信息录入模块录入新信息,若有数据则直接显示出来,主要是将文件中的内容读取到屏幕上。并且在信息录入时可以显示出已有信息。2.6信息删除模块可以删除指定学生的信息,通过学号查找来查找删除目标,在打开文件后会判定是否有数据,可以在删除时确定是否删除。主要流程如图2.5所示。图2.5 信息删除模块流程图注释:1.删除后被删除项之后的数据依

6、次向上移动2.数据总个数会减一2.7信息修改模块可以修改指定学生的信息,通过学号查找来查找修改目标,在打开文件后会判定是否有数据,可以在修改时确定是否修改。主要流程如图2.6所示。图2.6 信息修改模块统计图注释:1.修改时其余数据不会变化2.8学生人数统计模块统计数据条数,即学生人数,主要就是应用每条数据所占总长度是固定的,检测共有多少条。第3章 调试分析1.对主函数进行调试图为菜单2.第一次数据录入3.第二次录入出现问题图中上部表头不能对齐,通过一次次对show函数中显示内容进行修改,最终正确对齐。已改正4. 对信息浏览模块的检测出现问题,出现多余信息。改正后测试时屏幕一闪而过,但已观测到

7、问题已改正。5. 删除模块出现问题删除前:删除:删除后:错误的删除了内容。经仔细查看代码发现将学号的形式错误的定义成整形,已改正,图为改正结果,删除功能完全正常,如下图。第4章 使用说明与执行结果 运行操作及结果:主界面,输入数字进行操作。输入1 并选择录入新信息,即输入y。输入学生的个人信息即可。输入完成,可以选择继续输入或退出。选择 n 即回到主菜单界面。输入2 进入信息插入系统,输入插入位置。输入插入的信息插入成功,按任意键返回主菜单。输入3 进入查询系统可以分别进行学号查找和姓名查找学号查找姓名查找输入4 进入学生信息浏览系统,将显示所有已录入学生信息按任意键返回主菜单输入5进入学生信

8、息删除界面通过学号查找方式进行删除删除后可以输入4 确认是否删除输入 6 可以进入信息修改界面查找方式为学号查找修改完成。输入7 会统计保存的数据有多少条。输入0 退出系统参考文献1 Ivor Horton . C语言入门经典(第五版) . 清华大学出版社,20132 刘艳伟. C函数全能速查宝典 . 人民邮电出版社,20123 戴艳 . 零基础学算法(第三版) . 机械工业出版社,20144 郭旭文 . C语言程序设计与项目实践 . 电子工业出版社,20115 王敬华 . C语言程序设计教程(第二版) . 清华大学出版社,2009 附 录(程序清单)程序源代码:#include#includ

9、e#include#define LEN sizeof(struct student)#define FORMAT %-15s%-10s%-6d%-7s%-13s%-16s%-12sn#define ALL stui.num,stui.name,stui.age,stui.sex,stui.birth,stui.address,stui.telstruct student/定义学生成绩结构体 char num15;/学号 char name10;/姓名 int age;/年龄 char sex7;/性别 char birth13;/出生年月 char address16;/地址 char te

10、l12;/电话;struct student stu50;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.

11、学生信息插入 |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请输入数字07:); scanf(%d,&num); while(num7|num0)/判断输入是否合理 printf(t输入错误,请重新输入:); scanf(%d,&num); switch(num) case 1: input(); system(cls);/清屏 break; ca

12、se 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

13、 0: printf(t退出系统n); return 0; void input()/学生信息录入系统 int i,m=0;/m是记录的条数 char ch2; FILE *fp; if(fp=fopen(data.txt,a+)=NULL)/打开指定文件 printf(文件无法打开n); return; while(!feof(fp) if(fread(&stum ,LEN,1,fp)=1) m+;/统计当前记录条数 fclose(fp); if(m=0) printf(没有数据n); else system(cls);/清屏 show();/显示原有信息 if(fp=fopen(data.

14、txt,wb)=NULL) printf(文件无法打开n); return; for(i=0;im;i+) fwrite(&stui ,LEN,1,fp);/向指定的文件写入信息 printf(是否录入新信息(是:y/否:n):); scanf(%s,ch); while(strcmp(ch,y)=0)/判断是否要录入新信息 printf(学号:); scanf(%s,&stum.num);/输入学生学号 for(i=0;im;i+) if(strcmp(stui.num,stum.num)=0) printf(该学号已存在,请按任意键继续!n); getch(); fclose(fp); r

15、eturn; printf(姓名:); scanf(%s,stum.name);/输入学生姓名 printf(年龄:); scanf(%d,&stum.age);/输入年龄 printf(性别:); scanf(%s,&stum.sex);/输入性别 printf(出生年月:); scanf(%s,&stum.birth);/输入出生年月 printf(地址:); scanf(%s,&stum.address);/输入地址 printf(电话:); scanf(%s,&stum.tel);/输入电话 if(fwrite(&stum,LEN,1,fp)!=1)/将新录入的信息写入指定的磁盘文件

16、printf(无法保存); getch(); else printf(%s 已保存n,stum.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(&stum ,LEN,1,fp)=1) m+; if(m=0) input(); return; fclose(fp); printf(学号 姓名 年龄 性别 出

17、生年月 地址 电话tn); for(i=0;im;i+) printf(FORMAT,ALL);/将信息按指定格式打印 system(pause);void insert()/学生信息插入系统 FILE *fp; int i,j,k,m=0; char snum15; if(fp=fopen(data.txt,r+)=NULL) printf(无法打开n); return; while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+; if(m=0) printf(没有数据n); fclose(fp); return; printf(请输入插入的位置n); s

18、canf(%s,&snum);/输入要插入的位置 for(i=0;ii;j-) stuj+1=stuj;/从最后一条记录开始均向后移一位 printf(请输入插入的学号n); printf(学号:); scanf(%s,&stui+1.num); for(k=0;km;k+) if(k=(i+1) continue; if(strcmp(stuk.num,stui+1.num)=0) printf(该学生已存在n); getch(); fclose(fp); return; printf(姓名:); scanf(%s,stui+1.name);/输入学生姓名 printf(年龄:); scan

19、f(%d,&stui+1.age);/输入年龄 printf(性别:); scanf(%s,&stui+1.sex);/输入性别 printf(出生年月:); scanf(%s,&stui+1.birth);/输入出生年月 printf(地址:); scanf(%s,&stui+1.address);/输入地址 printf(电话:); scanf(%s,&stui+1.tel);/输入电话 if(fp=fopen(data.txt,wb)=NULL) printf(无法打开n); return; for(k=0;k=m;k+) if(fwrite(&stuk ,LEN,1,fp)!=1)/将

20、修改后的记录写入磁盘文件中 printf(无法保存); getch(); fclose(fp);void search()/学生信息查询系统 FILE *fp; int i,m=0,sear; char ch2; char snum15; char sname10; if(fp=fopen(data.txt,rb)=NULL) printf(文件无法打开n); return; while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+; fclose(fp); if(m=0) printf(没有数据n); return; printf(t1.学号查找n); p

21、rintf(t2.姓名查找n); printf(t请选择查找方式:); scanf(%d,&sear); if(sear=1) printf(请输入学号n); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(snum,stui.num)=0)/查找输入的学号是否在记录中 printf(发现该同学信息,是否显示(是:y/否:n):); scanf(%s,ch); if(strcmp(ch,y)=0) printf(学号 姓名 年龄 性别 出生年月 地址 电话tn); printf(FORMAT,ALL);/将查找出的结果按指定格式输出 break; else

22、return; if(i=m) printf(没有找到该学生n);/未找到要查找的信息 else if(sear=2) printf(请输入姓名n); scanf(%s,&sname); for(i=0;im;i+) if(strcmp(sname,stui.name)=0)/查找输入的学号是否在记录中 printf(发现该同学信息,是否显示(是:y/否:n):); scanf(%s,ch); if(strcmp(ch,y)=0) printf(学号 姓名 年龄 性别 出生年月 地址 电话tn); printf(FORMAT,ALL);/将查找出的结果按指定格式输出 break; else r

23、eturn; if(i=m) printf(没有找到该学生n);/未找到要查找的信息 else printf(输入错误n);void del()/学生信息删除系统 FILE *fp; int i,j,m=0; char snum15; char ch2; if(fp=fopen(data.txt,r+)=NULL) printf(无法打开n); return; while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+; fclose(fp); if(m=0) printf(没有数据n); return; printf(请输入学号:); scanf(%s,&s

24、num); for(i=0;im;i+) if(strcmp(snum,stui.num)=0) break; if(i=m) printf(无此学生信息n); return; printf(发现该学生信息,是否删除(是:y/否:n):); scanf(%s,ch); if(strcmp(ch,y)=0)/判断是否要进行删除 for(j=i;jm;j+) stuj=stuj+1;/将后一个记录移到前一个记录的位置 m-;/记录的总个数减1 if(fp=fopen(data.txt,wb)=NULL) printf(无法打开n); return; for(j=0;jm;j+)/将更改后的记录重新

25、写入指定的磁盘文件中 if(fwrite(&stuj ,LEN,1,fp)!=1) printf(无法保存n); getch(); fclose(fp); printf(删除成功n); else return;void modify()/学生信息修改系统 FILE *fp; int i,j,m=0; char ch2; char snum15; if(fp=fopen(data.txt,r+)=NULL) printf(无法打开n); return; while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+; if(m=0) printf(没有数据n); f

26、close(fp); return; printf(请输入要修改的信息的学生学号n); scanf(%s,&snum); for(i=0;im;i+) if(strcmp(snum,stui.num)=0)/检索记录中是否有要修改的信息 break; if(i=m) printf(无此学生信息n); return; printf(发现该学生,是否修改(是y/否n):n); scanf(%s,ch); if(strcmp(ch,y)=0)/判断是否要进行删除 printf(姓名:); scanf(%s,stui.name);/输入学生姓名 printf(年龄:); scanf(%d,&stui.

27、age);/输入年龄 printf(性别:); scanf(%s,&stui.sex);/输入性别 printf(出生年月:); scanf(%s,&stui.birth);/输入出生年月 printf(地址:); scanf(%s,&stui.address);/输入地址 printf(电话:); scanf(%s,&stui.tel);/输入电话 else return; if(fp=fopen(data.txt,wb)=NULL) printf(无法打开n); return; for(j=0;jm;j+)/将新修改的信息写入指定的磁盘文件中 if(fwrite(&stuj ,LEN,1,

28、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(&stum,LEN,1,fp)=1) m+; if(m=0) printf(没有数据n); fclose(fp); return; else printf(共有%d条数据,m); fclose(fp);课程设计总结:这个程序严格来说有很多不足之处,漏洞

29、比较多,这样的程序并不适合面向人们,也不适合人们的使用,我希望我的程序做出来之后可以满足我们生活中的某些需求,而这个程序显然不是,至少现在不能,我会逐渐完善这个程序,使它适合使用。在做这个信息管理系统时我发现,程序并不是要一次将其做到完美的,当然也很难一次做到完美,是要一次次的改进,让程序越来越接近完美,当然程序做到完美是很难的,但我希望我能将我的程序做到最完美,我也会逐渐的完善我的程序,我相信很多人都会有这种想法。平时要多读一些计算机方面的书籍,要积累一些算法,这样才不会在做程序的时候卡住,还真是书到用时方恨少。在写程序的时候,程序尽量要规范,这样在发生错误时可以方便于检查,也方便于其他人对你的程序的读取指导教师评语:指导教师(签字): 年 月 日课程设计成绩

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁