电子工程系 课设计报告
课 程 名 称:程序设计综合应用
设 计 题 目:工会成员信息管理系统设计 指导 教师 组: 组长学号姓名: 组员学号姓名: 第一章:引言: 问题分析:
由于题目要求是录入工会成员信息,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、录入、修改、查找、删除工会成员信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。
设计目标:
(1) 加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
(2) 学会设计数据结构。其中包括对结构数组、数据文件等知识的运用。 (3) 提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。 (4) 训练C程序调试能力,能将一个中小型各级组织系统联调通过。 (5) 开发一个中小型系统,掌握系统研发全过程。 (6) 培养分析问题、解决实际问题的能力。 基本功能:
(1). 工会成员信息录入功能(职工信息用文件保存),,输入
(2). 工会成员信息浏览功能 (3). 工会成员信息查询功能 查询方式 按婚否查询 按子女个数查询
(4). 修改工会成员信息并保存 (5). 删除工会成员信息 扩展功能:
在基本要求达到后,可进行创新设计,如对菜单进行美化。 研究思路:
主要是根据资料的方法,进行修改,改进而做出来的程序。 此程序的主要功能有一个菜单将在实现的功能显示出来,并有选择提示;系统包含姓名,性别,出生年月,学历,是否婚配,子女个数,电话;有错误提示功能;有输入功能;能够输出所有联系人的信息清单;能够按姓名或号码查询某一个联系人的信息;能够修改某一个联系人的信息;能够删除某个联系人的信息等功能。
第二章:总体设计 程序功能结构图: 工会成员信息管理系统 浏查删添修退录
览询除加改出入 信信信信信信 息息息息息息 程序的功能分析:
(1). 工会成员信息录入功能(职工信息用文件保存),,输入 (2). 工会成员信息浏览功能 (3). 工会成员信息查询功能 查询方式
按婚否查询 按子女个数查询
(4). 修改工会成员信息并保存
(5). 删除工会成员信息 系统体系结构:
#include struct employee { int num; char name[20]; char sex; int age; char xueli[30]; int wage; char addr[30]; char tel[20]; }em[100]; void menu(); void input(); void save(int); void display(); void del(); void add(); void search(); void search_num(); void search_xueli(); void search_tel(); void modify(); void main() { menu(); int n,flag; char a; do { printf(\"请选择你需要操作的步骤(1--7):\\n\"); scanf(\"%d\if(n>=1&&n<=7) { flag=1; break; } else { flag=0; printf(\"您输入有误,请重新选择!\"); } } while(flag==0); while(flag==1) { switch(n) { case 1:printf(\"输入工会成员信息\\n\");printf(\"\\n\");input();break; case 2:printf(\"浏览工会成员信息\\n\");printf(\"\\n\");display();break; case 3:printf(\"按公会工号查询工会成员信息\\n\");printf(\"\\n\");search();break; case 4:printf(\"删除工会成员信息\\n\");printf(\"\\n\");del();break; case 5:printf(\"添加公会工会成员信息\\n\");printf(\"\\n\");add();break; case 6:printf(\"修改工会成员信息\\n\");printf(\"\\n\");modify();break; case 7:exit(0);break; default :break; } getchar(); printf(\"\\n\"); printf(\"是否继续进行(y or n):\\n\"); scanf(\"%c\if(a=='y') { flag=1; system(\"cls\"); menu(); printf(\"请再次选择你需要操作的步骤(1--7):\\n\"); scanf(\"%d\printf(\"\\n\"); } else exit(0); } } void menu() { printf(\" ************欢迎进入工会成员信息管理系统**********\\n\"); printf(\" 1.录入工会成员信息\"); printf(\" 2.浏览工会成员信息\\n\"); printf(\" 3.查询工会成员信息\"); printf(\" 4.删除工会成员信息\\n\"); printf(\" 5.添加工会成员信息\"); printf(\" 6.修改工会成员信息\\n\"); printf(\" 7.退出\\n\"); printf(\" ********************谢谢使用******************\\n\"); printf(\"\\n\"); printf(\"\\n\"); } void input() { int i,m; printf(\"请输入需要创建信息的公会数(1--100):\\n\"); scanf(\"%d\for (i=0;i printf(\"请输入性别(f--女 m--男): \"); scanf(\"%c\printf(\"请输入出生年月: \"); scanf(\"%d\printf(\"请输入学历: \"); scanf(\"%s\printf(\"是否婚配: \"); scanf(\"%d\printf(\"请输入子女个数: \"); scanf(\"%s\printf(\"请输入电话: \"); scanf(\"%s\printf(\"\\n\"); } printf(\"\\n创建完毕!\\n\"); save(m); } void save(int m) { int i; FILE*fp; if ((fp=fopen(\"employee_list\{ printf (\"cannot open file\\n\"); exit(0); } for (i=0;i int load() { FILE*fp; int i=0; if((fp=fopen(\"employee_list\{ printf (\"cannot open file\\n\"); exit(0); } else { do { fread(&em[i],sizeof(struct employee),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1); } void display() { int i; int m=load(); printf(\" 职工号\\t姓名\\t\\t性别\\t\\t出生年月\\n\"); for(i=0;i printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); for(i=0;i } void del() { int m=load(); int i,j,n,t,flag; char name[20]; printf(\"\\n 原来的工会成员信息:\\n\"); display(); printf(\"\\n\"); printf(\"请输入要删除的工会成员的姓名:\\n\"); scanf(\"%s\ for(flag=1,i=0;flag&&i printf(\"\\n已找到此工会成员,原始记录为:\\n\"); printf(\" 工会成员号\\t姓名\\t\\t性别\\t\\t出生年月 \\n\"); printf(\"\\n %d\\t\\t%s\\t%c\\t\\t%d\\t\\n\ printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); printf(\"\\n %s\\t%d\\t\\t%s\\t%s\\n\ printf(\"\\n确实要删除此人信息请按1,不删除请按0\\n\"); scanf(\"%d\if(n==1) { for(j=i;j strcpy(em[j].name,em[j+1].name); em[j].num=em[j+1].num; em[j].sex=em[j+1].sex; em[j].age=em[j+1].age; strcpy(em[j].xueli,em[j+1].xueli); em[j].wage=em[j+1].wage; strcpy(em[j].addr,em[j+1].addr); strcpy(em[j].tel,em[j+1].tel); } flag=0; } } } if(!flag) m=m-1; else printf(\"\\n对不起,查无此人!\\n\"); printf(\"\\n 浏览删除后的所有工会成员信息:\\n\"); save(m); display(); printf(\"\\n继续删除请按1,不再删除请按0\\n\"); scanf(\"%d\switch(t) { case 1:del();break; case 0:break; default :break; } } void add() { FILE*fp; int n; int count=0; int i; int m=load(); printf(\"\\n 原来的工会成员信息:\\n\"); display(); printf(\"\\n\"); fp=fopen(\"emploee_list\ printf(\"请输入想增加的工会成员数:\\n\"); scanf(\"%d\for (i=m;i<(m+n);i++) { printf(\"\\n 请输入新增加工会成员的信息:\\n\"); printf(\"请输入职工号: \"); scanf(\"%d\ printf(\"\\n\"); printf(\"请输入姓名: \"); scanf(\"%s\getchar(); printf(\"请输入性别(f--女 m--男): \"); scanf(\"%c\printf(\"请输入年龄: \"); scanf(\"%d\printf(\"请输入学历: \"); scanf(\"%s\printf(\"是否婚配: \"); scanf(\"%d\printf(\"请输入子女个数: \"); scanf(\"%s\printf(\"请输入电话: \"); scanf(\"%s\printf(\"\\n\"); count=count+1; printf(\"已增加的工会成员:\\n\"); printf(\"%d\\n\} printf(\"\\n添加完毕!\\n\"); m=m+count; printf(\"\\n浏览增加后的所有工会成员信息:\\n\"); printf(\"\\n\"); save(m); display(); fclose(fp); } void search() { int t,flag; do { printf(\"\\n按工会成员号查询请按1; 按工会成员学历查询请按2; 按工会成员电话号 码查询请按3; 进入主函数请按4\\n\"); scanf(\"%d\if(t>=1&&t<=4) { flag=1; break; } else { flag=0; printf(\"您输入有误,请重新选择!\"); } } while(flag==0); while(flag==1) { switch(t) { case 1:printf(\"按工会成员号查询\\n\");search_num();break; case 2:printf(\"按工会成员学历查询\\n\");search_xueli();break; case 3:printf(\"按工会成员电话号码查询\\n\");search_tel();break; case 4:main();break; default:break; } } } void search_num() { int num; int i,t; int m=load(); printf(\"请输入要查找的职工号:\\n\"); scanf(\"%d\for(i=0;i printf(\" 职工号\\t姓名\\t\\t性别\\t\\t出生年月 \\n\"); printf(\"\\n %d\\t\\t%s\\t%c\\t\\t%d\\t\\n\ printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); printf(\"\\n %s\\t%d\\t\\t%s\\t%s\\n\ break; } if(i==m) printf(\"\\n对不起,查无此人\\n\"); printf(\"\\n\"); printf(\"返回查询函数请按1,继续查询职工号请按2\\n\"); scanf(\"%d\switch(t) { case 1:search();break; case 2: break; default:break; } } void search_xueli() { char xueli[30]; int i,t; int m=load(); printf(\"请输入要查找的工会成员学历:\\n\"); scanf(\"%s\for(i=0;i printf(\"\\n已找到,其记录为:\\n\"); printf(\" 职工号\\t姓名\\t\\t性别\\t\\t出生年月 \\n\"); printf(\"\\n %d\\t\\t%s\\t%c\\t\\t%d\\t\\n\ printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); printf(\"\\n %s\\t%d\\t\\t%s\\t%s\\n\ } if(i==m) printf(\"\\n对不起,查无此人\\n\"); printf(\"\\n\"); printf(\"返回查询函数请按1,继续查询学历请按2\\n\"); scanf(\"%d\switch(t) { case 1:search();break; case 2:break; default :break; } } void search_tel() { char tel[20]; int i, t; int m=load(); printf(\"请输入要查找的电话号码:\\n\"); scanf(\"%s\for(i=0;i printf(\"\\n已找到此人,其记录为:\\n\"); printf(\" 职工号\\t姓名\\t\\t性别\\t\\t出生年月 \\n\"); printf(\"\\n %d\\t\\t%s\\t%c\\t\\t%d\\t\\n\ printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); printf(\"\\n %s\\t%d\\t\\t%s\\t%s\\n\ break; } if(i==m) printf(\"\\n对不起,查无此人\\n\"); printf(\"\\n\"); printf(\"返回查询函数请按1,继续查询电话号码请按2\\n\"); scanf(\"%d\switch(t) { case 1:search();break; case 2:break; default :break; } } void modify() { int num; char name[20]; char sex; int age; char xueli[30]; int wage; char addr[30]; char tel[20]; int b,c,i,n,t,flag; int m=load(); printf(\"\\n 原来的工会成员信息:\\n\"); display(); printf(\"\\n\"); printf(\"请输入要修改的工会成员的姓名:\\n\"); scanf(\"%s\ for(flag=1,i=0;flag&&i printf(\"\\n已找到此人,原始记录为:\\n\"); printf(\" 职工号\\t姓名\\t\\t性别\\t\\t出生年月 \\n\"); printf(\"\\n %d\\t\\t%s\\t%c\\t\\t%d\\t\\n\ printf(\"\\n 学历\\t\\t婚配\\t\\t子女个数\\t\\t电话 \\n\"); printf(\"\\n %s\\t%d\\t\\t%s\\t%s\\n\ printf(\"\\n确实要修改此人信息请按1 ; 不修改请按0\\n\"); scanf(\"%d\if(n==1) { printf(\"\\n需要进行修改的选项\\n 1.职工号 2.姓名 3.性别 4.出生年月 5. 学历 6.婚配 7.子女个数 8.电话\\n\"); printf(\"请输入你想修改的那一项序号:\\n\"); scanf(\"%d\if(c>8||c<1) printf(\"\\n选择错误,请重新选择!\\n\"); } flag=0; } } if(flag==1) printf(\"\\n对不起,查无此人!\\n\"); do { switch(c) { case 1:printf(\"工会成员号改为: \"); scanf(\"%d\em[i-1].num=num; break; case 2:printf(\"姓名改为: \"); scanf(\"%s\ strcpy(em[i-1].name,name); break; case 3:printf(\"性别改为: \"); getchar(); scanf(\"%c\em[i-1].sex=sex; break; case 4:printf(\"出生年月改为: \"); scanf(\"%d\em[i-1].age=age; break; case 5:printf(\"学历改为: \"); scanf(\"%s\ strcpy(em[i-1].xueli,xueli); break; case 6:printf(\"婚配改为: \"); scanf(\"%d\break; case 7:printf(\"子女个数改为: \"); scanf(\"%s\ strcpy(em[i-1].addr,addr); break; case 8:printf(\"电话改为: \"); scanf(\"%s\strcpy(em[i-1].tel,tel); break; } printf(\"\\n\"); printf(\"\\n是否确定所修改的信息?\\n 是 请按1 ; 不,重新修改 请按2: \\n\"); scanf(\"%d\} while(b==2); printf(\"\\n浏览修改后的所有工会成员信息:\\n\"); printf(\"\\n\"); save(m); display(); printf(\"\\n继续修改请按1,不再修改请按0\\n\"); scanf(\"%d\switch(t) { case 1:modify();break; case 0:break; default :break; } } 第三章:详细设计 数据库分析与设计: ***********欢迎进入工会成员信息管理系统*********** 1.录入工会成员信息 2.浏览工会成员信息 3.查询工会成员信息 4.删除工会成员信息 5.添加工会成员信息 6.修改工会成员信息 7.退出 ***********************谢谢使用******************** 请选择你需要操作的步骤<1-7>: 模块功能及算法设计: 电子科技大学成都学院电子工程系 课设计报告 课 程 名 称:程序设计综合应用 设 计 题 目:工会成员信息管理系统设计 指导 教师 组:陈芳 组长学号姓名:伍小琴1140820429 组员学号姓名:徐楚1140820428 系统主界面: ***********欢迎进入工会成员信息管理系统*********** 1.录入工会成员信息 2.浏览工会成员信息 3.查询工会成员信息 4.删除工会成员信息 5.添加工会成员信息 6.修改工会成员信息 7.退出 ***********************谢谢使用******************** 请选择你需要操作的步骤<1-7>: 工会成员信息录入功能: 选择1,首先输入需要创建信息的公会数,然后输入工号数,对应工号数的姓名,性别,出生年月,学历,是否婚配,子女个数,电话,创建完毕,依次输入。 工会成员信息浏览功能: 录入信息后选择2,显示刚才录入的信息 工会成员信息查询功能: 输入3,显示按工会成员号查询请按1,按工会成员学历查询请按2,按工会成员电话号码查询请按3,进入主函数请按4 修改工会成员信息功能: 输入6,显示浏览信息,输入要修改工会成员姓名进行修改,确认后选择1按选项修改,修改完毕仍需确认。 删除工会成员信息功能: 输入4,显示浏览信息,按工会成员姓名删除成员,选择好后需要确认,删除后,只显示各项名称。 测试和调试: 系统存在的问题及解决方案: 我用的是visual C++ 6.0进行编译和测试的,主要观察程序运行的错误及找出错误发生的原因,还有各函数的功能的实现以及部分变量在程序运行时的变化。采取逐个函数测验的方法 ,虽然比较耗时间,但是我实在没有找到可以检查我的海量错误的方法 收获及心得体会: 通过学习和练习C程序的设计基础,学习到了很多关于C的知识。在这次学习过程中,毫无疑问的遇到了很多困惑、疑问,难免心情沮丧,失去耐心,信心受挫,但同学的帮助,老师的解惑和自己的坚持。终于做了出来。看着这一页页的程序,我感受到了成功的喜悦。用一句话来形容一下这几天就是:苦并快乐着。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- kqyc.cn 版权所有 赣ICP备2024042808号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务