班级学生信息管理系统设计(共41页)_第1页
班级学生信息管理系统设计(共41页)_第2页
班级学生信息管理系统设计(共41页)_第3页
班级学生信息管理系统设计(共41页)_第4页
班级学生信息管理系统设计(共41页)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、班级学生信息管理设计(shj)系统课程(kchng):C语言程序设计班级(bnj):计算机软件技术*班 学号:*姓名:* 2014年6月目 录 TOC o 1-3 h z u HYPERLINK l _Toc127768768 一、设计目的 PAGEREF _Toc127768768 h 1 HYPERLINK l _Toc127768769 二、总体设计 PAGEREF _Toc127768769 h 1 HYPERLINK l _Toc127768770 三、详细设计 PAGEREF _Toc127768770 h 1 HYPERLINK l _Toc127768771 四、调试(dio

2、sh)与测试 PAGEREF _Toc127768771 h 1 HYPERLINK l _Toc127768772 五、源程序清单和执行(zhxng)结果 PAGEREF _Toc127768772 h 1 HYPERLINK l _Toc127768772 六、总结(zngji) PAGEREF _Toc127768772 h 1设计目的(1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题总体设计本设计有1个C文件(11个函数)和一个(y )头文件组成关系如表所示。 程序包含(bohn)头文

3、件的存、取过程,其功能就是按输入学号大小的顺序建立记录。程序自动建立一个文件来保存学生信息记录。源文件函数名功能demo.cmenu接受用户选择的菜单命令。help给用户一些提示和帮助。readfile新增或修改学生信息以后,刷新信息seek可以找到想要查询的某个学生信息记录。modify找到指定记录并修改。insert增加学生记录。del删除指定学号的学生信息记录。display显示当前学生记录的信息。save可以保存新增的或修改的学生信息记录。sort按照学号进行准确的排序。main结束程序运行。分析(fnx)系统:根据题目的需求分析,可将这个系统设计为九大函(见下图):系统(xtng)帮

4、助及说明,刷新学生(xu sheng)信息,查询(chxn),修改,插入,删除,显示,保存,退出。(组成框图)学生信息管理系统查询插入修改删除显示保存退出帮助刷新流程图:显示菜单开始输入08输入0-8系统帮助及说明刷新学生信息退出系统查询学生信息修改学生信息增加学生信息按学号删除信息显示当前信息保存当前学生信息YNN结果Y详细(xingx)设计数据结构(sh j ji u)设计:结构(jigu)数组:struct student /*结构(jigu)体*/char xuehaoLEN+1; /* 学号 */char nameLEN+1; /* 姓名(xngmng) */int age; /*

5、年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */char sushe30;/* 宿舍 */char koukou20;/* qq */ char banjizhiwu30;/* 班级职务 *stuN;功能模块设计:本程序执行的入口是menu函数,然后用switch句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要的功能。最后再从main函数中结束整个程序的运行。 0、界面函数:函数

6、原型:void menu() 功能:接受用户选择(xunz)的菜单命令.若果输入不符合要 求,则提醒用户(yngh)重新输入。参数(cnsh):无。返回值:无工作方式:根据命令,调用相应函数。1、帮助函数:函数原型:void help()功能:给用户一些提示和帮助。参数:无。返回值:无2、刷新函数:函数原型:void readfile()功能:新增或修改学生信息以后,刷新信息。参数:无。返回值:无 3、查询函数:函数原型:void seek()功能:可以找到想要查询的某个学生信息记录。可以按照学号、姓名来查询。参数:无。返回值:无工作方式:可选择按照学号或姓名来查询。 4、修改(xigi)函数

7、(hnsh): 函数(hnsh)原型:void modify() 功能:找到指定记录并修改。如果有的学生信息发生改 变,你可以丢它进行修改,修改之前,你必须找到你修 改学生的记录,你可以根据学号找到要改学生的信息,找到之后,若要修改,可以选择某一项(如:姓名、年龄、性别等)对它进行修改。参数:无。返回值:无工作方式:可以按照学号、姓名活名次找到要修改的记录,确认后方可修改。 5、插入函数:函数原型:void insert()功能:增加学生记录。参数:无。返回值:无。工作方式:其中通过学号的大小来比较的,并且以此来排序插入记录。 6、删除函数: 函数(hnsh)原型:void del()功能:删

8、除指定学号的学生信息记录。删除之前,需要判定该学生的学号是否(sh fu)存在,若存在,就可以对它进行删除。参数(cnsh):无。返回值:无工作方式:根据给定的学号,查找符合的记录并删除之。 7、显示函数: 函数原型:void display() 功能:显示当前学生记录的信息。 参数:无。 返回值:无 工作方式:显示当前学生记录记录内容。8、保存函数:函数原型:void save()功能:可以保存新增的或修改的学生信息记录。参数:无。返回值:无工作方式:将学生信息记录写入student.txt中。 9、排序函数:函数原型:void sort()功能:对学生进行排序(pi x),可以按照学号进行

9、准确的排序。参数(cnsh):无。返回值:无工作方式:对学生进行排序,可以根据需要(xyo),对学生的学号或者成绩进行升序。 10、退出系统:函数原型:int main()功能:结束程序运行。参数:无。返回值:无工作方式:根据要求选择退出。调试与测试问题一、学生显示信息函数:其中包括学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,宿舍,扣扣,班级职务等相关信息;可用函数display()来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。解决办法及步骤:1、一个个输出所有的学生的学号,检查(jinch)文件中是否有此学生,发现有。2、既然有此学生(xu

10、sheng),那么检查循环判断是否有此学生的语句发现没有错3、输出用于循环检查语句(yj)中的学生信息,发现乱码4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询函数:可用seek()来实现。找到就输出此学生全部信息学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,宿舍,扣扣,班级职务。当正确输入查找信息时,系统却不能够得到所要查找的学生信息。解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息。2、检查当我们在输入查找信息时,看是否我们

11、输入的信息有误,若是这样的话,我们应当仔细输入查找信息。源程序清单和执行结果源代码:#include /*I/O函数*/#include /*其它(qt)说明*/#include /*字符串函数(hnsh)*/#define BUFLEN 100 /* 缓冲区最大字符(z f)数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/struct student /*结构体*/char xuehaoLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */

12、char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */char sushe30; /* 宿舍 */char koukou20; /* qq */ char banjizhiwu30; /* 班级职务 */stuN;int k=1,n,m; /* 定义全局变量 */ /* 函数声明 */void readfile(); /* 刷新函数 */void seek(); /* 查询(chxn)函数 */void modify

13、(); /* 修改(xigi)函数 */void insert(); /* 插入(ch r)函数 */void del(); /* 删除函数 */void display(); /* 显示函数 */void save(); /* 保存函数 */void menu(); /* 菜单界面函数 */int main() while(k)menu(); /* 当k=0,调用menu函数,退出系统*/system(pause);return 0; void help() /*帮助函数*/ printf(n0.欢迎使用系统帮助!n);printf(n1.进入系统后,先刷新学生信息,再查询;n);print

14、f(n2.按照菜单提示键入数字代号;n);printf(n3.增加学生信息后,切记保存按7;n);printf(n4.谢谢您的使用!n); void readfile() /* 刷新函数(建立(jinl)信息) */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);system(pause);exit(0);while(fscanf(fp,%s %s %d %s %s %s %s %s %s %s

15、 %s,stui.xuehao,,&stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou, stui.banjizhiwu)=11)i+;i=i;fclose(fp);n=i;printf(录入(l r)完毕!n); void seek() /*查找(ch zho)*/int i,item,flag;char s121;/* 以姓名(xngmng)和学号最长长度+1为准 */printf(n);printf(1.按学号查询n);printf(2.按姓名查询n);print

16、f(3.退出本菜单n);printf(n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);flag=0;switch(item)case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.xuehao,s1)=0)flag=1;printf( 学号 姓名 年龄 性别 出生年月 地址(dzh) 电话 E-mail 宿舍 扣扣 班级职务n);printf(n);printf(%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn,stui.

17、xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);if(flag=0)printf(该学号不存在(cnzi)!n); break;case 2:printf(请输入要查询(chxn)的学生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(,s1)=0)flag=1;printf( 学号 姓名 年龄(ninlng) 性别 出生年月 地址 电话 E-mail 宿舍 扣扣

18、 班级职务n);printf(n);printf(%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn,stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);if(flag=0)printf(该姓名(xngmng)不存在!n);break;case 3:return; default:printf(请在1-3之间选择(xunz)n); void modify() /*修改(x

19、igi)信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名(xngmng)和学号最长长度+1为准 */printf(请输入要要修改的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.xuehao,s1)=0) /*比较字符串是否相等*/num=i;printf(n);printf(1.修改姓名n);printf(2.修改年龄n);printf(3.修改性别n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改(xigi)电话号码n);printf

20、(7.修改(xigi)E-mail地址n);printf(8.修改宿舍(ssh)地址n);printf(9.修改扣扣号n);printf(10.修改班级职务名称n);printf(11.退出本菜单n);printf(n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);switch(item)case 1:printf(请输入新的姓名:n);scanf(%s,s2);strcpy(,s2); break;case 2:printf(请输入新的年龄:n);scanf(%d,&stunum.age);break;case 3:printf(

21、请输入新的性别:n);scanf(%s,sex1);strcpy(stunum.sex,sex1);break;case 4:printf(请输入(shr)新的出生年月:n);scanf(%s,s2);strcpy(stunum.time,s2);break;case 5:printf(请输入(shr)新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2);break;case 6:printf(请输入(shr)新的电话号码:n);scanf(%s,s2);strcpy(stunum.tel,s2);break;case 7:printf(请输入新的E-mail地

22、址:n);scanf(%s,s2);strcpy(stunum.mail,s2); break; case 8:printf(请输入新的宿舍地址:n);scanf(%s,s2);strcpy(stunum.sushe,s2); break;case 9:printf(请输入(shr)新的扣扣号:n);scanf(%s,s2);strcpy(stunum.koukou,s2); break;case 10:printf(请输入新的班级(bnj)职务名称:n);scanf(%s,s2);strcpy(stunum.banjizhiwu,s2); break;case 11:return;defau

23、lt:printf(请在1-11之间选择(xunz)n); void sort()/*按学号排序*/ int i,j,*p,*q,s; char temp10; for(i=0;ii;j-) if(strcmp(stuj-1.xuehao,stuj.xuehao)0) strcpy(temp,stuj-1.xuehao); strcpy(stuj-1.xuehao,stuj.xuehao); /*比较(bjio)学号的大小,交换学号*/ strcpy(stuj.xuehao,temp); strcpy(temp,); strcpy(,stuj.nam

24、e); /*同时,交换(jiohun)姓名*/ strcpy(,temp); strcpy(temp,stuj-1.sex); strcpy(stuj-1.sex,stuj.sex); /*同时(tngsh),交换性别*/ strcpy(stuj.sex,temp); strcpy(temp,stuj-1.time); strcpy(stuj-1.time,stuj.time); /*同时,交换出生年月*/ strcpy(stuj.time,temp); strcpy(temp,stuj-1.add); strcpy(stuj-1.add,stuj.add); /*同时,交换

25、家庭住址*/ strcpy(stuj.add,temp); strcpy(temp,stuj-1.tel); strcpy(stuj-1.tel,stuj.tel); /*同时,交换电话号码*/ strcpy(stuj.tel,temp); strcpy(temp,stuj-1.mail); strcpy(stuj-1.mail,stuj.mail); /*同时(tngsh),交换E-mail地址 */ strcpy(stuj.mail,temp); strcpy(temp,stuj-1.sushe); strcpy(stuj-1.sushe,stuj.sushe); /*同时,交换(jioh

26、un)宿舍地址*/ strcpy(stuj.sushe,temp); strcpy(temp,stuj-1.koukou); strcpy(stuj-1.koukou,stuj.koukou); /*同时(tngsh),交换qq号*/ strcpy(stuj.koukou,temp); strcpy(temp,stuj-1.banjizhiwu); strcpy(stuj-1.banjizhiwu,stuj.banjizhiwu); /*同时,交换班级职务名称*/ strcpy(stuj.banjizhiwu,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *

27、q=*p; *p=s; void insert() /*插入(ch r)函数*/ int i=n,j,flag; printf(请输入待增加(zngji)的学生数:n); scanf(%d,&m); do flag=1; while(flag) flag=0; printf(请输入(shr)第 %d 个学生的学号:n,i+1); scanf(%s,stui.xuehao); for(j=0;ji;j+) if(strcmp(stui.xuehao,stuj.xuehao)=0) printf(已有该学号,请检查后重新录入!n); flag=1; break; /*如有重复立即退出该层循环,提高

28、判断速度*/ printf(请输入第 %d 个学生的姓名:n,i+1); scanf(%s,); printf(请输入第 %d 个学生(xu sheng)的年龄:n,i+1); scanf(%d,&stui.age); printf(请输入第 %d 个学生(xu sheng)的性别:n,i+1); scanf(%s,stui.sex); printf(请输入第 %d 个学生(xu sheng)的出生年月:(格式:年.月)n,i+1); scanf(%s,stui.time); printf(请输入第 %d 个学生的地址:n,i+1); scanf(%s,stui.add);

29、printf(请输入第 %d 个学生的电话:n,i+1); scanf(%s,stui.tel); printf(请输入第 %d 个学生的E-mail:n,i+1); scanf(%s,stui.mail); printf(请输入第 %d 个学生的宿舍地址:n,i+1); scanf(%s,stui.sushe); printf(请输入第 %d 个学生的扣扣号:n,i+1); scanf(%d,stui.koukou); printf(请输入第 %d 个学生的班级职务名称:n,i+1); scanf(%s,stui.banjizhiwu); if(flag=0) i=i;i+; while(i

30、n+m); n+=m; printf(录入(l r)完毕!nn); sort(); void del() /* 删除(shnch)函数 */int i,j,flag=0;char s1LEN+1;printf(请输入要删除(shnch)学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.xuehao,s1)=0) flag=1;for(j=i;jn-1;j+)stuj=stuj+1;if(flag=0)printf(该学号不存在!n);if(flag=1)printf(删除成功,显示结果请选择(xunz)菜单6n);n-; void displ

31、ay() /*显示(xinsh)函数*/ int i;printf(所有(suyu)学生的信息为:n);printf( 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail 宿舍 扣扣 班级职务n);printf(n);for(i=0;in;i+) printf(%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn,stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);

32、 void save() /*保存(bocn)函数*/int i;FILE *fp;fp=fopen(student.txt,w); /*写入*/for(i=0;in;i+)fprintf(fp,%s %s %d %s %s %s %s %s %s %s %sn,stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);fclose(fp);printf(保存(bocn)成功); void menu()/* 菜单界面(

33、jimin)函数 */int num;printf(系统功能菜单 n);printf(友情提醒:查询前请先刷新系统! n);printf( n);printf( n);printf( * 0.系统帮助及说明 * 1.刷新(shu xn)学生信息 n);printf( n); printf( * 2.查询学生(xu sheng)信息 * 3.修改学生信息 n);printf( n);printf( * 4.增加学生(xu sheng)信息 * 5.按学号删除信息 n);printf( n);printf( * 6.显示当前信息 * 7.保存当前学生信息 n);printf( n);printf(

34、 * 8.退出系统 n);printf( n);printf( n);printf(请选择菜单编号:);scanf(%d,&num);switch(num) case 0:help(); /*选0,调用帮助(bngzh)函数*/ break; case 1:readfile(); /*选1,调用(dioyng)刷新函数*/ break; case 2:seek(); /*选2,调用查询(chxn)函数*/ break; case 3:modify(); /*选3,调用修改函数*/ break; case 4:insert(); /*选4,调用插入函数*/ break; case 5:del(); /*选5,调用删除函数*/ break; case 6:display(); /*选6,调用显示函数*/ break; case 7:s

温馨提示

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

评论

0/150

提交评论