版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE专业综合设计报告书设计名称:学生姓名:专业:班别:学号:指导老师:日期:年月日综合设计名称学生信息管理系统设计相关课程C语言程序设计完成时间2016年12月19日成绩评定序号评分项名称评分标准得分1设计功能概述全面准确说明设计功能:10分;全面说明设计功能:8分;简要说明设计功能:6分;功能与设计名称无关:5分以下。2设计依据及原理设计依据符合课程要求、原理,并具有现实意义:20分;设计依据符合课程要求、原理:16分;设计依据符合课程要求:12分;设计依据与课程无关:10分以下。3设计体系结构完整表达设计的结构,灵活应用图表等形式:30分;使用文本表达设计的结构:24分;设计结构基本完成:18分;体系结构与课程设计无关:15分以下。4设计与运行代码与设计步骤清晰,运行成功:30分;完成功能设计,运行成功:24分;设计功能符合要求,运行有问题:20分;设计功能不全,代码出错,不能正常编译和运行:15分以下。5小结表达清楚,实事求是,符合课程要求:10分;表达清楚,符合课程要求:8分;符合课程要求:6分;表达不清楚,不符合课程要求:5分以下。总分等级评分人备注:成绩分为优秀、良好,中等、合格和不合格五个等级目录264681.设计功能概述 1308552.设计依据及原理 1276232.1设计分析 1157122.1.1系统总体设计 198162.1.2详细分析 1293722.2课程设计原理 2228743.设计体系结构 3238263.1设计目标 367543.2体系功能结构图 3316064.设计与运行 4301804.1调试与测试 4131994.2运行结果 486695.小结 957516.附件(源代码) 9PAGEPAGE181.设计功能概述学生信息管理系统,是一个可以增加、删除、浏览、查看、修改学生信息的系统,它是利用C语言实现各功能的。其中学生信息包括:学号、姓名、年龄、电话号码、性别、出生年月、QQ、班级等。该系统可提供添加学生信息、查询学生信息(可以按学号查询和按姓名查询)、删除学生信息(可以按学号删除和按姓名删除)、学生信息修改(可逐项修改学生信息)、学生信息整表浏览等功能。2.设计依据及原理2.1设计分析2.1.1系统总体设计主菜单主菜单添加学生信息信息整表浏览信息查询按学号查询按姓名查询信息编辑按学号修改按学号删除2.1.2详细分析1)入口函数说明menu();菜单函数load_info();载入函数:txt转为链表add_info(STU*h);增加学生search_info(STU*h,inttype);搜索函数delete_info(STU*h);删除学生update_info(STU*h);修改学生信息output_info(STU*h);输出信息preview_info(STU*h,inttype);预览信息main();主函数2)调用关系delete_info()delete_info()update_info()load_info()add_info(STU*h)main()preview_info()output_info()search_info()output_info()3)参数说明add_info(STU*h)、delete_info(STU*h)、output_info(STU*h)、preview_info(STU*h,inttype)、search_info(STU*h,inttype)、update_info(STU*h)函数中的STU*h为传入的链表节点指针,type为搜索的方式:1为输出传入节点指针的一条学生记录,2为输出所有的学生记录。2.2课程设计原理根据总体设计的框架,利用C语言逐项实现各个功能。首先将该系统需要的函数框架罗列出来,然后根据功能要求逐一将各个功能实现,并实现main函数的所有调用,每实现一个功能都进行一次测试,确保将发现的错误在单个功能编写的时候就能解决,以免影响整体效果。最后是整体运行调试。以下是整个系统的设计思路,和运行流程:1)运行程序,显示菜单页面,包括适当的提示信息以及可以实现的各项功能。用户选择输入各功能对应的数字,进入下一级功能页面;2)根据所输入的功能对应的数字,调用对应的各模块函数,显示相应的提示信息令用户进行下一步操作;3)根据用户的输入数据计算或判断,显示出相应的结果以及相应的提示信息,提醒用户进行下一步操作;4)根据选择菜单上对应的功能,可能跳转到添加学生信息、修改学生信息、删除学生信息、浏览学生信息等页面,每结束一个动作,都可以按照选择进行下一个动作;5)当用户选择“0”时,都会结束进程,并关闭系统。3.设计体系结构3.1设计目标该系统的目的主要是加强对学生信息的管理,便于学校对学生信息的统一管理。其中该系统包括以下功能:初始化基本信息界面,即主菜单,有独立的添加与修改界面。添加界面只能连续添加相应的信息,修改界面只能逐项修改学生的信息。删除信息和查询信息都可以通过按学号和按姓名查询和删除,可通过浏览整表浏览所有存在的学生信息表。case6case5case4case3case2case11case0结束程序case6case5case4case3case2case11case0结束程序调用add_info()调用serch_info调用serch_info调用delete_info调用delete_info调用preview_info(判断cmd!=0?YN输入选择的cmd开始窗口展示主菜单显示载入链表cmd结束4.设计与运行4.1调试与测试以下是在调试与测试中遇到的一些问题及解决方法1)调用STU*load_info()函数(文件载入),读写出现乱码解决方法:更改相应指针指向,及有关变量的初值设置。2)边界测试解决方法:用极端的或偏门的情况来探测和验证代码在处理时会发生什么。3)执行窗口执行多次命令后显示过多,不利于输入指令及结果查看解决方法:调用系统清屏函数system("cls");。4)学生信息输出时分不清界限。解决方法:在学生信息输出结果时,使分割线,使的输出信息对齐。4.2运行结果(1)显示主菜单,调用了main()函数,通过输入命令编号继续程序的执行。(2)输入“1”,即添加学生信息,调用add_info(STU*h);(3)按名字查找学生,调用search_info(STU*h,inttype)case2;查找结果(4)按学号查找学生,调用search_info(STU*h,inttype)case1;查找结果浏览全部学生信息,调用preview_info(STU*h,inttype);(5)按学号删除学生信息,调用delete_info(STU*h);删除成功先按学号查询需要修改信息的学生,再修改需要修改的信息,先调用search_info(h,1),再调用update_info(STU*h);修改成功,并用system("cls")清屏。小结在这次系统设计中,我花了比较长的一段时间学习和编写代码,当然也参考了一些资料。毕竟大一的时候学的C语言是比较基础的,也没那么深入的学习。这次实践的结果,不仅实现了学生管理系统的基本功能,即简洁的菜单以及操作使用户能在最短的时间内实现自己想要实现的功能,基本达到了预期目标,而且使我加深了对文件、指针、结构体等的理解,又积累了一些实践经验,同时增强了动手能力和解决实际问题的能力。在设计此系统之前,我的C语言编程能力是比较差的,动手能力十分欠缺,每次都会害怕动手。通过此次程序设计,使我基本了解了C程序设计的步骤,如结构流程图,功能模块分类等等,特别是学会设计系统的基本步骤及思维方法。
这次实践增强了我动手编程的信心,同时让我对代码的编辑更加自信。我相信机会都是留给有准备的人,我会更加深入学习相关的知识,不断提高自我的知识能力,迎接未来的挑战。附件(源代码)#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructrecord{//学生信息结构体 charNo[10]; charname[12]; unsignedintage; charsex[4]; charbirth[10]; charqq[12]; chargrade[20]; charphone[11]; structrecord*next;}STU;intmenu();//菜单函数STU*load_info();//载入函数:txt转为链表STU*add_info(STU*h);//增加学生STU*search_info(STU*h,inttype);//搜索函数STU*delete_info(STU*h);//删除学生voidupdate_info(STU*h);//修改学生信息voidoutput_info(STU*h);//输出信息voidpreview_info(STU*h,inttype);//预览信息voidmain(){ STU*header=NULL,*sear=NULL;intcmd=1; system("title学生信息管理系统"); system("date/T"); system("TIME/T"); system("color5E"); header=load_info(); cmd=menu();//菜单选项设置 while(cmd!=0) { switch(cmd) { case0:break; case1://添加信息 header=add_info(header);output_info(header); break; case2://学号查询 sear=search_info(header,1); if(sear!=NULL) { preview_info(sear,1); } else printf("该学生不存在!\n"); sear=NULL; break; case3: //姓名查询 sear=search_info(header,2); if(sear!=NULL) { preview_info(sear,1); } else printf("该学生不存在!\n"); sear=NULL; break; case4://按学号删除 header=delete_info(header); output_info(header); break; case5: //修改 update_info(header); output_info(header); break; case6: //整表输出 preview_info(header,2); break; default://命令无效 printf("无效的命令!\n请重新输入命令!\n"); break; } if(cmd!=0) cmd=menu(); }}intmenu(){ intcmd=0; printf("\n请输入命令:\n\t0:结束程序!\n\t1:添加学生!\n\t2:按学号查询!\n\t3:按姓名查询!\n\t4:按学号删除信息!\n\t5:按学号修改信息!\n\t6:整表浏览!\n"); scanf("%d",&cmd); while(cmd<0||cmd>9) { printf("无效的命令!\n请重新输入:\n"); scanf("%d",&cmd); } returncmd;}STU*load_info()//载入函数:txt转为链表{ FILE*fp=fopen("d:\\stu.txt","r+"),*fpNew=NULL; STU*h=NULL,*q=NULL,*p=NULL;charch='0'; h=(STU*)malloc(sizeof(STU)); if(fp==NULL) { fpNew=fopen("d:\\stu.txt","w"); fclose(fpNew); returnNULL; } rewind(fp); ch=fgetc(fp); if(ch==EOF) { returnNULL; } else { rewind(fp); fscanf(fp,"%10s%12s%3d%11s%4s%10s%12s%20s",h->No,h->name,&h->age,h->phone,h->sex,h->birth,h->qq,h->grade); q=h; q->next=NULL; } ch=fgetc(fp); while(ch!=EOF) { p=(STU*)malloc(sizeof(STU)); p->next=NULL; fscanf(fp,"%10s%12s%3d%11s%4s%10s%12s%20s",p->No,p->name,&p->age,p->phone,p->sex,p->birth,p->qq,p->grade); ch=fgetc(fp); q->next=p; q=q->next; } fclose(fp); returnh;}STU*add_info(STU*h)//增加学生信息{ FILE*fpin=fopen("d:\\stu.txt","a"); STU*stu,*p; p=h; stu=(STU*)malloc(sizeof(STU)); stu->next=NULL; system("cls"); if(h==NULL) { h=stu; printf("请输入学号:\n"); scanf("%s",h->No); printf("请输入姓名:\n"); scanf("%s",h->name); printf("请输入年龄:\n"); scanf("%d",&h->age); printf("请输入手机号:\n"); scanf("%s",h->phone); printf("请输入性别:\n"); scanf("%s",h->sex); printf("请输入出生年月日:\n"); scanf("%s",h->birth); printf("请输入qq:\n"); scanf("%s",h->qq); printf("请输入班级:\n"); scanf("%s",h->grade); } else { while(p->next!=NULL) { p=p->next; } p->next=stu; printf("请输入学号:\n"); scanf("%s",stu->No); printf("请输入姓名:\n"); scanf("%s",stu->name); printf("请输入年龄:\n"); scanf("%d",&stu->age); printf("请输入手机号:\n"); scanf("%s",stu->phone); printf("请输入性别:\n"); scanf("%s",stu->sex); printf("请输入出生年月日:\n"); scanf("%s",stu->birth); printf("请输入qq:\n"); scanf("%s",stu->qq); printf("请输入班级:\n"); scanf("%s",stu->grade); } fclose(fpin); returnh;}STU*delete_info(STU*h)//删除学生信息{ STU*p,*q; charno[11]; p=h; if(p==NULL) { printf("\t目前还没有信息记录!\n"); returnNULL; } else { printf("请输入一个学号:\n"); scanf("%s",no); q=p->next; if(strcmp(h->No,no)==0) { printf("该学生信息已删除!\n"); h=h->next; } else { while(q!=NULL) { if(strcmp(q->No,no)==0) { printf("\t该学生的信息已删除!\n"); p->next=q->next; returnh; } else { p=q; q=q->next; } } printf("该学生不存在!\n"); } returnh; }}STU*search_info(STU*h,inttype)//按条件搜索学生信息{ STU*p_temp=NULL,*q=h; p_temp=(STU*)malloc(sizeof(STU)); system("cls"); switch(type) { case1://按学号查询 printf("\t请输入一个学号:\n\t"); scanf("%s",p_temp->No); while(q!=NULL) { if(strcmp(q->No,p_temp->No)==0) returnq; else q=q->next; } returnNULL; break; case2://按姓名查询 printf("\t请输入一个名字:\n\t"); scanf("%s",p_temp->name); while(q!=NULL) { if(strcmp(q->name,p_temp->name)==0) returnq; else q=q->next; } returnNULL; break; default:returnNULL;break; }}voidupdate_info(STU*h)//修改学生信息{ STU*q=NULL; unsignedintcmd=1,rec=1; system("cls");while(rec!=0){ q=search_info(h,1); if(q==NULL) printf("\t该学生不存在,无法进行修改操作!\n"); else { cmd=1; while(cmd!=0) { system("cls"); preview_info(q,1); printf("\n\t0:修改完成,回主菜单!\n\t1:修改该学生姓名!\n\t2:修改该学生年龄!\n\t3:修改该学生手机号!\n\t4:修改该学生性别!\n\t5:修改该学生生日!\n\t6:修改该学生qq号!\n\t7:修改该学生班级!\n\t8:修改下一个!\n"); printf("请输入命令:\n\t"); scanf("%d",&cmd); switch(cmd) { case0:cmd=0;rec=0;break; case1: printf("\t请输入学生新的姓名:\n\t"); scanf("%s",q->name); break; case2: printf("\t请输入学生新的年龄:\n\t"); scanf("%d",&q->age); break; case3: printf("\t请输入学生新的手机号:\n\t"); scanf("%s",q->phone); break; case4: printf("\t请输入学生新的性别:\n\t"); scanf("%s",q->sex); break; case5: printf("\t请输入学生新的生日:\n\t"); scanf("%s",q->birth); break; case6: printf("\t请输入学生新的qq号:\n\t"); scanf("%s",q->qq); break; case7: printf("\t请输入学生新的班级:\n\t"); scanf("%s",q->grade); break; case8: cmd=0; break; } } }}}voidoutput_info(STU*h)//输出学生信息{ FILE*fpin=fopen("d:\\stu.txt","w"); STU*q=NULL; q=h; if(q!=NULL) { fprintf(fpin,"%-10s%-12s%4d%11s%-4s%-8s%-11s%20s",q->No,q->name,q->age,q->phone,q->sex,q->birth,q->qq,q->grade); q=q->next; } while(NULL!=q) { fprintf(fpin,"\n%-10s%-12s%4d%11s%-4s%-8s%-11s%20s",q->No,q->name,q->age,q->phone,q->sex,q->birth,q->qq,q->grade); q=q->next; } fclose(fpin);}voidpreview_info(STU*h,inttype)//浏览学生信息{ STU*p=NULL; p=h; system("cls"); switch(type) { case1: printf("================================="); printf("\n该学生的完整信息为:\n\t学号:%-10s\n\t姓名:%-12s\n\t年龄:%-4d\n\t电话:%-11s\n\t性别:%-4s\n\t生日:%-s\t\n\tQQ号:%s\t\n\t班级:%-s\n",h->No,h->name,h->age,h->phone,h->sex,h->birth,h->qq,h->grade); printf("================================="); break; case2: if(p==NULL) { printf("文件中没有信息!\n"); break; } printf("================================="); while(p!=NULL) { printf("\n\t学号:%-10s\n\t姓名:%-12s\n\t年龄:%-4d\n\t电话:%-11s\n\t性别:%-4s\n\t生日:%-s\t\n\tQQ号:%s\t\n\t班级:%-s\n",p->No,p->name,p->age,p->phone,p->sex,p->birth,p->qq,p->grade); printf("================================="); p=p->next; } break; default:break; }}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现单片机监测系统在挤压机上的应用MSP430单片机在智能水表系统上的研究与应用HYP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年乐亭县教师招聘笔试备考题库及答案解析
- 2026年阳原县教师招聘笔试参考题库及答案解析
- 2026上海交通大学图像算法工程师等岗位校园招聘笔试备考题库及答案解析
- 2026年陵川县教师招聘考试备考试题及答案解析
- 2026天津海泰市政绿化有限公司招聘专业技术人员3人笔试备考题库及答案解析
- 2026年饶河县教师招聘笔试参考题库及答案解析
- 2026年马鞍山安徽山湖控股集团有限公司公开招聘工作人员考试备考试题及答案解析
- 2026江西抚州高新区崇岗镇人民政府招聘专职司机1人考试备考题库及答案解析
- 2026年10月玉林市市本级城镇公益性岗位招聘考试模拟试题及答案解析
- 2026年尼玛县教师招聘笔试备考题库及答案解析
- 陕西榆林榆阳区2026年基层社会治理网格员招聘考试试卷-含答案解析
- 2026年广东省中考化学试卷(含答案)
- 2025地球小博士知识竞赛试题附答案
- 食道裂孔疝常见症状及护理方法
- 2025年天津高考历史真题
- 考试舆情应急预案(3篇)
- 华师一附中【圆锥曲线】专题训练汇编
- 酒店对醉酒客人的正确处理方法
- 30题解决方案工程师岗位常见面试问题含HR问题考察点及参考回答
- 点检样品管理办法
- 2025年智能安全帽项目立项申请报告模板
评论
0/150
提交评论