收藏 分享(赏)

学生信息管理系统70001.doc

上传人:dzzj200808 文档编号:2279896 上传时间:2018-09-09 格式:DOC 页数:26 大小:495.78KB
下载 相关 举报
学生信息管理系统70001.doc_第1页
第1页 / 共26页
学生信息管理系统70001.doc_第2页
第2页 / 共26页
学生信息管理系统70001.doc_第3页
第3页 / 共26页
学生信息管理系统70001.doc_第4页
第4页 / 共26页
学生信息管理系统70001.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、1*实践教学*兰州理工大学计算机与通信学院2011 年春季学期C 程序设计 课程设计题 目:学生信息管理系统专业班级: 通信工程 1 班 姓 名: 学 号: 指导教师: 周小健 成 绩:_2摘 要学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。此系统具有查询方便快捷,用简单的界面来展示学生信息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极大的提高对学生信息管理的效率。利用 C 语言开发,实现了简单的学生基本信息的录入、修改、查询、删除等操作,并且能够利用文

2、件系统长久的保留原始数据。关键词:C 语言;学生信息;系统 3目 录一、需求分析 1二、总体设计 2三、详细设计 31.模块设计 .32.算法流程图 .4四、编码 7五、测试 8六、设计总结 .12参考文献 .14致谢 .1500一、需求分析设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。主要功能:1、键入学生信息2、查看录入的信息3、按姓名查看信息4、按学号查看信息5、按平均成绩排序6、删除信息7、保存信息8、读取文件9、我的个人信息0、退出11二、总体设计根据需求分析,为了实现系统功能,我确定图书信息管理系

3、统总体模块如图1 所示。学生信息管理系统学生信息 成绩排序 个人信息读取文件图 1 学生信息管理系统功能模块图22三、详细设计1.模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:学生信息系统使用帮助 声明函数 void help(),对整个系统进行使用说明 模块三:录入学生信息 声明函数 void readfile(),说明一个文件指针 FILE *fp 打开文件“student.txt“ 模块四:学生信息的查找 声明 void seek()为查找函数,通过 switch(item)设定用学号查找,用姓名查找两个分支 模块五:学生信息的修改

4、声明 void modify()为学生信息修改函数,通过 switch(item)设定所要修改的项目 模块六:学生信息按学号排序 声明 void sort()将录入学生系按升序排列,用的是“冒泡排序法”实现排序 模块七:增加学生信息 声明 void insert()插入学生信息,先通过判断学生是否存在,若否则继续输入,若是跳出,重新循环 模块八:删除学生信息 声明 void del()实现学生信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。 模块九:显示学生信息 通过 display()函数输出学生信息 模块十:保存信息 通过 fp=fopen(“student.txt“,“w“)

5、;写入信息 33模块十一:界面菜单 通过 switch(num)调用,以上各函数,实现功能2.算法流程图算法流程图如图 2 所示:输出结果调用save函数调用save函数调用save函数调用openl函数调用Look函数调用save函数调用search_number函数调用search_name函数调用del函数调用order函数调用see函数调用welcome函数Main 函数退出程序调用Type函数图 2 算法流程图44*函数主要功能说明:1、输入学生的信息函数功能:type 函数通过循环向结构体中输入学生的学号、姓名、性别、英语成、数学成绩、语文成绩。Type 函数流程图如图 3:判断

6、i 是否小于 n在主界面选择录入学生信息确定要录入的学生人数 n用 scanf()函数输入信息开始循环for (i=0;i=n图 3 Type 函数流程图552、查看输入的信息功能:通过 look 函数以一个循环的形式输出所要查看的信息。3、查询功能:通查询信息,过 search_name 函数和 search_number 函数来进行比较查找,找到后输出该学生信息查找函数的流程图如图 4:在主界面选择查找学生信息从文件中读入数据循环查找指定学生的姓名for(i=0;in;i+)输入查找的学生姓名是否查找到要查找的记录输出查找到的记录结束没有找到查找找到图 4 查找函数的流程图4、排序功能:对

7、数据进行排序,通过 order 函数对数据按平均分进行排序,排序结束后调用 save 函数保存。5、删除功能:删除信息,通过 del 函数实现,删除后调用 save 函数对数据保存。6、保存功能:对数据进行保存,用 save 函数向文件中写入数据实现该功能。667、退出程序四、编码*源代码见附录学生管理系统:1. 键入学生信息2. 查看录入的学生信息3. 查询学生信息4. 按平均成绩排序5. 删除学生信息6. 保存学生信息7. 打开文件8. 我的个人信息9. 退出77五、测试1.菜单屏幕用 VC+ 6.0 测试 主菜单如图 5 所示:图 5 菜单屏幕2. 输入学生信息输入学生信息如图 6 所示

8、:88图 6 输入学生信息3. 查看学生信息查看学生信息如图 7 所示:图 7 查看学生信息4. 按姓名查询按姓名查询如图 8 所示:图 8 按姓名查找995. 按学号查询按学号查询如图 9 所示:图 9 按学号查找6. 按平均成绩排序按平均成绩排序如图 10 所示:图 10 按平均成绩查找7. 删除学生信息删除学生信息如图 11 所示:图 11 删除学生信息8.保存文件保存文件如图 12 所示:1010图 12 保存文件10. 打开文件打开文件如图 13 所示:图 13 打开文件11. 我的个人信息我的个人信息如图 14 所示:1111图 14 我的个人信息1212六、设计总结调试方法:逐条

9、的对程序中的错误进行修改;修改程序中的变量、声明新函数以及声明头文件对函数进行调试。测试过程中遇到的问题:1、删除学生信息功能不能实现。问题描述:在选择删除功能后不能把选择的学生信息删除,而总是删除其他学生的信息。解决办法:出现这个问题肯定是数据覆盖的时候出现了错误,也就是循环出现了错误。检查循环程序后发现,循环体内数据交换出现了错误,没有定义结构体变量。重新定义结构体变量后问题解决了。2、显示结果时候出错问题描述:每一个功能在现实结果现实的信息部完整,部分信息部能现实或被覆盖。解决办法:现实出错也就是 printf 语句中的结构没有排列好所导致的。检查所有的 Printf 语句后发现所有的

10、printf 语句中少输出了以个语文成绩,且它们不能完全对齐。在增加了“语文” ,修改了转义字符以及空格后,问题解决了。3、在查询信息的时候出错问题描述:在输入不在文件中保存的姓名、学号时,没有信息提示。解决办法:出现此问题说明 if 语句后少了一条 else 语句,加上该语句后,显示的结果正确了。4、打开文件出错问题描述:当显示保存成功后关闭程序。重新打开程序选择打开文件后,文件不能正常打开,或打开文件后没有显示结果。解决办法:查看文件文件中有数据,说明文件在保存的是后没有出错。再仔细观察运行结果后,发现该函数在执行到循环输出的时候把该循环跳了过去没有执行。出现此问题是因为循环的终止条件改变

11、了。将 openl 函数该为有返回值函数之后,重新定义了一个 see 函数来调用 openl 函数,并在 see 函数中用循环输出已经打开的文件中的数据。重新定义一个函数后保存的文件可以成功的打开。5、在排序后没有保存文件解决办法:在 order 函数后边加上了printf(“是否保存?(y or n)“);getchar();scanf(“%c“,if(a=y) 1313save();elseprintf(“退出“);语句后可以选择是否保存排序后的文件。通过课程设计,我更深刻的了解了 C 语言中每个函数的含义,领会了算法是C 语言的灵魂这句话的真谛。一个好的算法可以使程序简洁,运行速度更快。

12、同时也对 C 语言中的循环,函数的调用有了更深的理解。虽然这次的课程设计,老师已经给出了程序让我们读懂。看起来比较容易,但是要让程序实现要求的几个功能却不是很容易。而且要看懂每一个函数也不是十分的容易。在修改程序的过程中也收获了很多以前忽略的东西。在修改的过程中巩固了基础,认识了自已以前常犯得错误,也发现了自己的不足之处。在程序编写中,我认识编写一个系统不仅仅要有良好的用户界面,良好的程序编写风格也是相当重要的。只有良好的种程序编写风格,程序代码的可读性才会好,开发的复杂度才能大大减少,检查错误、修改代码时才会更加容易下手。通过实际操作,学会 C 语言程序编程的基本步骤、基本方法,开发了自己的

13、逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到了团队协作的重要性。1414参考文献1姜灵芝,余健. C 语言课程设计案例精编.北京:清华大学出版社,20082王新,孙雷. C 语言课程设计.北京:清华大学出版社,20093游洪跃、彭骏、谭斌.C 语言程序设计实验与课程设计教程.北京:清华大学出版社,20114王连相.C/C+程序设计上机指导与测试. 北京:中国铁道出版社,20061515致谢结束了一周的课程设计,首先要感谢周老师在课程设计上给予我的指导,支持与帮助。这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅

14、学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,要感谢和我共同做同一个课题的任力同学,他为我解决了很多我不明白的知识以及技术上的难题,让我们共同完成了这个课题。1616附录:#include“stdio.h“#include“conio.h“#include“string.h“#include“stdlib.h“void look(); /*声明查看函数*/void save(); /*声明保存函数*/void search_name(); /*声明按姓名查看函数*/void search_number(); /*声明按学号查看函数*/void order(); /*声明排序

15、函数*/void del(); /*声明删除函数*/int openl(); /*声明打开函数*/void welcome(); /*声明我的个人信息函数*/void type(); /*声明输入函数*/void see(); /*声明打开并查看文件函数*/struct student /*定义学生信息的结构体类型*/char num15; /*学号*/char name20; /*姓名*/char sex4; /*性别*/int english; /*英语成绩*/int math; /*数学成绩*/int chinese; /*语文成绩*/float aver; /*平均成绩*/float

16、sum; /*总成绩*/stu100;int n; /*声明一个全局变量*/void main() /*主函数即用户的操作界面*/ system(“color 1E“); /*设计文本颜色*/int b,flag=0; /*声明局部变量*/while(1) /*循环输出以下信息*/printf(“nttt 欢迎来到学生成绩管理系统!n“);printf(“ntttt n“);printf(“ttt-n“);printf(“ttt1.键入学生的信息nn“); /*键入学生的信息*/printf(“ttt2.查看录入的学生信息nn“); /*查看录入的学生信息*/printf(“ttt3.按姓名查

17、看学生的信息nn“); /*按姓名查看学生的信息*/printf(“ttt4.按学号查看学生的信息nn“); /*按学号查看学生的信息*/printf(“ttt5.按平均成绩排序nn“); /*排序*/printf(“ttt6.删除学生信息nn“); /*删除学生信息*/printf(“ttt7.保存学生信息nn“); /*保存*/printf(“ttt8.打开文件nn“); /*打开文件*/1717printf(“ttt9.我的个人信息nn“); /*我的个人信息*/printf(“ttt0.退出nn“); /*退出*/printf(“ttt 请输入你的选择:“);scanf(“%d“,sw

18、itch(b)case 1:type();break; /*调用键入学生信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:search_number();break; /*调用学号查看函数*/case 5:order();break; /*调用排序函数*/case 6:del();break;/*调用删除函数*/case 7:save();break;/*调用保存函数*/case 8:see();break;/*调用打开文件函数*/case 9:welcome();break;

19、/*调用我的个人信息函数*/case 0:flag=1;break;/*退出 SWITCH 语句*/default :printf(“错误!“);if(flag) break; /*如果选择 0 就退出循环*/void welcome() /*我的个人信息函数*/system(“CLS“);printf(“nntt-个人信息-“); /*在屏幕上输出一下信息*/printf(“nnnntt 姓名:任力 学号 10250107“);printf(“ttt 性别:男n“);printf(“tt 系:兰州理工大学计算机与通信学院nn“);printf(“ “);printf(“nntt 按任意键返回

20、欢迎屏幕!“);getch(); /*按任意键返回主函数*/void type() /*定义键入学生信息函数*/system(“CLS“);int i; /*定义局部变量*/printf(“tt 输出你想输入的学生信息个数:“);scanf(“%d“,for(i=0;in;i+) /*输入每个学生的信息*/printf(“nttt-n“);printf(“ttt 学号:“);1818scanf(“%s“, /*输入学号*/printf(“ttt 姓名:“);scanf(“%s“, /*输入姓名*/printf(“ttt 性别:“);scanf(“%S“, /*输入性别*/printf(“ttt

21、 英语:“);scanf(“%d“, /*输入英语成绩*/printf(“ttt 高数:“);scanf(“%d“, /*输入数成绩*/printf(“tttC 语言:“);scanf(“%d“, /*输入 C 成绩*/stui.aver=(float)stui.english+(float)stui.math+(float)stui.chinese)/3;/*计算平均成绩*/stui.sum=(float)stui.english+(float)stui.math+(float)stui.chinese;/*计算总成绩*/printf(“ttt 平均成绩=%4.1fn“,stui.aver)

22、; /*输出平均成绩*/printf(“ttt 总成绩=%4.1fn“,stui.sum); /*输出总成绩*/printf(“nnttt 按任意键返回菜单!“);getch();save();void save() /*建立保存文件函数*/system(“CLS“);FILE *fp; /*定义文件型指针*/int i;if(fp=fopen(“student.txt“,“wb“)=NULL) /*打开输出文件*/printf(“不能打开文件!n“); return; /*终止程序*/for(i=0;in;i+) /*向 student 文件中写入信息*/if(fwrite(fclose(f

23、p); /*关闭文件*/printf(“nnnnttt 学生信息保存成功!n“);printf(“nnnnttt 按任意键返回菜单!“);getch();void look() /*定义查看函数*/system(“CLS“);int i;/n=openl(); /*调用 openl 函数*/1919printf(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);for(i=0;in;i+) /*输出所有的学生信息*/printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,stui.sex,stu

24、i.english,stui.math,stui.chinese,stui.aver,stui.sum);printf(“nnnttt 按任意键返回菜单“);getch();void search_name() /*按姓名查看函数*/system(“CLS“);int i;char name20; /*声明字符数组*/printf(“ttt 请输入学生姓名:n“);scanf(“%s“,name);printf(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);for(i=0;in;i+)if(strcmp(stui.name,name)=0) /*将输入的姓名与

25、结构体中的姓名进行比较*/printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui.sum);printf(“nnnttt 按任意键返回菜单“);getch();void search_number() /*定义按学号查看函数*/system(“CLS“);int i;char number15; /*声明字符数组*/printf(“ttt 请输入学号:n“);scanf(“%s“,number);print

26、f(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);for(i=0;in;i+)if(strcmp(stui.num,number)=0) /*将输入的学号与结构体中的学号进行比较*/printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui.sum);printf(“nnnttt 按任意键返回菜单“);getch();2020void order() /*定义排序函数*/sys

27、tem(“CLS“);int i,j;char a;struct student temp; /*声明结构体变量*/printf(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);for(i=0;in;i+) /*对数据进行排序*/for(j=i+1;jn;j+)if(stui.sumstuj.sum)temp=stui;stui= stuj;stuj=temp;printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,stui.sex,stui.english,stui.math,stui.ch

28、inese,stui.aver,stui.sum);getch();printf(“是否保存?(y or n)“);getchar();scanf(“%c“,if(a=y) /*是否保存排序后的文件*/save();elseprintf(“退出“);getch();void del() /*定义删除学生信息函数*/int i;char a;char name20;system(“CLS“);printf(“ttt 输入学生名字:n“);scanf(“%s“,name);system(“CLS“);printf(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);fo

29、r(i=0;in;i+)if(strcmp(stui.name,name)=0)printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,2121stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui.sum);getch();printf(“真的删除?(y or n)“);getchar();scanf(“%c“,if(a=y) /*是否删除该信息*/for(;in;i+)stui=stui+1;n=n-1;printf(“你已经删除信息“);elseprint

30、f(“退出“);getch();save();int openl() /*定义打开文件函数*/system(“CLS“);int i;FILE *fp;if(fp=fopen(“student.txt“,“rb“)=NULL)printf(“Cannot open file.n“);exit(0);for(i=0;!feof(fp);i+)fread(fclose(fp);return(i-1);void see() /*打开并查看文件*/system(“CLS“);int i;n=openl();printf(“文件打开成功!n“);printf(“按任意键查看!n“);getch();printf(“t 学号t 姓名t 性别t 英语t 数学t 语文t 平均成绩t 总成绩n“);for(i=0;in;i+) /*输出所有的学生信息*/2222printf(“%10st%st%2st%dt%dt%dt%3.1ftt%6.1fn“,stui.num,stui.name,stui.sex,stui.english,stui.math,stui.chinese,stui.aver,stui.sum);printf(“nnnttt 按任意键返回菜单“);getch();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报