c语言课设-学生信息管理系统_第1页
c语言课设-学生信息管理系统_第2页
c语言课设-学生信息管理系统_第3页
c语言课设-学生信息管理系统_第4页
c语言课设-学生信息管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称: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

2、章章 调试分析调试分析.10 第第 4 章章 使用说明与执行结果使用说明与执行结果.14 参考文献参考文献.19 附附 录(程序清单)录(程序清单).20 第 1 章 概要设计 1.1 题目的内容与要求题目的内容与要求 课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定 的单词。 要求: (1)输入信息要包括学号,姓名,年龄,性别,出生年月,地址,电话,E- mail 等。 (2)通过菜单进行信息的录入,查询,修改,删除等等功能。 (3)查询模块要分别用两种方式查询,学号查询,姓名查询。 (4)文件保存到文本中。 (5)采用 VC 环境进行调试运行。 1.2 总体结构总体结构

3、本程序主要分为 8 个模块(功能模块图见图功能模块图见图 1.1): 1.主模块,主要显示系统菜单,并且读取所选功能选项。 2.信息录入模块,对学生信息进行录入。 3.信息插入模块,从所有数据中的任一位置插入学生的信息。 4.信息查询模块,对学生的信息进行查询,分两种方式:学号查询,姓名查 询。 5.信息浏览模块,将所有学生的信息逐个显示出。 6.信息删除模块,将指定信息删除。 7.信息修改模块,修改指定信息。 8.学生人数统计模块,统计当前所存储的数据条数。 学学生生信信息息管管理理系系统统 信信 息息 浏浏 览览 模模 块块 信信 息息 查查 询询 模模 块块 信信 息息 删删 除除 模模

4、 块块 信信 息息 插插 入入 模模 块块 信信 息息 修修 改改 模模 块块 信信 息息 录录 入入 模模 块块 学学 生生 人人 数数 统统 计计 模模 块块 主主 模模 块块 图 1.1 功能模块图 第 2 章 详细设计 2.1 主模块主模块 控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,主要应用循环和 switch 语句,流程如图 2.1 所示。 开始 输入所 选功能 选项 输入数据是否合法 是否为1 是否为2 是否为3 是否为4 学生信息 录入模块 学生信息 插入模块 学生信息 查询模块 学生信息 浏览模块 是 否 是 是 是 是 否 否 否 否

5、1 是否为5 是否为6 是否为7 结束 学生信息 删除模块 学生信息 修改模块 学生人数 统计模块 是 是 是 否 否 否 1 图 2.1 主模块流程图 注释:本流程图主要实现了一个 switch 语句,合法数据域为 07,输入 0 则 退出,在流程图上没有 0 是因为数值合法且数值不为 17 的时候即为 0。 2.2 学生信息录入模块学生信息录入模块(input 函数)函数) 输入要输入的学生信息,可以显示已保存的学生信息内容,并将内容输出, 若内容为空,将提示是否录入数据,直到选择不继续,就回到主菜单,主要流程 如图 2.2 所示。 注释: 1. 学号为字符串 2. 直到输入不继续才会结束

6、。 3. 结束为回主菜单,而不是结束程序 开开始始 打打开开文文件件 是是否否录录入入新新信信息息 输输入入学学号号 学学号号是是否否重重复复提提示示学学号号存存在在 输输入入其其他他 数数据据 是是否否继继续续 结结束束 (ps:回回主主菜菜单单) 是是 是是 是是 否否 否否 否否 图图 2.2 显示模块流程图显示模块流程图 2.3 信息插入模块信息插入模块 插入新信息,主要将信息插入任意处,其余信息依次下移一条。不能覆盖某 一条信息,而是顺序下移。主要流程如图 2.3 所示。 开始 打开文件 输入插入位 置 从最后一条记录开 始均向后移一位 输入学号 是否重复 结束 (Ps:回主菜单)

7、关闭文件 输入其他内容 保存输入内容 是 否 图 2.3 信息插入模块流程图 注释: 1.检测重复时会将所输入的学号跳过,对之前存在数据进行检测。 2.若没有数据,则会显示无数据并直接退回到主菜单。 2.4 信息查询模块信息查询模块 本模块分为两种查询方式,实际上操作方式是相同的,姓名和学号均为字符 串形式,主要流程如图 2.4 所示。 开始 打开文件 输入查 找方式 输入为1? 输入为2? 按学号查找 按姓名查找 输入学号 输入姓名 是否存在 显示 结束 (ps:回主 菜单) 输入错误 是 是 是 该学生不存 在 否 否 否 图 2.4 信息查询模块流程图 注释: 1.学号与学生姓名均为字符

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

9、输入是否 删除 删除 结束 (ps:返回菜单界面) 是 是 否 否 图 2.5 信息删除模块流程图 注释: 1.删除后被删除项之后的数据依次向上移动 2.数据总个数会减一 2.7 信息修改模块信息修改模块 可以修改指定学生的信息,通过学号查找来查找修改目标,在打开文件后会 判定是否有数据,可以在修改时确定是否修改。主要流程如图 2.6 所示。 开始 打开文件 输入学号 是否有该学生 输入是否 修改 是否修改 修改信息 结束 (ps:返回菜单界面) 否 否 是 是 图 2.6 信息修改模块统计图 注释: 1.修改时其余数据不会变化 2.8 学生人数统计模块学生人数统计模块 统计数据条数,即学生人

10、数,主要就是应用每条数据所占总长度是固定的,检测共有多少条。 第 3 章 调试分析 1.对主函数进行调试 图为菜单 2.第一次数据录入 3.第二次录入出现问题 图中上部表头不能对齐,通过一次次对 show 函数中显示内容进行修改,最终正 确对齐。 已改正 4. 对信息浏览模块的检测 出现问题,出现多余信息。 改正后测试时屏幕一闪而过,但已观测到问题已改正。 5. 删除模块出现问题 删除前: 删除: 删除后: 错误的删除了内容。 经仔细查看代码发现将学号的形式错误的定义成整形,已改正,图为改正结果, 删除功能完全正常,如下图。 第 4 章 使用说明与执行结果 运行操作及结果: 主界面,输入数字进

11、行操作。 输入 1 并选择录入新信息,即输入 y。 输入学生的个人信息即可。 输入完成,可以选择继续输入或退出。 选择 n 即回到主菜单界面。 输入 2 进入信息插入系统, 输入插入位置。 输入插入的信息 插入成功,按任意键返回主菜单。 输入 3 进入查询系统 可以分别进行学号查找和姓名查找 学号查找 姓名查找 输入 4 进入学生信息浏览系统,将显示所有已录入学生信息 按任意键返回主菜单 输入 5 进入学生信息删除界面 通过学号查找方式进行删除 删除后可以输入 4 确认是否删除 输入 6 可以进入信息修改界面 查找方式为学号查找 修改完成。 输入 7 会统计保存的数据有多少条。 输入 0 退出

12、系统 参考文献 1 Ivor Horton . C 语言入门经典(第五版) . 清华大学出版社,2013 2 刘艳伟. C 函数全能速查宝典 . 人民邮电出版社,2012 3 戴艳 . 零基础学算法(第三版) . 机械工业出版社,2014 4 郭旭文 . C 语言程序设计与项目实践 . 电子工业出版社,2011 5 王敬华 . C 语言程序设计教程(第二版) . 清华大学出版社,2009 附 录(程序清单) 程序源代码: #include #include #include #define LEN sizeof(struct student) #define FORMAT %-15s%-10s

13、%-6d%-7s%-13s%-16s%-12sn #define ALL stui.num,,stui.age,stui.sex,stui.birth,stui.address,stui.tel struct student/定义学生成绩结构体 char num15;/学号 char name10;/姓名 int age;/年龄 char sex7;/性别 char birth13;/出生年月 char address16;/地址 char tel12;/电话 ; struct student stu50; void input();/学生信息录入系统 void show()

14、;/学生信息浏览系统 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.学生信息浏览 |

15、n); printf(t| 5.学生信息删除 |n); printf(t| 6.学生信息修改 |n); printf(t| 7.学生人数统计 |n); printf(t|-|n); printf(t 请输入数字 07:); scanf(%d, while(num7|num0)/判断输入是否合理 printf(t 输入错误,请重新输入:); scanf(%d, switch(num) case 1: input(); system(cls);/清屏 break; case 2: insert(); system(pause); system(cls); break; case 3: search

16、(); 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

17、 是记录的条数 char ch2; FILE *fp; if(fp=fopen(data.txt,a+)=NULL)/打开指定文件 printf(文件无法打开n); return; while(!feof(fp) if(fread(/统计当前记录条数 fclose(fp); if(m=0) printf(没有数据n); else system(cls);/清屏 show();/显示原有信息 if(fp=fopen(data.txt,wb)=NULL) printf(文件无法打开n); return; for(i=0;im;i+) fwrite(/向指定的文件写入信息 printf(是否录入新信

18、息(是:y/否:n):); scanf(%s,ch); while(strcmp(ch,y)=0)/判断是否要录入新信息 printf(学号:); scanf(%s,/输入学生学号 for(i=0;im;i+) if(strcmp(stui.num,stum.num)=0) printf(该学号已存在,请按任意键继续!n); getch(); fclose(fp); return; printf(姓名:); scanf(%s,);/输入学生姓名 printf(年龄:); scanf(%d,/输入年龄 printf(性别:); scanf(%s,/输入性别 printf(出生年

19、月:); scanf(%s,/输入出生年月 printf(地址:); scanf(%s,/输入地址 printf(电话:); scanf(%s,/输入电话 if(fwrite( getch(); else printf(%s 已保存n,); 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( if(

20、m=0) input(); return; fclose(fp); printf(学号 姓名 年龄 性别 出生年月 地址 电话 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( if(m=0) printf(没有数据n); fclose

21、(fp); return; printf(请输入插入的位置n); scanf(%s,/输入要插入的位置 for(i=0;ii;j-) stuj+1=stuj;/从最后一条记录开始均向后移一位 printf(请输入插入的学号n); printf(学号:); scanf(%s, 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);/输入学生姓名 pri

22、ntf(年龄:); scanf(%d,/输入年龄 printf(性别:); scanf(%s,/输入性别 printf(出生年月:); scanf(%s,/输入出生年月 printf(地址:); scanf(%s,/输入地址 printf(电话:); scanf(%s,/输入电话 if(fp=fopen(data.txt,wb)=NULL) printf(无法打开n); return; for(k=0;k=m;k+) if(fwrite( getch(); fclose(fp); void search()/学生信息查询系统 FILE *fp; int i,m=0,sear; char ch2

23、; char snum15; char sname10; if(fp=fopen(data.txt,rb)=NULL) printf(文件无法打开n); return; while(!feof(fp) if(fread( fclose(fp); if(m=0) printf(没有数据n); return; printf(t1.学号查找n); printf(t2.姓名查找n); printf(t 请选择查找方式:); scanf(%d, if(sear=1) printf(请输入学号n); scanf(%s, for(i=0;im;i+) if(strcmp(snum,stui.num)=0)/

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

25、在记录中 printf(发现该同学信息,是否显示(是:y/否:n):); scanf(%s,ch); if(strcmp(ch,y)=0) printf(学号 姓名 年龄 性别 出生年月 地址 电话tn); printf(FORMAT,ALL);/将查找出的结果按指定格式输出 break; else return; 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.tx

26、t,r+)=NULL) printf(无法打开n); return; while(!feof(fp) if(fread( fclose(fp); if(m=0) printf(没有数据n); return; printf(请输入学号:); scanf(%s, 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

27、+) stuj=stuj+1;/将后一个记录移到前一个记录的位置 m-;/记录的总个数减 1 if(fp=fopen(data.txt,wb)=NULL) printf(无法打开n); return; for(j=0;jm;j+)/将更改后的记录重新写入指定的磁盘文件中 if(fwrite( 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( if(m=0) printf(没有数据n); fclose(fp); return; printf(请输入要修改的信息的学生学号n); scanf(%s, 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论