学生信息管理系统_第1页
学生信息管理系统_第2页
学生信息管理系统_第3页
学生信息管理系统_第4页
学生信息管理系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

精品文档 1欢迎下载 一 设计目的 课程设计内容 1 问题描述 学生信息包括 学号 姓名 年龄 性别 出生年月 地址 电话 E mail 等 设计以学生信息管理系统 使之能提供以下功能 1 系统以菜单方式工作 2 学生信息录入功能 学生信息用文件保存 输入 3 学生信息浏览功能 输出 4 查询 排序功能 算法 a 按学号查询 b 按姓名查询 5 学生信息的删除与修改 2 功能要求 A 界面比较美观 B 有一定的容错能力 3 函数功能描述 输入部分 通过键盘输入多位学生的学生信息 学生的信息包含有 学生姓名 性别 学号 出生年月 年龄等 此次做的学生管理系统是利用链表而完成的程序 故第一部分想要实现建立链表 输出部分 输出当前已存储的学生信息 更新部分 删除 删除用户指定的学生信息 这部分的功能是输入学生的学号 找到其 在链表中存储的结点处 并将这整个结点删除 再把该结点的前驱结点和后驱 节点连接 来实现这个学生信息的删除 修改 修改用户指定的学生信息 这部分是利用输入学生的学号 来找到存 储该学生信息的结点 通过该结点的链域来修改其中的值域 来实现对学生信 息的修改 查询部分 按名字查询 输出用户查询的学生信息 这部分是利用输入学生的姓名 来找 到存储该学生信息的结点 输出该结点的值域中的内容 来实现对学生信息的 查询功能 按学号查询 输出用户查询的学生信息 同上 只是查询条件为学号 4 要求与限制条件 各模块间通过菜单切换和调用 主函数通过调用菜单函数实现对各功能模块的调用 各功能模块间根据需 要可相互调用 程序能够保证各模块功能的独立和数据共享 不使用全局变量则能保证函数 之间的独立性 利用形参与实参之间的数值传递来实现数据共享 精品文档 2欢迎下载 二 总体设计 输出界面 选择操作 选择 9 读取文件执行 freeall 退出 系统 选择 1 帮助说明Break 结束 选择 3增加数据Break 选择 4 选择 5 修改数据 增加数据 Break Break 选择 2 录入数据 break 精品文档 3欢迎下载 选择 6删除数据Break 选择 7 选择 8 显示数据 保存数据 Break Break 输出 无效选 项 Break 结束 选择录入学生信息 输入学生信 息 正确 错误 正确 不录入学 生信息 录入学生 信息 结束 查找 主界面 精品文档 4欢迎下载 利用函数找到相关结点 是否存在该 学生信息 输出该结点的值 域的内容 查询完毕 该学生不存在 修改 调用函数查找到相关结点地 址 修改相关结点的 值域 是否存在该 学生信息 修改完毕 三 详细设计 精品文档 5欢迎下载 输入模块输入模块 void insert 插入函数 int i n j flag printf 请输入待增加的学生数 n scanf d do flag 1 while flag flag 0 printf 请输入第 d 个学生的学号 n i 1 scanf s stu i code for j 0 j i j if strcmp stu i code stu j code 0 printf 已有该学号 请检查后重新录入 n flag 1 break 如有重复立即退出该层循环 提高判断速度 printf 请输入第 d 个学生的姓名 n i 1 scanf s stu i name printf 请输入第 d 个学生的年龄 n i 1 scanf d printf 请输入第 d 个学生的性别 n i 1 scanf s stu i sex printf 请输入第 d 个学生的出生年月 格式 年 月 n i 1 scanf s stu i time printf 请输入第 d 个学生的地址 n i 1 scanf s stu i add printf 请输入第 d 个学生的电话 n i 1 scanf s stu i tel printf 请输入第 d 个学生的 E mail n i 1 scanf s stu i mail if flag 0 i i i 精品文档 6欢迎下载 while i n m n m printf 录入完毕 n n sort 查找模块查找模块 void seek 查找 int i item flag char s1 21 以姓名和学号最长长度 1 为准 printf n printf 1 按学号查询 n printf 2 按姓名查询 n printf 3 退出本菜单 n printf n while 1 printf 请选择子菜单编号 scanf d flag 0 switch item case 1 printf 请输入要查询的学生的学号 n scanf s s1 for i 0 i n i if strcmp stu i code s1 0 flag 1 printf 学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E mail n printf n printf 6s 7s 6d 5s 9s 8s 10s 14s n stu i code stu i name stu i age stu i sex stu i time stu i add stu i tel stu i mail if flag 0 printf 该学号不存在 n break 精品文档 7欢迎下载 case 2 printf 请输入要查询的学生的姓名 n scanf s s1 for i 0 i n i if strcmp stu i name s1 0 flag 1 printf 学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E mail n printf n printf 6s 7s 6d 5s 9s 8s 10s 14s n stu i code stu i name stu i age stu i sex stu i time stu i add stu i tel stu i mail if flag 0 printf 该姓名不存在 n break case 3 return default printf 请在 1 3 之间选择 n 修改模块修改模块 void modify 修改信息 int i item num char sex1 3 s1 LEN 1 s2 LEN 1 以姓名和学号最长长度 1 为准 printf 请输入要要修改的学生的学号 n scanf s s1 for i 0 i n i if strcmp stu i code s1 0 比较字符串是否相等 num i printf n printf 1 修改姓名 n printf 2 修改年龄 n printf 3 修改性别 n printf 4 修改出生年月 n printf 5 修改地址 n printf 6 修改电话号码 n printf 7 修改 E mail 地址 n printf 8 退出本菜单 n 精品文档 8欢迎下载 printf n while 1 printf 请选择子菜单编号 scanf d switch item case 1 printf 请输入新的姓名 n scanf s s2 strcpy stu num name s2 break case 2 printf 请输入新的年龄 n scanf d break case 3 printf 请输入新的性别 n scanf s sex1 strcpy stu num sex sex1 break case 4 printf 请输入新的出生年月 n scanf s s2 strcpy stu num time s2 break case 5 printf 请输入新的地址 n scanf s s2 strcpy stu num add s2 break case 6 printf 请输入新的电话号码 n scanf s s2 strcpy stu num tel s2 break case 7 printf 请输入新的 E mail 地址 n scanf s s2 strcpy stu num mail s2 break case 8 return default printf 请在 1 8 之间选择 n 四 调试 精品文档 9欢迎下载 A 先编译程序 B 再连接程序 生成目标 C 运行程序 1 调试中的主要问题 调试中主要出现的问题 经常遇到程序执行到某部分就不运行 而编译和链接都成功 说明程序设计 上有些问题 语法等并未出错 这时就要去再行考虑设计的程序哪部分考虑不 周全 因为这次使用链表来设计程序 就牵扯到形参和实参的问题 曾经因为考虑 不周全 在自定义函数前的基类出错 导致相关的值未改变 这里就要考虑好 形参和实参的问题 刚开始没有那个初始化函数 程序运行后没有输入任何数 据就试得去执行显示功能 结果显示的是一些乱码 加入初始化函数后 这种 现象也随之消失 在没有输入任何信息的情况下 不能执行查询 修改 删除 统计 排序功能 有时候 忘记定义就直接调用 使得出错 我这时候才真 正体会到了一致性的重要 检查程序很多遍但却始终不知道输入的数据有错 很令人头疼 2 程序的不足和改进之处 因为用链表来设计一个程序 较复杂 最后没来得及 设计相关的文件存储来 实现将数据保存 以致每次运行程序都要重新输入新的数据 改进之处 可以再考虑编写一个函数 这个函数的功能是将数据写入文件中并改进之处 可以再考虑编写一个函数 这个函数的功能是将数据写入文件中并 保存 保存 五 测试结果 程序运行程序运行 主界面 输入信息输入信息 显示 查询查询 修改 删除 精品文档 10欢迎下载 六 结束语 回想学习 C 语言 的过程中 既有快乐又有烦恼 从领到书的那一刻 我就很郁闷 C 语言到底事学什么的 有什么用 刚开始 上课时 还在迷茫这门课程是用来做什么的 不过 这些感受都是在对这门课 程不了解的情况下产生的 后来慢慢的接触多了 听老师讲的多了 了解多了 渐渐的产生了兴趣 尤其是学到语句和函数时 上机操作程序 经过编译 调 试和运行后 出现界面 当时觉得很好奇 想真正的学好这门课程 通过一个 学期的学习 我掌握了基本知识 期末 被通知要进行课程设计 当时有点懵 感觉学的东西很少 很零散 不知该怎么练到一起 就要课程设计 是不是太难为我们了 通过两周的自学 第二周结束的时候 我感觉自己收获挺大的 从一开始 的迷茫 不知道从何下手到把程序中的几个模块编写出来 心里挺开心的 但 是 我们又不得不再次陷入困境 在整个程序的编写过程中 最难的就是修改 和删除这两个模块 这也是我们要解决的重点问题 开始编写修改和删除时 很头疼 去向其他人寻求帮助 在别人的帮助和 提示下 我编完了修改程序 但编译时老出错 修改后的内容将文本内的信息 全部覆盖了 困难之时 我们组的其他人 帮助了我 完成了修改和删除 这 样的话 整个程序基本上全部完成了 就剩下完善工作了 我们组写了两个程 序 最后 两个程序相互组合 互补 大功告成 虽然设计时完成了 但是我觉得其中还是由一些不足之处 1 警告句 程序中缺少一些警告句 例如 是否真的删除 y n 2 重名的情况 由于考虑的不周全 没有设计遇到重名的情况该怎么处理 整个程序完成了 还有很多不完善的地方 希望自己以后办事的时候要认 真 仔细 考虑周全 短短的几周课程设计结束了 但是这段时间里 我又学到了更多 C 知识 如 对象数组 string 类 文件流等 同时我也被提醒以后办事的时候要认真 仔细 考虑周全 也看到了团队精神和互帮互助的重要性 这一点会让我终生 受益 通过这次的课程设计 我觉得自己肚子里的墨水多了 收获也挺大的 这几周过的挺充实 七 源程序清单 include I O 函数 include 其它说明 include 字符串函数 define BUFLEN 100 缓冲区最大字符数 define LEN 15 学号和姓名最大字符数 实际请更改 精品文档 11欢迎下载 define N 100 最大学生人数 实际请更改 struct record 结构体 char code LEN 1 学号 char name LEN 1 姓名 int age 年龄 char sex 3 性别 char time LEN 1 出生年月 char add 30 家庭地址 char tel LEN 1 电话号码 char mail 30 电子邮件地址 stu N int k 1 n m 定义全局变量 void readfile 声明函数 void seek void modify void insert void del void display void save void menu int main 精品文档 12欢迎下载 while k menu system pause return 0 void help 帮助 printf n1 欢迎使用系统帮助 n printf n2 进入系统后 先刷新学生信息 再查询 n printf n3 按照菜单提示键入数字代号 n printf n4 增加学生信息后 切记保存按 8 n printf n5 谢谢您的使用 n void readfile 建立信息 char p student txt FILE fp int i 0 if fp fopen student txt r NULL printf Open file s error Strike any key to exit p 精品文档 13欢迎下载 system pause exit 0 while fscanf fp s s d s s s s s stu i code stu i name i i fclose fp n i printf 录入完毕 n void seek 查找 int i item flag char s1 21 以姓名和学号最长长度 1 为准 printf n printf 1 按学号查询 n 精品文档 14欢迎下载 printf 2 按姓名查询 n printf 3 退出本菜单 n printf n while 1 printf 请选择子菜单编号 scanf d flag 0 switch item case 1 printf 请输入要查询的学生的学号 n scanf s s1 for i 0 i n i if strcmp stu i code s1 0 flag 1 printf 学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E mail n printf n printf 6s 7s 6d 5s 9s 8s 10s 精品文档 15欢迎下载 14s n stu i code stu i name stu i age stu i sex stu i time stu i add stu i tel stu i mail if flag 0 printf 该学号不存在 n break case 2 printf 请输入要查询的学生的姓名 n scanf s s1 for i 0 i n i if strcmp stu i name s1 0 flag 1 printf 学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E mail n printf n printf 6s 7s 6d 5s 9s 8s 10s 14s n stu i code stu i name stu i age stu i sex stu i time stu i add stu i tel stu i mail if flag 0 printf 该姓名不存在 n break 精品文档 16欢迎下载 case 3 return default printf 请在 1 3 之间选择 n void modify 修改信息 int i item num char sex1 3 s1 LEN 1 s2 LEN 1 以姓名和学号最长长度 1 为准 printf 请输入要要修改的学生的学号 n scanf s s1 for i 0 i n i if strcmp stu i code s1 0 比较字符串是否相等 num i printf n printf 1 修改姓名 n printf 2 修改年龄 n printf 3 修改性别 n printf 4 修改出生年月 n printf 5 修改地址 n printf 6 修改电话号码 n 精品文档 17欢迎下载 printf 7 修改 E mail 地址 n printf 8 退出本菜单 n printf n while 1 printf 请选择子菜单编号 scanf d switch item case 1 printf 请输入新的姓名 n scanf s s2 strcpy stu num name s2 break case 2 printf 请输入新的年龄 n scanf d break case 3 printf 请输入新的性别 n scanf s sex1 strcpy stu num sex sex1 break case 4 printf 请输入新的出生年月 n 精品文档 18欢迎下载 scanf s s2 strcpy stu num time s2 break case 5 printf 请输入新的地址 n scanf s s2 strcpy stu num add s2 break case 6 printf 请输入新的电话号码 n scanf s s2 strcpy stu num tel s2 break case 7 printf 请输入新的 E mail 地址 n scanf s s2 strcpy stu num mail s2 break case 8 return default printf 请在 1 8 之间选择 n void sort 按学号排序 int i j p q s 精品文档 19欢迎下载 char temp 10 for i 0 ii j if strcmp stu j 1 code stu j code 0 strcpy temp stu j 1 code strcpy stu j 1 code stu j code strcpy stu j code temp strcpy temp stu j 1 name strcpy stu j 1 name stu j name strcpy stu j name temp strcpy temp stu j 1 sex strcpy stu j 1 sex stu j sex strcpy stu j sex temp strcpy temp stu j 1 time strcpy stu j 1 time stu j time strcpy stu j time temp strcpy temp stu j 1 add strcpy stu j 1 add stu j add strcpy stu j add temp strcpy temp stu j 1 tel 精品文档 20欢迎下载 strcpy stu j 1 tel stu j tel strcpy stu j tel temp strcpy temp stu j 1 mail strcpy stu j 1 mail stu j mail strcpy stu j mail temp p q s q q p p s void insert 插入函数 int i n j flag printf 请输入待增加的学生数 n scanf d do flag 1 while flag 精品文档 21欢迎下载 flag 0 printf 请输入第 d 个学生的学号 n i 1 scanf s stu i code for j 0 j i j if strcmp stu i code stu j code 0 printf 已有该学号 请检查后重新录入 n flag 1 break 如有重复立即退出该层循环 提高判断速度 printf 请输入第 d 个学生的姓名 n i 1 scanf s stu i name printf 请输入第 d 个学生的年龄 n i 1 scanf d printf 请输入第 d 个学生的性别 n i 1 scanf s stu i sex printf 请输入第 d 个学生的出生年月 格式 年 月 n i 1 scanf s stu i time printf 请输入第 d 个学生的地址 n i 1 scanf s stu i add 精品文档 22欢迎下载 printf 请输入第 d 个学生的电话 n i 1 scanf s stu i tel printf 请输入第 d 个学生的 E mail n i 1 scanf s stu i mail if flag 0 i i i while i n m n m printf 录入完毕 n n sort void del 删除信息 int i j flag 0 char s1 LEN 1 printf 请输入要删除学生的学号 n scanf s s1 for i 0 i n i 精品文档 23欢迎下载 if strc

温馨提示

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

评论

0/150

提交评论