《新学生信息管理计划系统C语言知识课程规划设计方案介绍书.doc》由会员分享,可在线阅读,更多相关《新学生信息管理计划系统C语言知识课程规划设计方案介绍书.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、+*实践教学* 兰州理工大学软件学院2013年秋季学期 计算机应用基础 课程设计题 目:学生信息管理系统专业班级: 软件1班 姓 名: 陈静 学 号: 13700146 指导教师: 任旭鹏 成 绩:_ 摘要 此次我们设计的是学生信息管理系统,在程序中运行学生信息创建模块,列出模块,删除模块,查找模块,保存模块等,在程序中用到了选择结构,循环结构,结构体,数组,文件操作,自定义函数等。关键词:结构体;文件操作;数组; 循环结构;选择结构;自定义函数目 录1需求分析12总体设计12.1程序的总体设计12.2数据结构23详细设计43.1主控模块设计43.2列出模块54主要函数功能描述64.1 主函数
2、main()64.2列出函数print_list()75测试与调试86个人设计小结与心得体会11参考文献11附件1 程序源代码111需求分析(1)问题根据需求,该系统所应包含的信息有以下一些:息学生的基本信:学号、姓名、性别、QQ、电话根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:学生基本信息录入。各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改学生信息中张三的电话信息各种基本数据的删除。例如将张三的信息从学生信息中删除基于各种数据的查询。例如输入学号1,查询学号为1的名字、性别、QQ和电话。各种基本信息的浏览。例如对保存的学生信息的浏览。(2)系统
3、 采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。(3)运行要求 能不受限制的录入学生信息。 界面友好,操作方便,例如删除前需要提示用户是否删除。 容错性强,例如数据导出时,如果文件不存在需要提示用户。2总体设计2.1程序的总体设计在系统设计方面需采用模块化,把一个复杂的问题简单化,化成几个简单的模块来处理,.但是在划分的同时又必须要了解各自的功能,它们之间应该有自己的独立性,同时又存在相互的联系.通讯记录时以二进制的形式进行存储和输入,一般程序从整体到部分,先进行整体概括,然后在逐步细化完善本系统由一个图来表示为主菜单创建删除列出保存插入查找修改退出图1系统总
4、图本通讯管理系统可以概括的划分为以下几大模块:1 输入创建模块2 列出菜单模块3 删除数据模块4 修改数据模块5 查找数据模块6 插入数据模块7 保存数据模块8 退出系统2.2数据结构根据系统要求,系统中需要保存的数据学生的信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注学生学号numint学生姓名namechar10学生QQqqchar10学生性别sexint学生电话phoneint 使用语言创建的结构体如下:#include#include#includeint num; /*学生学号*/ char name10; /*学生姓名*/ char qq10; /*学生QQ*/ i
5、nt sex; /*学生性别*/ int phone; /*学生电话*/ LIST;LIST L100;int main(void)void revise_list () /*自定义函数-修改数组*/ void print_list() /*自定义函数-列出菜单*/void delete_list() /*自定义函数-删除文件*/void insert_list() /*自定义函数-创建文件*/void find_list() /*自定义函数-查找文件*/ void into_list() /*自定义函数-插入文件*/void save_list() /*自定义函数-保存文件*/3详细设计3.
6、1主控模块设计 调用子函数结束创建修改删除列出查找插入保存退出输入选择开始密码界面菜单界面控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如下图 1 2 3 4 5 6 7 0 图2主模块流程图注释1主控是用switch多分支选择结构来实现功能选择3.2列出模块列出模块是通过循环结构变化个个列出数组自定义数组Lkey信息 i+结束输出一个记录ikeyinti; i=0开始 图3列出模块流程图4主要函数功能描述4.1 主函数main()函数原型:#include#include#include#define EXIT -1#define LEN sizeof(struct
7、list)int key=0; /*stdlib-标准库头文件.sizeof-运算符.string-字符串.typedef-定义类型*/typedef struct list int num; /*学生学号*/ char name10; /*学生姓名*/ int qq; /*学生QQ*/ char sex10; /*学生性别*/ long int phone; /*学生电话*/ LIST;LIST L100;int main(void) /*主函数*/ int choice,y; printf(ttt*学生信息管理系统*); printf( 请输入密码:); scanf(%d,&y); if(
8、y=123) do printf(nnnttt*学生信息管理系统*); printf(ntttt*=*n); printf( tttt 1.*创建*n); printf( tttt 2.*列出*n); printf( tttt 3.*删除*n); printf( tttt 4.*修改*n); printf( tttt 5.*查找*n); printf( tttt 6.*插入*n); printf( tttt 7.*保存*n); printf( tttt 0.*退出*n); printf( tttt 请选择:); scanf(%d,&choice); switch(choice) case 1:
9、insert_list();break; case 2:print_list();break; case 3:delete_list();break; case 4:revise_list(); break; case 5:find_list();break; case 6:into_list();break; case 7:save_list();break; case 0:exit(0); default:printf(input againn); while(1); else printf(密码错误!请重启程序!); fflush(stdin); getchar(); return 0;
10、 功能描述:通过if选择结构实现加密正确输入密码后进入主菜单,否则提示“密码密码错误!请重启程”进入主菜单后用switch多分支选择结构来调用子函数来实现对学生信息的创建、修改、插入等。流程图如图2所示。4.2列出函数print_list()函数原型:void print_list() /*列出菜单*/ int i; for(i=0;ikey;i+) printf(学号t姓名tQQ号 t性别t电话tn); printf(%dt%st%d t%st%dn ,Li.num,Li.name,Li.qq,Li.sex,Li.phone); if(key=0) printf(the shuzu is N
11、ULL!n); 功能描述:通过for循环结构改变i的值调用Li保存的值逐个显示。流程图如图3所示5测试与调试1主程序测试测试数据:输入密码123图4测试结果:程序运行没有错误,如下 图5菜单选项测试:输入数据请选择:1图6测试结果:程序运行没有错误,如下图72列出测试测试数据:输入2,如下图8测试结果程序运行有错误,如下 图9错误是性别、电话没有对其修改后如下图106个人设计小结与心得体会为期一个星期的C语言实训结束了,在这一个星期内我的感触颇深。因为在写程序中实在是遇到了太多的困难了,这让我意识到自己对C语言知识的贫乏。我们只学会了简单的指针和函数,这些应付考试是绝对没有问题了的,然而应用在
12、实际的程序设计当中却是远远不够的。可想而知,验收过程很不满意,这让我觉得很对不起老师的一番含辛茹苦。所以哪怕我的验收过程不是很理想都好,我交实训报告的时候也一定要把这个学生信息管理系统理解透彻!在整个编程过程中,我坚持虚心的向同学请教问题,同时自己也在网上查找各种信息,通过不断地改正,我终于知道编好一个完美的程序是多么的不容易啊!同时,在不断的犯错中,我也了解了许多以前不知道的东西。做得不好的,也请老师多多见谅,以后我一定会好好改进的!最后,衷心地多谢老师辛苦的指导!参考文献【1】姜灵芝,余健. C语言课程设计案例精编.北京:清华大学出版社,2008【2】王新,孙雷. C语言课程设计.北京:清
13、华大学出版社,2009【3】游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,2011【4】王连相.C/C+程序设计上机指导与测试. 北京:中国铁道出版社,2006【5】C语言函数手册,机械工业出版社,1999附件1 程序源代码#include#include#include#define EXIT -1#define LEN sizeof(struct list)int key=0; /*stdlib-标准库头文件.sizeof-运算符.string-字符串.typedef-定义类型*/typedef struct list int num; /*学生学号*/ ch
14、ar name10; /*学生姓名*/ int qq; /*学生QQ*/ char sex10; /*学生性别*/ long int phone; /*学生电话*/ LIST;LIST L100;void revise_list () /*修改数组(revise-修改)*/ int i,j,k; int num; char name10; int qq; char sex10; long int phone; printf(请选择修改项学号); scanf(%d,&j); for(k=0;kkey;k+) if(j=Lk.num) break; printf(您要修改成为:); printf(
15、tt学号tt); scanf(%d,&num); printf(tt姓名tt); scanf(%s,name); printf(ttQQ号tt); scanf(%d,&qq); printf(tt性别tt); scanf(%s,sex); printf(tt电话tt); scanf(%d,&phone); Lk.num=num; strcpy(Lk.name,name); /*拷贝字符串*/ Lk.qq=qq; strcpy(Lk.sex,sex); Lk.phone=phone;void print_list() /*列出菜单*/ int i; for(i=0;ikey;i+) printf
16、(学号t姓名tQQ号 t性别t电话tn); printf(%dt%st%d t%st%dn ,Li.num,Li.name,Li.qq,Li.sex,Li.phone); if(key=0) printf(the shuzu is NULL!n); void delete_list() /*删除文件*/ int i,j,k; printf(您要删除的是:n); scanf(%d,&j); for(k=0;k=key) printf(您输入的数据有误,请重新输入:); for(i=k;ikey;i+) Li=Li+1; key-; void insert_list() /*创建文件*/ int
17、num; char name10; int qq; char sex10; long int phone; printf(tt学号tt); scanf(%d,&num); printf(tt姓名tt); scanf(%s,name); printf(ttQQ号tt); scanf(%d,&qq); printf(tt性别tt); scanf(%s,sex); printf(tt电话tt); scanf(%d,&phone); Lkey.num=num; strcpy(Lkey.name,name); Lkey.qq=qq; strcpy(Lkey.sex,sex); Lkey.phone=ph
18、one; key+;void find_list() /*查找文件*/ int i,num; printf(请输入你要查找的学号:); scanf(%d,&num); for (i=0;i=key) printf(无此人信息,请重新选择:); void into_list() /*插入文件*/ int i,j,k; int num;char name10; int qq; char sex10; long int phone; printf(ttt您要插入项是:t); scanf(%d,&j); if (j0&j=j;i-) Li=Li-1; key+; printf(请输入你要插入的内容:n
19、); printf(tt学号tt); scanf(%d,&num); printf(tt姓名tt); scanf(%s,name); printf(ttQQ号tt); scanf(%d,&qq); printf(tt性别tt); scanf(%s,sex); printf(tt电话tt); scanf(%d,&phone); k=j-1; Lk.num=num; strcpy(Lk.name,name); Lk.qq=qq; strcpy(Lk.sex,sex); Lk.phone=phone; else printf(error); void save_list() /*保存文件*/ int
20、 i; FILE *fp; if(fp=fopen(file.txt,wb)=NULL) printf(不能打开文件n); return; for(i=0;ikey;i+) if(fwrite(&Li,LEN,1,fp)!=1); fclose(fp); int main(void) /*主函数*/ int choice,y; printf(ttt*学生信息管理系统*); printf( 请输入密码:); scanf(%d,&y); if(y=123) do printf(nnnttt*学生信息管理系统*); printf(ntttt*=*n); printf( tttt 1.*创建*n);
21、printf( tttt 2.*列出*n); printf( tttt 3.*删除*n); printf( tttt 4.*修改*n); printf( tttt 5.*查找*n); printf( tttt 6.*插入*n); printf( tttt 7.*保存*n); printf( tttt 0.*退出*n); printf( tttt 请选择:); scanf(%d,&choice); switch(choice) case 1:insert_list();break; case 2:print_list();break; case 3:delete_list();break; case 4:revise_list(); break; case 5:find_list();break; case 6:into_list();break; case 7:save_list();break; case 0:exit(0); default:printf(input againn); while(1); else printf(密码错误!请重启程序!); fflush(stdin); getchar(); return 0;
限制150内