协会会员管理系统.docx
《协会会员管理系统.docx》由会员分享,可在线阅读,更多相关《协会会员管理系统.docx(20页珍藏版)》请在冰点文库上搜索。
![协会会员管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-6/14/267d8648-202b-4efd-9a87-485503c91f62/267d8648-202b-4efd-9a87-485503c91f621.gif)
协会会员管理系统
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2011年春季学期
C程序设计课程设计
题目:
协会会员管理系统
专业班级:
姓名:
学号:
指导教师:
周小健
成绩:
_________________
摘要
协会会员管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以协会会员管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来各个协会基本上都是靠传统的人工方式来管理协会信息,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。
随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。
而作为计算机应用的一部分,使用计算机对会员进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高协会会员管理的效率,也是协会的科学化、正规化管理和与世界接轨的重要条件。
协会会员管理系统作为一种管理软件正在各协会中得到越来越广泛的应用,且已达到了良好效果。
关键字:
协会会员管理系统效率检索迅速管理软件
目录
一、需求分析4
二、总体设计5
三、详细设计6
1、数据定义6
2、算法流程图6
四、编码10
五、测试11
六、设计总结13
致谢14
参考文献15
附录116
一、需求分析
协会会员管理系统:
1、问题描述
对协会的会员进行管理,包括插入、删除、查找、排序等功能。
2、要求
会员对象包括姓名(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、电话(字符串)等信息。
(1)新增一名会员:
将新增会员对象按姓名以字典方式会员管理文件中。
(2)删除一名会员:
从会员管理文件中删除一名会员对象。
(3)查询:
从管会员理文件中查询符合某些条件的会员。
(4)添加:
增加某个会员对象。
(5)打印:
按某种需要对会员对象文件进行打印。
3、实现功能
(1)由键盘输入会员对象,以文件方式保存。
程序执行时先将文件读入内存。
(2)对对象中的“姓名”按字典顺序进行排序。
(3)对排序后的会员对象进行增、删、查询、修改、打印等操作。
二、总体设计
1、输入功能的实现:
要想实现会员管理系统的输入,必须要建立一个会员信息系统的抽象数据类型,其中会员信息以链表的存储方式实现。
由键盘输入会员对象,以文件方式保存。
程序执行时先将文件读入内存。
2、系统处理功能的实现:
系统管理员根据协会的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。
如对会员对象中的"姓名"按字典顺序进行排序;对排序后的会员对象进行增、删、查询、修改、打印等操作。
3、输出的实现:
根据选择的操作,输出与之对应的信息。
综上可以绘制出管理会员信息功能的系统流程图,如图1所示
图1系统流程图
根据会员管理系统问题的分析和设计要求,可以得到该会员管理系统可以分为五个模块:
会员信息添加模块、会员信息修改模块、会员信息删除模块、会员信息查询模块、会员信息排序模块。
其系统功能结构如图2所示。
图2系统功能图
三、详细设计
3.1数据定义
structperson
{
charname[20];//定义名称
charsex[4];//定义性别
charyuanxi[20];//定义院系
charzhuanye[20];//定义专业
chartechang[20];//定义特长
charzhuangtai[20];//定义状态
intage;//定义年龄
intnumber;//定义会员编号
};
3.2算法流程图
1)保存函数Save()的算法流程图如图3所示。
图3保存函数Save()的算法流程图
2)查询函数search()的算法流程图如图所示。
图4查询函数search()的算法
3)对输入的信息进行寻找、并进行输出。
图5查询并输出所查询的信息
图6会员信息查看系统
3.3模块设计
在我们设计的程序中:
首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声名部分,用structemploee结构体存储和录入该程序的所有数据,并把信息写到文件emp.dat中,保存在磁盘中方便以后使用。
主函数部分包括设计的全部信息,有指导教师、设计者以及设计时间,之后是输出主菜单和调用函数,退出程序。
此程序中包含的功能有:
输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块,各个功能设计如下:
输入模块:
该模块是实现对会员号姓名岗位扣除实发的录入并保存到文件“emp”中。
模块中运用voidinput()调用函数展开对文件的使用。
模块首先定义一个指针文件,又以写的方式打开此文件,在打开的文件中输入要管理的会员人数,用一个for循环按照职会员号姓名岗位扣除实发的格式循环获取会员的记录,接着又用了一个for循环将会员记录写入文件“emp”中,关闭文件。
查询模块:
实现按会员号查询每个会员的信息,查询显示:
会员号姓名岗位扣除实发。
模块开始是一个二级子菜单,一个是实现按会员号查询,另一个是选择退出返回主菜单,此处是利用switch选择语句。
选择按会员号查询,首先是以只读的方式打开文件“emp”,然后输入要查询的会员号,用一个for循环来控制查询的人数,之后在显示器上显示会员信息,程序如下:
printf("会员号姓名岗位扣除实发\n");printf("%6d%9s%6d%6d%6d%6d\n",emp[i].no,emp[i].name,emp[i].post-wage,emp[i].prize,emp[i].deduct,emp[i].netpay);然后关闭文件。
查询会员信息
已完成。
修改模块:
该模块实现按会员号对会员所有信息的修改。
模块开始是一个二级子菜单,一个是按会员号修改,另一个是选择退出返回主菜单,此处是利用switch选择语句。
选择按会员号修改,首先是以读写的方式打开文件“emp”。
输入要修改的会员号,用一个for循环来控制输入的数量,循环如下:
for(i=0;fread(&emp[i],sizeof(structemploee),1,fp);i++)
if(!
strcmp(emp[i].no,num))break;
则会出现该会员的信息如下:
printf("记录号会员号姓名性别年龄工资\n");
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,emp[i].age,emp[i].salar);
然后对会员的信息进行修改,就可获得新的会员记录。
之后文件指针指向该修改的记录开头,此时用newemp覆盖当前记录,修改完成时系统会显示修改后的文件数据:
记录号、会员号、姓名、性别、年龄、工资,然后关闭文件。
修改会员信息已完成。
删除模块:
该模块实现按会员号对会员所有信息的删除。
模块开始是一个二级子菜单,一个是按会员号删除记录,另一个是选择退出返回主菜单,此处是利用switch选择语句。
选择按会员号删除记录,首先是只读的方式打开一个二进制文件“emp”。
就会显示删除前的会员信息程序如下:
printf("删除前:
\n");
printf("记录号会员号姓名性别年龄工资\n");
for(n=0;fread(&emp[n],sizeof(structemploee),1,fp);n++)
printf("%6s%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,emp[n].age,emp[n].salar);
输入要删除的会员号,如果存在由fp=fopen("emp","w+");
if(n==1)
{
fclose(fp);
exit(3);
执行删除命令:
使用for(j=i+1;jfwrite(&emp[j],sizeof(structemploee),1,fp);循环依次改后会员信息写入文件,显示删除后文件中的会员信息。
最后可以关闭文件,删除会员信息已完成。
统计模块:
根据输入的工资,显示大于该工资的会员的所有信息。
模块中运用voidstat()调用函数展开对文件的使用。
首先是以只读的方式打开文件“emp”。
输入会员的工资数,运用for循环根据输入的工资,显示大于该工资的会员的所有信息。
关闭文件,统计完成。
输出模块:
该模块实现按会员号输出会员的所有信息。
在该模块中运用voidoutput()调用函数展开对文件的使用。
首先以只读的方式打开一个文本文件”emp”。
操作无误则用for循环输出正在查询会员的:
记录号会员号姓名性别年龄工资。
这些完成后用fclose(fp)函数关闭文件。
模块运行结束。
追加模块:
该模块实现添加会员的信息。
在该模块中运用voidrun()调用函数
展开对文件的使用。
首先以读写的方式为读写打开一个二进制的文件“emp”。
输出“要追加的会员人数”待输入要追加的个数后,用for循环控制待输入的会员信息。
用fwrite(&newemp,sizeof(structemploee),1,fp)将该会员记录写入文件。
用fclose(fp)函数关闭文件,模块运行结束。
四、编码
该会员管理系统在MicrosoftVisualStudioc++程序下运行,可实现对会员的增加、查询、修改、打印,实现对会员信息的快速操作。
1、增加会员信息
2、查询会员信息
3、修改会员信息
4、打印会员信息
5、输出会员信息
6、统计会员信息
7、删除会员信息
五、测试
1.程序的初始界面
对程序的功能进行选择
输入会员信息
打印会员信息
六、设计总结
接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。
在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。
程序中包括主函数、输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块。
其中在输入模块中指针文件运用的比较好,因为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。
在程序设计中我们最大的收获就是:
我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。
不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!
让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。
美中不足的就是:
由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。
而且本程序还处于初级阶段的职工工资管理功能中,只实现了对会员信息的录入、修改、查询、统计、显示等简单功能,功能较简单,不一定在实际中有大的用途,程序编排中可能有烦琐之处有待进一步简化。
致谢
进入大学,系统的学习了c语言程序设计这门课,让我对程序设计这门课有了更深一步的理解,能够把自己所学用于生活,这是一件很让人开心的事。
我会在以后的学习生活中努力的锻炼自己,开动脑筋,用心思维,使自己在c语言程序设计这门课上有更一步的进步。
在此感谢,此次课程设计中给予指导的周小健老师和各位同学的帮助,使我们终于圆满的完成了这次课设。
参考文献
1.姜灵芝,余健.C语言课程设计案例精编.北京:
清华大学出版社,2008
2.王新,孙雷.C语言课程设计.北京:
清华大学出版社,2009
3.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:
清华大学出版社,2011
4.王连相.C/C++程序设计上机指导与测试.北京:
中国铁道出版社,2006
5.C语言函数手册,机械工业出版社,1999
附录1
#include
#include
#include
structnode
{
charname[20];//定义名称
charsex[4];//定义性别
charyuanxi[20];//定义院系
charzhuanye[20];//定义专业
chartechang[20];//定义特长
charzhuangtai[20];//定义状态
intage;//定义年龄
intnumber;//定义会员编号
}
xh[200];
intmenu();
intinput();
voidfind(int);
intinsert(int);
voidprint(int);
voidmain()
{
intc=0,d=0;
while
(1)
{
switch(menu())
{
case1:
c=input();break;
case2:
find(c);break;
case3:
c=insert(c);break;
case4:
print(c);break;
case5:
exit(0);
}
}
}
menu()
{
intd;
system("cls");
printf("\n");
printf("\t协会会员管理系统\n");
printf("\t!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
\n");
printf("\t|1|输入会员信息。
\n");
printf("\t|2|指定查找会员。
\n");
printf("\t|3|添加会员信息。
\n");
printf("\t|4|打印会员信息。
\n");
printf("\t|5|退出。
\n");
printf("\t!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
\n\n");
printf("\t请选项:
");
scanf("%d",&d);
returnd;
}
input()//输入会员信息
{
inti,n;
printf("\n");
printf("输入会员人数:
\n");
scanf("%d",&n);
for(i=0;i{
printf("名称:
",i+1);
scanf("%s",xh[i].name);
getchar();
printf("性别:
",i+1);
scanf("%s",xh[i].sex);
getchar();
printf("年龄:
",i+1);
scanf("%d",&xh[i].age);
printf("状态:
",i+1);
scanf("%s",xh[i].zhuangtai);
getchar();
printf("会员编号:
",i+1);
scanf("%d",&xh[i].number);
printf("专业:
",i+1);
scanf("%s",&xh[i].zhuanye);
getchar();
printf("院系:
",i+1);
scanf("%s",xh[i].yuanxi);
getchar();
printf("特长:
",i+1);
scanf("%s",xh[i].techang);
getchar();
printf("\n\n");
}
returnn;
}
voidfind(intc)//按名称指定查找会员信息
{
inti;
chara[20];
printf("\n");
printf("请输入查找名称:
\n");
scanf("%s",a);
getchar();
for(i=0;i{
if(strcmp(a,xh[i].name)==0)
{
printf("会员性别:
");
printf("%s\n",xh[i].sex);
printf("会员年龄:
");
printf("%d\n",xh[i].age);
printf("状态:
");
printf("%s\n",xh[i].zhuangtai);
printf("会员编号:
");
printf("%d\n",xh[i].number);
printf("专业:
");
printf("%s\n",xh[i].zhuanye);
printf("院系:
");
printf("%s\n",xh[i].yuanxi);
printf("特长:
");
printf("%s\n",xh[i].techang);
system("pause");
getchar();
}
}
}
insert(intc)//添加会员信息
{
inti,j;
system("cls");
printf("\n");
printf("添加会员人数:
\n");
scanf("%d",&j);
getchar();
for(i=0;i{
printf("会员名称:
",i+1);
scanf("%s",xh[c].name);
getchar();
printf("会员性别:
",i+1);
scanf("%s",xh[c].sex);
getchar();
printf("会员年龄:
",i+1);
scanf("%d",&xh[c].age);
printf("状态:
");
printf("%s\n",xh[i].zhuangtai);
printf("会员编号:
");
printf("%d\n",xh[i].number);
printf("专业:
");
printf("%s\n",xh[i].zhuanye);
printf("院系:
");
printf("%s\n",xh[i].yuanxi);
printf("特长:
");
printf("%s\n",xh[i].techang);
printf("\n\n");
c++;
}
returnc;
}
voidprint(intc)//打印会员信息
{
inti;
system("cls");
getchar();
printf("\t打印所有会员信息\n");
printf("*************************************************************************\n");
printf("名称\t性别\t年龄\t状态\t会员编号\t专业\t院系\t特长\n");
printf("****************************************************************************\n");
for(i=0;i{
printf("%6s%4s%8d%8s%8d%8s%8s%8s%8s\n",xh[i].name,xh[i].sex,xh[i].age,xh[i].zhuangtai,xh
[i].number,
xh[i].zhuanye,xh[i].yuanxi,xh[i].techang);
printf("***********************************************************************\n");
}
system("pause");
getchar();
}