第一篇:源代码安全审计系统的服务要求
浩达恒业(北京)科技有限公司
源代码安全审计系统的服务要求
一、技术要求
1、技术的保密性 所有的源代码的安全扫描、分析和加固等工作必须在客户现 场完成,工程师不得将源代码带离现场。
2、技术的熟练性 2.1 熟练掌握运用各种开发语言和开发工具 2.2 熟练掌握 FORTIFY 软件及代码审计平台的维护和使用 2.3 有对大型通信企业应用 Fortify 评估工具进行代码安全评估 的成功实施经验 2.4 具备代码安全分析与评估能力,针对各类问题予以技术解释
3、技术操作接受审查和监督
二、业务系统代码安全审计和咨询服务 2.1 代码安全现场评估和安全编码咨询服务 2.2 电话或邮件方式的代码安全评估相关问题受理 2.3 配合执行各业务系统代码安全审计流程 2.4 提供安全编码技术培训; 2.5 完成现有安全编码等规范文档的更新工作
三、可以交付结果
浩达恒业(北京)科技有限公司 电话-010-62997873 谢春刚 *** E-mail:xiechungang@163.com
1
第二篇:人事管理系统源代码
#include
char xm[7];char xb[3];char sr[15];char whcd[13];char zc[17];char sfzh[19];char lxdh[12];int gl;int nl;};struct member_info member[N+1];int CurrentCount=0;void input(){ char sfjx=1;
while(sfjx!=0)
{
if(CurrentCount==N)
{
printf(“n人数已达上限,不能添加!!n”);
sfjx=0;
}
else
{
CurrentCount++;
printf(“n请输入员工信息(姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称):n”);
scanf(“%s%s%s%d%s%s%s%d%s”,member[CurrentCount].xm,member[CurrentCount].xb,member[CurrentCount].sr,&member[CurrentCount].nl,member[CurrentCount].whcd,member[CurrentCount].lxdh,member[CurrentCount].sfzh,&member[CurrentCount].gl,member[CurrentCount].zc);
printf(“n是否继续(0--结束,其它--继续):”);
scanf(“%d”,&sfjx);
}
} printf(“人员已排序”);int i,j;
for(i=1;i for(j=CurrentCount;j>i;j--) if(strcmp(member[j].sfzh,member[j-1].sfzh)<0) { member[0]=member[j]; member[j]=member[j-1]; member[j-1]=member[0]; } printf(“n 人事基本信息表n”); printf(“ 序号 姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称n”); for(i=1;i<=CurrentCount;i++) printf(“%4d %6s%3s%11s%3d%8s%12s%20s%3d%5sn”,i,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); system(“pause”);} void save(){ FILE *fp; fp=fopen(“ygjbxx.txt”,“w”); if(fp==NULL) printf(“n文件打开不成功,信息无法保存!!n”); else { fprintf(fp,“%d”,CurrentCount); for(int i=1;i<=CurrentCount;i++) fprintf(fp,“n%8s%4s%16s%4d%14s%13s%20s%4d%18s”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); fclose(fp); printf(“n信息已成功保存!!n”); } system(“pause”);} void read(){ FILE *fp; fp=fopen(“ygjbxx.txt”,“r”); if(fp==NULL) printf(“n文件打开不成功,信息无法读取!!n”); else { fscanf(fp,“%d”,&CurrentCount); for(int i=1;i<=CurrentCount;i++) { fscanf(fp,“%s%s%s%d%s%s%s%d%s”,member[i].xm,member[i].xb,member[i].sr,&member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,&member[i].gl,member[i].zc); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); } fclose(fp); printf(“n信息已成功读取!!n”); } system(“pause”);} void search(){ char dcsfzh[19]; int sfjx=1,i; while(sfjx!=0) { printf(“n请输入一个待查员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void del(){ char dcsfzh[19]; int sfjx=1,i,j; while(sfjx!=0) { printf(“n请输入一个待删员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); printf(“n按任意键开始删除......n”); system(“pause”); for(j=i+1;j<=CurrentCount;j++) member[j-1]=member[j]; CurrentCount--; printf(“n已成功删除......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void modify(){ char dcsfzh[19]; int sfjx=1,i; while(sfjx!=0) { printf(“n请输入一个待修改员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); printf(“n请输入新内容......n”); printf(“n请输入人员相关信息(姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称):”); scanf(“%s%s%s%d%s%s%s%d%s”,member[CurrentCount].xm,member[CurrentCount].xb,member[CurrentCount].sr,&member[CurrentCount].nl,member[CurrentCount].whcd,member[CurrentCount].lxdh,member[CurrentCount].sfzh,&member[CurrentCount].gl,member[CurrentCount].zc); printf(“n已成功修改......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} int check(){ int count=0,name,pass; while(count<=2) { printf(“n请输入用户名及密码:”); scanf(“%d%d”,&name,&pass); count++; if((name==1)&&(pass==1)) count=10; else if(count>2) count=5; } if(count==10) return 0; else return 1;} struct mem_gz { float jbgz;float cql;float jj;float kk;float grsd;float sf;};struct mem_gz mem[N+1];void inputgz(){ char sfjx=1;CurrentCount=0; while(sfjx!=0) { if(CurrentCount==N) { printf(“n工资已添加完毕,无法添加!!n”); sfjx=0; } else { CurrentCount++; printf(“请输入身份证号码为:%s的员工工资资料n”,member[CurrentCount].sfzh); printf(“n请输入员工工资信息(基本工资 考勤 奖金 扣款 个人所得税):n”); scanf(“%f%f%f%f%f”,&mem[CurrentCount].jbgz,&mem[CurrentCount].cql,&mem[CurrentCount].jj,&mem[CurrentCount].kk,&mem[CurrentCount].grsd); mem[CurrentCount].sf=mem[CurrentCount].jbgz*mem[CurrentCount].cql+mem[CurrentCount].jj-mem[CurrentCount].kk-mem[CurrentCount].grsd; } printf(“n是否继续(0--结束,其它--继续):n”); scanf(“%d”,&sfjx); } system(“pause”);} void savegz(){ FILE *fq; fq=fopen(“yggzxx.txt”,“w”); if(fq==NULL) printf(“n文件打开不成功,信息无法保存!!n”); else { fprintf(fq,“%d”,CurrentCount); for(int i=1;i<=CurrentCount;i++) fprintf(fq,“n%f %f %f %f %f %f”,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); fclose(fq); printf(“n信息已成功保存!!n”); } system(“pause”);} void readgz(){ FILE *fq; fq=fopen(“yggzxx.txt”,“r”); if(fq==NULL) printf(“n文件打开不成功,信息无法读取!!n”); else { fscanf(fq,“%d”,&CurrentCount); for(int i=1;i<=CurrentCount;i++) { fscanf(fq,“%f%f%f%f%f%f”,&mem[i].jbgz,&mem[i].cql,&mem[i].jj,&mem[i].kk,&mem[i].grsd,&mem[i].sf); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); } fclose(fq); printf(“n信息已成功读取!!n”); } system(“pause”);} void searchgz(){ int dcbh; int sfjx=1; while(sfjx!=0) { printf(“n请输入一个待查员工编号(身份证号从小到大的顺序):”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void delgz(){ int dcbh; int sfjx=1,j; while(sfjx!=0) { printf(“n请输入一个待删工资的编号:”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); printf(“n按任意键开始删除......n”); system(“pause”); for(j=dcbh+1;j<=CurrentCount;j++) mem[j-1]=mem[j]; CurrentCount--; printf(“n已成功删除......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void modifygz(){ int dcbh; int sfjx=1; while(sfjx!=0) { printf(“n请输入一个待修改工资员工的编号:”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); printf(“n请输入新内容......n”); printf(“n请输入人员工资信息(基本工资 考勤 奖金 扣款 个人所得税 实发工资):”); scanf(“%f%f%f%f”,&mem[CurrentCount].jbgz,&mem[dcbh].cql,&mem[dcbh].jj,&mem[dcbh].kk,&mem[dcbh].grsd,&mem[dcbh].sf); printf(“n已成功修改......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void listgz(){ int i; printf(“n 员工工资信息表n”); printf(“ 序号 基本工资 考勤 奖金 扣款 个人所得税 实发工资n”); for(i=1;i<=CurrentCount;i++) printf(“%4d %8f%8f%8f%8f”,i,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); system(“pause”);} void main(){ int xz=1; printf(“ *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*n”);printf(“ * 欢迎使用人事工资管理系统 *n”);printf(“ ***************************************nnn”); if(check()!=0) { printf(“n你无权使用本系统......nn”); system(“pause”); } else { while(xz!=0) { printf(“n请选择相应功能:n”); printf(“1-录入n2-查询n3-修改n4-删除n5-保存n6-读取n7-输入员工工资n8-保存工资信息n9-读取工资信息n10-修改工资信息n11-删除工资信息n12-工资列表n0-结束n请输入选择:”); scanf(“%d”,&xz); switch(xz) { case 1: input();break; case 2: search();break; case 3: modify();break; case 4: del();break; case 5: save();break; case 6: read();break; case 7: inputgz();break; case 8: savegz();break; case 9: readgz();break; case 10: modifygz();break; case 11: delgz();break; case 12: listgz();break; case 0: printf(“nn谢谢使用本系统!nn”);system(“pause”);break; default: printf(“n无此功能,请重新选择......n”); system(“pause”); } } } } #include intnum; /*定义一个职工信息的结构体*/ char name[20]; /*定义一个职工信息的结构体*/ char sex[10]; //用字符串存放职工的性别数据 char birth[20];//用字符串存放职工的出生年月数据 char deta[20];//用字符串存放职工的工作年月数据 char education[20];//用字符串存放职工的学历数据 double salary; //用字符串存放职工的性别数据 char work[30];//用字符串存放职工的职务数据 char addr[20];//用字符串存放职工的地址数据 char tel[20];//用字符串存放职工的电话数据 }worker[100];//用结构体数组存放职工的所有信息 void menu(); void input(); void save(); void read(); void display(); void add(); void search(); voidsearch_education(); voidsearch_num(); void del(); void modify(); void main() { char s; system(“color 3f”); printf(“nn”); printf(“ t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”); printf(“ t┃**********************************************************┃n”); printf(“ t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃n”); printf(“ t┃***┃************************************************┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 欢迎使用职工信息管理系统 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 制作人吴青伶 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 2013.12.28 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃************************************************┃***┃n”); printf(“ t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃n”); printf(“ t┃**********************************************************┃n”);printf(“ t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);do { menu();printf(“Do you want to continue?(y/n)”); s=getchar();}while(s=='Y'||s=='y');} void menu()/*菜单函数*/ { int b;printf(“t n”);printf(“t n”);printf(“t n”);printf(“t n”);printf(“t n”);printf(“t 请选择 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 || 6.职工信息修改 || n”);printf(“t || 0.退出 || n”);printf(“tn”);printf(“n 输入你的选择项(0~6):n”); scanf(“%d”,&b); switch(b) { case 1 : //职工信息录入、保存 input(); save(); getchar(); break; case 2 ://读入职工信息并显示 read(); display(); getchar();break; case 3 : //添加职工信息 add();getchar();break; case 4 : //查询职工信息 search();getchar();break; case 5 : //读入职工信息并实现职工信息删除功能 read(); del(); getchar(); break; case 6 : //读入职工信息并修改职工信息 read();modify();getchar();break; case 0 : exit(0);//退出 default:break;} } void input() //录入职工信息 { inti,flag,j;printf(“输入职工个数(默认个数为2):”);scanf(“%d”,&N);fflush(stdin);//清除缓存 for(i=0;i { loop: printf(“职工号:”);scanf(“%d”,&worker[i].num);fflush(stdin);flag=1;if(worker[N].num<0) printf(“请输入正整数:n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工号重复,请重新输入!n”); goto loop; } } printf(“姓名:”);scanf(“%s”,worker[i].name);fflush(stdin);printf(“性别:”);scanf(“ %s”,worker[i].sex);fflush(stdin);printf(“出生年月:”);scanf(“%d”,&worker[i].birth);fflush(stdin);printf(“工作年月:”);scanf(“%lf”,&worker[i].deta);fflush(stdin);printf(“请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):n”);scanf(“%s”,worker[i].education);fflush(stdin);printf(“工资:”);scanf(“%lf”,worker[i].salary);fflush(stdin);printf(“职务:”);scanf(“%s”,worker[i].work);fflush(stdin);printf(“住址:”);scanf(“%s”,worker[i].addr);fflush(stdin);printf(“电话:”);scanf(“%s”,worker[i].tel);fflush(stdin); } printf(“n创建完毕!n”);} void save() //保存函数 { FILE *fp;int i; if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”); exit(0);} for(i=0;i void read() //读入函数 { FILE *fp;int i=0; if((fp=fopen(“worker.txt”,“rb”))==NULL)//以只读方式为输出打开磁盘文件中的一个二进制文件 { printf(“ncannot open filen”); exit(0);} do{ fread(&worker[i],sizeof(struct worker),1,fp);//从worker.txt文件向内存读入数据(二进制) i++;}while(!feof(fp));fclose(fp); N=i-1;} void display() //信息浏览函数 { int i;for(i=0;i { printf(“职工号:%dn”,worker[i].num);printf(“姓名:%sn”,worker[i].name);printf(“性别:%sn”,worker[i].sex);printf(“出生年月:%dn”,worker[i].birth);printf(“工作年月:%dn”,worker[i].deta);printf(“学历:%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%dn”,worker[i].work);printf(“住址:%sn”,worker[i].addr);printf(“电话:%sn”,worker[i].tel); } } void add() //添加函数 { FILE *fp;int i;struct worker p;double t;printf(“n请输入新增加职工的信息:n”); printf(“请输入职工号:n”); scanf(“%d”,&p.num); for(i=0;i { while(worker[i].num==p.num) { printf(“ 工号重复,请重新输入!n”); scanf(“%d”,&p.num); } } printf(“请输入姓名:n”);scanf(“%s”,p.name);printf(“请输入性别:n”);scanf(“%s”,p.sex);printf(“请输入出生年月:n”);scanf(“%d”,&p.birth);printf(“请输入工作年月:n”);scanf(“%d”,&p.deta);printf(“请输入学历(中专=zz,大专=dz,本科=bk,=yjs:):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t);p.salary=t;printf(“请输入职务:n”);scanf(“%s”,p.work);printf(“请输入住址:n”);scanf(“%s”,p.addr);printf(“请输入电话:n”);scanf(“%s”,p.tel);printf(“n添加完毕!n”); if((fp=fopen(“worker.txt”,“ab”))==NULL)//以追加方式打开一个二进制文件尾部 { printf(“ncannot open filen”);exit(0); } fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);} void search() //查询函数 { int c;do { puts(“nsearch by=>n1.学历2.职工号3.取消并返回”);printf(“Which you needed?:n”);scanf(“%d”,&c); 研究生if(c>3||c<1) { puts(“nchoiceerror!please again!”);getchar();//此语句用于接受在执行上一句时最后输出的回车符 } } while(c>3||c<1); { switch(c) { case 1:search_education();break;case 2:search_num();break;case 3:menu();break; } } } void search_education() //按学历查询函数 { inti,flag=0;char s[10];printf(“n请输入你要查询的学历:n”);scanf(“%s”,s);for(i=0;i { if(strcmp(s,worker[i].education)==0) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,yjs):%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel);flag++; } } if(flag==0) printf(“n对不起没有找到!n”);getchar();} void search_num() //按工号查询函数 { inti,s,flag=0;printf(“n输入要查询的职工号!:n”);scanf(“%d”,&s); 本科=bk,研究生=for(i=0;i { if(s==worker[i].num) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%sn”,worker[i].education); printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel); flag++; } } if(flag==0)printf(“n对不起没有找到!please”); getchar();} void del() //删除函数 { inti,j;FILE *fp;char name[20];char c;if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”);exit(0); } printf(“请输入要删除的职工的姓名:”);scanf(“%s”,name);for(i=0;i if(strcmp(name,worker[i].name)==0)//判断输入的姓名和原来的姓名是否相同 { printf(“找到该职工,是否删除?(y/n)”); fflush(stdin); scanf(“%c”,&c); if(c =='Y'||c=='y') { for(j=i;j worker[j]=worker[j+1]; printf(“删除成功!n”); //break; } } } if(i>=N){ printf(“没有找到该职工!n ”); return;} else { N=N-1; for(i=0;i if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1) { printf(“ncannot save filen”);getchar(); } fclose(fp);} } void modify() //修改函数 { struct worker p;FILE *fp;inti,n;double t;printf(“n输入要修改的职工号:n”);scanf(“%d”,&n); for(i=0;i if(n==worker[i].num) { printf(“找到该职工的信息(任意键继续)!”); printf(“n请输入职工的信息!n”); printf(“请输入姓名:n”);scanf(“%s”,p.name); printf(“请输入性别:n”);scanf(“%s”,p.sex); printf(“请输入出身年月:n”);scanf(“%d”,&p.birth);printf(“请输入工作年月:n”);scanf(“%lf”,&p.deta); printf(“请输入学历(中专=zz,大专=dz,yjs):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t); p.salary=t;printf(“请输入职务:n”);scanf(“%s”,p.work); printf(“请输入住址:n”);scanf(“%s”,p.addr); 本科=bk,研究生= } printf(“请输入电话:n”);scanf(“%s”,p.tel);p.num=n; if((fp=fopen(“worker.txt”,“r+”))==NULL)//以读写的方式将修改的信息写入磁盘文件 { printf(“ncannot open filen”); exit(0); } fseek(fp,i*sizeof(struct worker),0);//将位置指针移到i*sizeof(struct worker)个字节处 fwrite(&p,sizeof(struct worker),1,fp); fclose(fp); printf(“修改成功!n”); break;} } if(i>=N)printf(“n未找到该职工!n”); 题目:用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 (一)功能要求 (1)查看功能:选择此功能时,列出下列三类选择。 A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如 杨春 *** 商务类 Chuny@126.C++om 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 (二)其它要求: (1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)建议使用结构和链表等数据结构 (4)学生可自动增加新功能模块(视情况可另外加分) 以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可 #include #define MAXSIZE 15 //联系人信息 typedef struct { string name;//姓名 string teleNum;//电话号码 int classes;//分类 string email;//电子邮件 }contacts; //链表存储结构 typedef struct LNode { contacts data;//数据域 struct LNode* next;//指针域 }LNode,*LinkList; //初始化链表 int InitList(LinkList &L){ L = new LNode;L->next = NULL;return 0;} //前插法创建链表 void CreateList_H(LinkList &L,int n){ LinkList p; for(int i = 0;i < n;i++)//根据联系人个数创建链表 { p = new LNode; cout <<“请输入联系人的姓名:”; cin >> p->data.name; cout <<“请输入联系人的电话号码:”; cin >> p->data.teleNum; cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl; cout <<“1 办公类 个人类 商务类”<< endl; cin >> p->data.classes; cout <<“请输入联系人的电子邮件:”; cin >> p->data.email; p->next = L->next; L->next=p; } } //根据类别查看联系人信息 void CheckAll(LinkList L,int c)//c是联系人类别 { LinkList p;p = L->next; } cout <<“姓名tt”<<“电话号码”<< endl;//表头 while(p)//当链表没到尾部时 { } if(p->data.classes==c)//若符合类别则输出联系人姓名和电话号码 { cout << p->data.name <<“tt”<< p->data.teleNum << endl;} p=p->next;//重载函数,查看所有联系人 void CheckAll(LinkList L){ LinkList p; p=L->next; while(p) { cout << p->data.name << endl; p=p->next; } } //根据姓名查找联系人 LinkList Search(LinkList L,string name){ LinkList p; p=L->next; while(p&&p->data.name!=name)//当链表没到尾部且没找到联系人时 { p=p->next; } return p;} //判断链表中是否存在联系人c char IfExist(LinkList L,contacts c) { LinkList p; p=L->next; while(p&&p->data.name!=c.name)//根据姓名查找是否存在该联系人 { p=p->next; } if(!p)//若到达链表尾部,则不存在return 'n'; if(p->data.teleNum==c.teleNum)//若找到联系人姓名 if(p->data.classes==c.classes)//依次判断电话号码、类别、电子邮件是否相同 if(p->data.email==c.email) return 'y'; return 'n';} //获取链表的长度 int Length(LinkList L){ int i=0; LinkList p=L->next; while(p) { ++i; p=p->next; } return i;} //增加联系人 int Add(LinkList &L,contacts c){ LinkList p,s; if(Length(L)>=MAXSIZE)//判断链表长度是否达到最大值 { cout <<“存储空间已满,无法新增联系人!”<< endl; return 0;} if(IfExist(L,c)=='y')//判断输入的联系人是否已经存在{ cout <<“对不起,您输入的联系人已存在!”<< endl; return 0; } //若通讯录中不存在该联系人,则增加到通信录 p=L;s=new LNode;s->data=c;s->next=p->next;p->next=s;return 0;} //拨号功能 void Dail(LinkList L,string name){ LinkList p,s; p=L->next; s=Search(L,name);//根据姓名查找联系人所在//模拟打字机效果,输出联系人电话号码 string tele=s->data.teleNum; for(int i=0;i { char c=tele[i];Sleep(500);cout << c;} cout << endl;//播放声音 //PlaySound(“E:670.wav”,NULL,SND_FILENAME|SND_ASYNC);} //修改联系人信息 void ChangeInfo(LinkList &L,string name){ LinkList p; p=Search(L,name);//找到联系人的位置所在 cout <<“ 请输入要修改的信息(输入对应序号即可):”<< endl; cout <<“1 姓名”<< endl; cout <<“2 电话号码”<< endl; cout <<“3 分类”<< endl; cout <<“4 电子邮件”<< endl; //根据选择修改联系人信息 int elec; cin >> elec; switch(elec) { case 1: { cout <<“姓名改为:”<< endl; string newName; cin >> newName; p->data.name=newName; break;} case 2: { cout <<“电话号码改为:”< string newTele; cin >> newTele; p->data.teleNum=newTele; break;} case 3: { cout <<“分类改为(分类如下,输入相应序号即可)”; cout <<“1 办公类 个人类 商务类”<< endl; int newCalsses; cin >> newCalsses; p->data.classes=newCalsses; break;} case 4: { cout <<“电子邮件改为:”<< endl; string newEmail; cin >> newEmail; p->data.email=newEmail; break;} } } //删除联系人 void Delete(LinkList &L,string name){ LinkList p=L,s; //找到需删除联系人的前一个位置 while(p->next&&p->next->data.name!=name) { p=p->next; } s=p->next; p->next=s->next; delete s;//删除联系人 } //导入通信录 void Read(LinkList L){ LinkList p; //打开文件导入通信录 ifstream fin;fin.open(“通信录.txt”,ios::in);string s1,s2,s3,s4;fin >> s1 >> s2 >> s3 >> s4;while(!fin.eof())//当没有到文件尾时 { string s5;contacts c;fin >> c.name >> c.teleNum >> s5 >> c.email;if(s5.compare(“办公类”)==0)c.classes=1; if(s5.compare(“个人类”)==0) c.classes=2; if(s5.compare(“商务类”)==0) c.classes=3; Add(L,c);//将联系人c增加到链表中 } fin.close(); } //导出通信录 void Write(LinkList L){ } LinkList p=L->next;int l=Length(L);//打开文件写入通信录 ofstream fout(“通信录.txt”,ios::out|ios::trunc);fout <<“姓名t”<<“电话号码t”<<“分类t”<<“电子邮件 ”<< endl;for(int i=0;i case 1: { fout <<“办公类”; break; } case 2: { fout <<“个人类”; break; } case 3: { fout <<“商务类”; break; } } fout <<“t”<< p->data.email;if(i<(l-1)) fout << endl;p=p->next;} fout.close();int Menu()//主菜单 { system(“cls”);//清屏 int choice;cout< cout<<“ ***************主菜单***************n”;cout<<“ * 新增联系人 *n”;cout<<“ * 查看通信录 *n”; } cout<<“ * 拨号 *n”;cout<<“ * 修改信息 *n”;cout<<“ * 删除联系人 *n”;cout<<“ * 导入通信录 *n”;cout<<“ * 导出通信录 *n”;cout<<“ * 0 退出系统 *n”;cout<<“ ************************************n”;cout<<“ 请根据您的需求,输入相应的数字:”;cin>>choice;//输入选择 return choice;int main()//主函数 { LinkList L;InitList(L);for(;;){ switch(Menu())//根据不同选择,执行不同的功能 { case 1: { cout <<“请选择批量增加或单个增加(输入相应序号即可):”<< endl;cout <<“1 批量增加 单个增加”<< endl;int c1;cin >> c1;if(c1==1){ cout <<“请输入新增联系人的个数:”<< endl;int number;cin >> number;CreateList_H(L,number);//用前插法批量增加联系人 } else //单个增加联系人 { contacts c;cout <<“请输入联系人的姓名:”;cin >> c.name;cout <<“请输入联系人的电话号码:”;cin >> c.teleNum;cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl;cout <<“1 办公类 个人类 商务类”<< endl;cin >> c.classes;cout <<“请输入联系人的电子邮件:”; cin >> c.email; Add(L,c); } system(“pause”);break; } case 2://查看通信录 { cout <<“请输入查看联系人的类别(输入相应序号即可):”<< endl;cout <<“1 办公类 个人类 商务类 ”<< endl;int c2;cin >> c2; cout <<“已有联系人如下:”<< endl; CheckAll(L,c2);//根据分类查看联系人信息 system(“pause”);break; } case 3: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string name;cout <<“请输入拨号人的姓名:”<< endl;cin >> name; Dail(L,name);//根据 system(“pause”);break; } case 4: { cout <<“已有联系人如下:”<< endl;CheckAll(L);string changeName;cout <<“请输入要修改信息的联系人姓名:”<< endl;cin >> changeName;ChangeInfo(L,changeName); system(“pause”);break; } case 5: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string deleteName;cout <<“请输入要删除的联系人姓名:”<< endl;cin >> deleteName; Delete(L,deleteName); cout <<“联系人”<< deleteName <<“已删除!”<< endl; system(“pause”);break; } case 6: { Read(L);//导入通信录 cout <<“成功导入通信录!”<< endl; cout <<“已导入联系人姓名如下:”<< endl; CheckAll(L); system(“pause”); break; } case 7: { Write(L);//导出通信录 cout <<“成功导出通信录!”<< endl; system(“pause”); break; } case 0: { //退出系统 cout<<“ 感谢您对本通信录管理系统的使用!”< return 0;} default: 给予提示 } } } cout<<“ 您输入的指令有误,请重新输入!”< 学生信息管理系统源代码 import java.io.*; class StuInfo { public String name; public int number; public String sex; public String age; public String bir; public String email; public String addr; public String tel; public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getNumber(){ return number; } public void setNumber(int number){ this.number = number; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex = sex; } public String getAge(){ return age; } public void setAge(String age){ this.age = age; } public String getBir(){ return bir; } public void setBir(String bir){ this.bir = bir; } public String getEmail(){ return email; } public void setEmail(String email){ this.email = email;} public String getAddr(){ return addr;} public void setAddr(String addr){ this.addr = addr;} public String getTel(){ return tel;} public void setTel(String tel){ this.tel = tel;} } public class Student { private static PrintStream out = System.out;private static String filename = “Stu.txt”;private static int total = 0;private static int rt = 0;//recyle length private StuInfo[] stuInfos;private StuInfo[] recycle;BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));//创建缓冲流 public Student(){ stuInfos = new StuInfo[11]; } public void 信息录入(){ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.print(“n请输入学生信息(以0结束)n”); System.out.print(“学号:n”); StuInfo stu = new StuInfo(); stu.setNumber(Integer.parseInt(buf.readLine())); while(stu.getNumber()!=0){ System.out.print(“姓名:nn”); stu.setName(buf.readLine()); System.out.print(“性别:nn”); stu.setSex(buf.readLine()); System.out.print(“年龄:nn”); stu.setAge(buf.readLine()); System.out.print(“生日:nn”); stu.setBir(buf.readLine()); System.out.print(“邮箱:nn”); stu.setEmail(buf.readLine()); System.out.print(“地址:nn”); stu.setAddr(buf.readLine()); System.out.print(“电话:nn”); stu.setTel(buf.readLine()); //添加其他输入信息 stuInfos[total]=stu; total++; stu = new StuInfo(); System.out.print(“n请输入下一个学生信息(以0结束)n”); System.out.print(“姓名:n”); stu.setName(buf.readLine()); } }catch(Exception e){ out.print(e); } } public void 保存数据(){ try{ FileWriter fwr=new FileWriter(filename); BufferedWriter fw = new BufferedWriter(fwr); fw.write(total+“rn”); for(int k=0;k fw.write(stuInfos[k].getNumber()+“rn”); fw.write(stuInfos[k].getName()+“rn”); fw.write(stuInfos[k].getSex()+“rn”); fw.write(stuInfos[k].getAge()+“rn”); fw.write(stuInfos[k].getBir()+“rn”); fw.write(stuInfos[k].getEmail()+“rn”); fw.write(stuInfos[k].getAddr()+“rn”); fw.write(stuInfos[k].getTel()+“rn”); } fw.write(rt+“rn”); for(int k=0;k第三篇:职工信息管理系统源代码
第四篇:通讯管理系统源代码
第五篇:学生信息管理系统源代码