《c语言课设-学生信息管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课设-学生信息管理系统.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:学生信息管理系统的设计与实现院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:完成日期:I成计 年 :)(语评读序的对于也于方时生这规尽程的程。方用真卡的程会样法累,籍方些多法种会多相序的完渐我美序的我望但是到程当近来程进次要美做一很当完做要并,我系息信用用使序这渐,在少是然这而某活生满之出程望用们合,人合序的多比,足很格结计报设学天) ),数条共 ) ) 0=(+ = ( ) ! ) 开无( =). ( 0 模模生/ ) )功成 ) )无( = , , & ( 件文定入信新/+; )开
2、法 = . ( 电输; . )电 地输/) . % ):地 年出入; . % ):月( 性输; ( ):性( 年入/ % )龄 姓姓输; . ( ) 删行要/0) ) ))/是改,现( )信学( 信的有是索/= . ( + 0( ) )学生的要请 ) )数 00 + , & ) ! ) 打 =) ( ( 0 , * 系修生学 ) 成删 ) ) ) 保无 = , & ( 件盘定写录的将) ;( ) 打 = =( 减数的/- 位位一移个后/= + ( 删行是断)= ) ( ) /是删息生现 )信学( =( 0=) ( +;= ) ( ):号 )数 0=() + = , & ( ) ) 无 = .
3、( 0=, 系删信/ )错 信找到/; 该有没 = 输式定结查/ ( ) 电 址 生 性龄 名 号( 0=), ) ( ): 是否息同现 录在号入找/0 . ( + 0 ) )名请( = 信的查/) 学到( 输格指的找/ , ( ) 年 龄 姓 号( 00 ( ) ):否是否,同现( 录记否入找)= ., + 0( )& ( ) 学输 ) & ):方择 ) 查姓 ) 查学 ) 数 0=( ) + =) ) ) 打无 ) , ( 0 ,= 系询信/ ) ) )无 件盘磁的改/= , ( + ; ) 开 = ( = 电电/ &%( ):电( 地输; . &,( ): 年生/) + &, ):生(
4、性入/ )性 年输/) , ( ):龄 姓生入; . ( ):( ) ) )在学( 0= ( )( + ;- 0=) +0( 位入入/ % )位插请( ) )数有 0=(+ = ) ! )( . ( 0 * 系插生/( ) 打格按信;) ( +;0 ) 地 年 性龄年 号学 ) ( ) 0= + = & ) ! ) , . ( =0= * 系浏信/ ) 成 ) ) % 继否/;)否:续否 + ) . 保已( )( )存法( 文盘指写信将/! , ( 电入; . ,( ): 地入; ):地( 年出输; ):生 性性/ ):性 年输/ .& % )龄 姓生入/ ,%( ) )( ) ) !意按存学
5、 0= ( ( +;( 学学输; & ): 信入否是)= , ( ),( ) 否是信录( 信写文定; , ( + 0( )打件文 =. ( 信原/) 清/ ) 数 0= ) 条录计/+ = , &( ) ! )开件 文指打 =) ( ( * 条录 /= 系录信学) 0 ) 统退 0 ) ) ( ) ) ) ( ) ) ( ) ( ) 清/) )( ) ) ( )( ) ) ( ) 清清 ( )( )&%( ):输请误 合是断/ | ) ):0数请( ) |- )| 人. ) 改生. )| 删生 ) 浏生 ( ) | 查信 ) | 入信 ) 录息 ) | . | )|-统管息学-|( 界单系 0
6、 ( 模计生/( 系改生/( 系除信/; 系查信/( 系插息/( 系系生/) 系录信/) 电/ 地/ 年生; 性/ 年/ 姓/ 学/ 构结生/ . . , , , . - - %-0% - ( . 码码源单单录附 告报课天空 社学华.版第教言 . 社出 .项与言语文 版工 )第法础 戴 社出人典速能 艳 0版出清 第典言 文系退条多数存会 成查为界修息可删否 输以删进找界界息入菜返信生入示显览信学 查查查名查行系查 单主键任,信的置入统系息 面单主 出退入选以可可个 ,入录并作操进,果及果结明说 文参 程大天图如,能删果正,整定错形现码容内后除前问现正改问测过一时试息余现检块浏改齐确最修容显函
7、 次过齐不头问现录录次菜调行主分试分调 * 报设大空条条共的定度据条用要,即条模统人变不数时释计统修信示所图程。否是改可数否判件在目修找学,信生指模修减数据移移依后除后释程程除 示 图如。否确删可数是定文在目除来号,的定模模息有出可录在并幕读内文要,示接有息入模息用,没如能个实地且起一联插和块该后数单为其划上示显存有所模览示有中,示中符为姓与释程流询信示 图如,串为学名同式作际式查为模息单菜回直数显则没测检进前,号的所复释程块插信示所图流要序是,某覆。移次其处插将,模插程块示 程结而单束会续不符字释示示图程主主就继选直入是将为若,内容信的已显,学的数 块录息0为候 值且值是没上在退输域数句 一
8、实主本程块主示示图程, 循要能各,模调分数过,制行序模主设详设细 * 告程天空块能 数条数前统,计人息信指模改除删指将除出显逐的所,浏询查,学式种查行信对询息的入位的数所模入入入息对,录项选所且单统要块模) 块(个分结总行运进环采中文保询查,号查方用分询能等除修查,息进过等 话电月生,龄名学包信输:词单中文替,换替单一容内要容的设概设设 第 告设程航0 清( _ 考参 0 _ 行明使 第 0 _ 0试 第 0 统生. 块修息 块删信 _ 浏息 _ 块询信 块模信 块录信 _ 模 0 设 0 0 结总 0 _ 求与题 0 计 第 _ - 报计学空学报 - _ 计 0 与 _ _ 信 询 删 修
9、0第 _ 行 0参 _ 清设 第设的容替,单输信,电话等查等能方,文环进结块)要统选对息所位的信行式浏,显指改指息,数 天 设设行,调各循 图主主 数在是值0息 ,已内若是继主图释符单而块模将次移,要所块释号进没数菜息查式同, 询释为中,模所上为后和插且能,模入,文幕录息定号除文数否如 程除依移模生,在判数是所示释不人条用度共空设 * 调试调菜录齐 函确改现息过改现后容形,正,天 参文明及操入 可入出 入的, 系查查信入信菜找进 可界查数退文 版 速人 戴第 语.出 言版华社课 单码 -0 - , . 生结 / / 年 地/电 )录 生系(息 查 / /改/计 界(-学息- | 录 入 查 )
10、 生浏 ) ) 生 ) . | - 数) 断 请) () 清 ) ) ) ) /清 ) ) ( ) ) ) 退) )录= * 文 开) ! +录 = ) / (= 件) + 定 录否 ,) ,是入 学(;+ = 学按 ( %入姓 & 年 : : 输年 : ; : , 入 , 将文 法) 保 + 续否/ ) /系 0( , & + 龄 ) + ;格 (生系* ) ( 数 请 入位0+ ; ;记一(输 )( ; () ( 在) :( 入姓龄 年 性 生 +/ )(& 输(电(&电 = =磁 ) 信 , (,) ) ) + (0 数 学)姓 择 ) 输)( 0 找记 (否否) 0 号 姓 (,找格输
11、 学 信 请) ) 0号 现是: , 龄生址 ) 查式 没 / )/系 = ( ) ( , + ( :) ; ( = 学) 息/() )行 + /个位 数 = = ; 写盘 & = 保 ) 系* , (= 打 & 0 数 ) 的) + /是 (信 现改)) )要行 ). 姓 ) % / :)输性 月 . 年 : ) 电 ; 开 ;+新件(& = () 成 /模 0 .= 无 +0 , )设结足,合合用出满而然在序信我,做一要程程但我我的多种方累会的方。程时也的评语: 期师名 号号级 技与科计 学算:实计的管生学题设课语称 大航 沈阳航空航天大学课程设计报告 目 录第1章 概要设计11.1题目的
12、内容与要求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-37-沈阳航空航天大学课程设计报告 第1章 概要设计第1章 概要设计1.1题目的内容与要求课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定的单词。要求: (1)输入信息要包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(2)通过菜单进行信息的录入,查询,修改,删除等等功能。
13、(3)查询模块要分别用两种方式查询,学号查询,姓名查询。(4)文件保存到文本中。(5)采用VC环境进行调试运行。1.2总体结构本程序主要分为8个模块(功能模块图见图1.1):1.主模块,主要显示系统菜单,并且读取所选功能选项。2.信息录入模块,对学生信息进行录入。3.信息插入模块,从所有数据中的任一位置插入学生的信息。4.信息查询模块,对学生的信息进行查询,分两种方式:学号查询,姓名查询。5.信息浏览模块,将所有学生的信息逐个显示出。6.信息删除模块,将指定信息删除。7.信息修改模块,修改指定信息。8.学生人数统计模块,统计当前所存储的数据条数。图1.1 功能模块图沈阳航空航天大学课程设计报告
14、 第2章 详细设计第2章 详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,主要应用循环和switch语句,流程如图2.1所示。图2.1 主模块流程图注释:本流程图主要实现了一个switch语句,合法数据域为07,输入0则退出,在流程图上没有0是因为数值合法且数值不为17的时候即为0。2.2学生信息录入模块(input函数)输入要输入的学生信息,可以显示已保存的学生信息内容,并将内容输出,若内容为空,将提示是否录入数据,直到选择不继续,就回到主菜单,主要流程如图2.2所示。注释:1. 学号为字符串2. 直到输入不继续才会结束。3. 结束为回主菜
15、单,而不是结束程序图2.2 显示模块流程图2.3信息插入模块插入新信息,主要将信息插入任意处,其余信息依次下移一条。不能覆盖某一条信息,而是顺序下移。主要流程如图2.3所示。图2.3信息插入模块流程图注释:1.检测重复时会将所输入的学号跳过,对之前存在数据进行检测。2.若没有数据,则会显示无数据并直接退回到主菜单。2.4信息查询模块本模块分为两种查询方式,实际上操作方式是相同的,姓名和学号均为字符串形式,主要流程如图2.4所示。图2.4 信息查询模块流程图注释:1.学号与学生姓名均为字符串2.程序中会显示选项,流程图中没有表示。2.5信息浏览模块可以将所有已保存信息信息显示到屏幕上,计划是将其
16、作为一个单独函数,然后突然发现该模块可以和信息插入模块联系到一起,并且可以更好地实现两个模块的功能,如果没有数据,则调用信息录入模块录入新信息,若有数据则直接显示出来,主要是将文件中的内容读取到屏幕上。并且在信息录入时可以显示出已有信息。2.6信息删除模块可以删除指定学生的信息,通过学号查找来查找删除目标,在打开文件后会判定是否有数据,可以在删除时确定是否删除。主要流程如图2.5所示。图2.5 信息删除模块流程图注释:1.删除后被删除项之后的数据依次向上移动2.数据总个数会减一2.7信息修改模块可以修改指定学生的信息,通过学号查找来查找修改目标,在打开文件后会判定是否有数据,可以在修改时确定是
17、否修改。主要流程如图2.6所示。图2.6 信息修改模块统计图注释:1.修改时其余数据不会变化2.8学生人数统计模块统计数据条数,即学生人数,主要就是应用每条数据所占总长度是固定的,检测共有多少条。沈阳航空航天大学课程设计报告 第3章 调试分析第3章 调试分析1.对主函数进行调试图为菜单2.第一次数据录入3.第二次录入出现问题图中上部表头不能对齐,通过一次次对show函数中显示内容进行修改,最终正确对齐。已改正4. 对信息浏览模块的检测出现问题,出现多余信息。改正后测试时屏幕一闪而过,但已观测到问题已改正。5. 删除模块出现问题删除前:删除:删除后:错误的删除了内容。经仔细查看代码发现将学号的形
18、式错误的定义成整形,已改正,图为改正结果,删除功能完全正常,如下图。沈阳航空航天大学课程设计报告 参考文献第4章 使用说明与执行结果 运行操作及结果:主界面,输入数字进行操作。输入1 并选择录入新信息,即输入y。输入学生的个人信息即可。输入完成,可以选择继续输入或退出。选择 n 即回到主菜单界面。输入2 进入信息插入系统,输入插入位置。输入插入的信息插入成功,按任意键返回主菜单。输入3 进入查询系统可以分别进行学号查找和姓名查找学号查找姓名查找输入4 进入学生信息浏览系统,将显示所有已录入学生信息按任意键返回主菜单输入5进入学生信息删除界面通过学号查找方式进行删除删除后可以输入4 确认是否删除
19、输入 6 可以进入信息修改界面查找方式为学号查找修改完成。输入7 会统计保存的数据有多少条。输入0 退出系统参考文献1 Ivor Horton . C语言入门经典(第五版) . 清华大学出版社,20132 刘艳伟. C函数全能速查宝典 . 人民邮电出版社,20123 戴艳 . 零基础学算法(第三版) . 机械工业出版社,20144 郭旭文 . C语言程序设计与项目实践 . 电子工业出版社,20115 王敬华 . C语言程序设计教程(第二版) . 清华大学出版社,2009 沈阳航空航天大学课程设计报告 附录附 录(程序清单)程序源代码:#include#include#include#defin
20、e 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 tel12;/电话;struct
21、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.学生信息插入 |n); pri
22、ntf(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; case 2: insert();
23、 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 0: printf(t退出系
24、统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.txt,wb)=NULL) p
25、rintf(文件无法打开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); return; printf(姓
26、名:); 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)/将新录入的信息写入指定的磁盘文件 printf(无法保存); g
27、etch(); 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(学号 姓名 年龄 性别 出生年月 地址 电话tn); f
28、or(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); scanf(%s,&snum);
29、/输入要插入的位置 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(年龄:); scanf(%d,&stui+1.age);/输入年龄 printf(性别:); scanf(%s,&stui+1.sex);/输入性别 printf(出生年月:); scanf(%s,&stui+1.birth);/输入出生年月 printf(