计算机引论.docx
- 文档编号:17903686
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:44
- 大小:267.16KB
计算机引论.docx
《计算机引论.docx》由会员分享,可在线阅读,更多相关《计算机引论.docx(44页珍藏版)》请在冰点文库上搜索。
计算机引论
计算机引论作业
姓名:
钱振林班级:
电子1002班学号:
20102606
一概述
随着中国的快速发展,人口也不断增加。
众多的人口已不在适合用人工方式来管理,拥有一套户籍管理系统自然是相当重要了。
我参考了一些资料编写了以下的人口户籍管理系统来作为我的C语言作业。
此系统能进行人口户籍信息的输入、查询、修改、删除等功能。
并从安全性、方便性多方面考虑设计了不同的模块。
由于本人接触C语言不是太久,功能还不是太全面,有些模块程序可能设计的不足,希望鲍老师多加指正。
二设计方案
1模块图
2模块功能介绍
①密码验证模块:
登陆系统需要密码,增加系统的安全性。
刚进入系统需输入管理员密码。
②人口户籍信息管理模块:
此模块主要实现对人口的姓名、身份证号、性别、出生年月、民族、户籍所在地等信息的录入、修改、查询、删除功能。
③密码修改模块:
修改设置用户自己的密码。
④系统帮助模块:
对系统的帮助,提示说明等。
三方案描述
1总体方案概述
我设计的程序系统整体分为八大部分,分别是定义声明、主函数、录入户籍信息、删除户籍信息、修改户籍信息、查询户籍信息、密码部分、帮助部分。
各个部分各自定义,之后主函数调用各个模块完成功能。
录入户籍信息后存入文件中。
当要使用文件通过指针指向文件调用文件。
具体的程序及功能在下面的框图和代码中体现。
。
2详细程序描述及相应流程图
为了节省页面和观察简单,流程图部分我用方便的N-S图来表示。
㈠首先打开文件peo_code,如果成功则读出密码并验证,如下图一
㈡进入系统后分别执行相应的程序功能,如录入户籍信息等。
此模块为流程图二。
㈢录入信息后可对信息进行修改功能。
流程图如下图三。
㈣查询信息的流程图如下图四。
注:
上面这些就是我所设计的大致流程图,删除模块的流程图与查询模块大致相同,所以我就写了一个。
3详细程序代码
❶模块顺序:
⑴定义模块⑵函数声明模块⑶主函数模块⑷主菜单模块⑸密码验证模块⑹修改密码模块⑺户籍信息录入模块⑻查询户籍信息模块⑼删除户籍信息模块⑽修改户籍信息模块⑾修改姓名模块⑿修改生日模块⒀修改性别模块⒁修改户籍模块⒂修改民族模块⒃修改家庭住址模块⒄修改身份证模块⒅帮助模块⒆信息文件处理模块
❷详细代码:
⑴定义模块
#include
#include
#include
#include
#include
#definePEOPLEMAX10000/*定义最大人口数*/
structpeopleinfo/*人口信息结构体*/
{charname[20];/*姓名*/
charid[20];/*身份证号*/
charsex[10];/*性别*/
charbirth[20];/*生日*/
charminzu[10];/*民族*/
charhuji[30];/*户籍所在地*/
charaddress[30];/*家庭住址*/
};
FILE*infofile=NULL;/*保存信息数据文件*/
charfilename[]="c:
peopleinformation.dat";/*记录户籍信息文件*/
⑵函数声明模块
voidpassword();/*密码验证*/
intshowmenu();/*主菜单显示*/
voidmodifycode();/*修改密码*/
voidinputinfo(structpeopleinfo*);/*输入户籍信息*/
voidsearchinfo(structpeopleinfo*);/*查询户籍信息*/
voidshanchuinfo(structpeopleinfo*p_people);/*删除户籍信息*/
voidxiugaiinfo(structpeopleinfo*);/*修改户籍信息*/
voidxiugainame(structpeopleinfo*);/*修改名字*/
voidxiugaisex(structpeopleinfo*);/*修改性别*/
voidxiugaibirth(structpeopleinfo*);/*修改生日*/
voidxiugaiminzu(structpeopleinfo*);/*修改民族*/
voidxiugaiid(structpeopleinfo*);/*修改身份证号*/
voidxiugaihuji(structpeopleinfo*);/*修改户籍*/
voidxiugaiaddress(structpeopleinfo*);/*修改家庭住址*/
voidsystemhelp();/*系统帮助模块*/
intdatfile(structpeopleinfo*);/*处理文件模块*/
structpeopleinfopeoplemax[100];/*最大人口数*/
structpeopleinfo*p_people;/*指向结构体的指针*/
⑶主函数模块
voidmain()
{intin=0;
time_tstart,end;/*定义时间函数*/
p_people=peoplemax;/*指向结构体*/
password();/*密码验证*/
while(in!
=7)
{system("cls");/*清屏*/
in=showmenu();/*主菜单显示*/
switch(in)
{case1:
inputinfo(p_people);break;/*录入个人信息*/
case2:
xiugaiinfo(p_people);break;/*修改个人信息*/
case3:
searchinfo(p_people);break;/*查询个人信息*/
case4:
shanchuinfo(p_people);break;/*删除个人信息*/
case5:
modifycode();break;/*修改个人信息*/
case6:
systemhelp();break;/*系统帮助*/
case7:
break;
default:
printf("\t\tNothischoice.Pleasechoiceagain!
(1-7)");
getch();
system("cls");
break;
}
}
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t");
printf("THANKSYOURUSE,BAYBAY!
!
!
");
start=time(NULL);/*时间函数,此部分参考资料*/
end=time(NULL);
while(end-start<1)/*延时1秒*/
end=time(NULL);
}
⑷主菜单显示模块
intshowmenu()
{intin;
printf("\n\n\n\n\n");
printf("\t\t*----------------------------------------------------------------------*\n");
printf("\t\t|PEOPLEINFORMATIONMANAGEMENTSYSTEM|\n");
printf("\t\t|------------------------------------------------------------------------|\n");
printf("\t\t|1inputinformation|\n");
printf("\t\t|2modifyinformation|\n");
printf("\t\t|3searchinformation|\n");
printf("\t\t|4deleteinformation|\n");
printf("\t\t|5modifypassword|\n");
printf("\t\t|6systemhelp|\n");
printf("\t\t|7exit|\n");
printf("\t\t*-----------------------------------------------------------------------*\n");
printf("\t\tPleasechoice(1-7)");
while(scanf("%d",&in)!
=1)/*检查录入是否正确*/
{while(in!
='\n')
returnin;/*返回输入值*/
}
fflush(stdin);/*清除缓存*/
returnin;/*返回输入值*/
}
⑸密码验证模块
voidpassword()
{FILE*fp;/*定义文件指针*/
charco[20];/*管理员密码*/
charcol[20];/*要验证的密码*/
inti;
time_tstart,end;/*定义时间函数*/
if((fp=fopen("peo_code","rb"))==NULL)/*检查密码文件是否存在*/
{system("cls");
printf("Administrator\n");
printf("Password:
");/*不存在需要输入管理员密码*/
scanf("%s",co);/*输入管理员密码*/
fp=fopen("peo_code","wb+");/*打开文件*/
for(i=0;i<20;i++)
fwrite(&co[i],sizeof(char),1,fp);/*密码写入文件中*/
fclose(fp);/*关闭文件*/
}
rewind(infofile);/*定位文件头*/
system("cls");/*清屏*/
for(i=0;i<20;i++)
fread(&co[i],sizeof(char),1,fp);/*读取密码*/
fclose(fp);
printf("Pleaseenteryourpassword:
");
scanf("%s",col);/*输入要验证的密码*/
if(strcmp(co,col)!
=0)/*检验密码是否正确*/
{printf("\nThepasswordiswrong,Pleasetryagain!
");
getch();
exit
(1);
}
else
{system("cls");
printf("\n\n\n\n\n\n\n\n\t\t");
printf("Welcometousethepeoplemanagementsystem!
\n\n\t\t\t\tentering,waiting......");
start=time(NULL);
end=time(NULL);
while(end-start<4)/*延迟四秒*/
{end=time(NULL);}
system("cls");
return;
}
}
⑹修改密码模块
voidmodifycode()
{FILE*fp;
inti;
charcol[20];/*定义新密码数组*/
system("cls");
if((fp=fopen("peo_code","wb"))==NULL)/*检查密码文件能否打开*/
{printf("Cannotopenthefile");
}
else
{printf("Pleaseenteryournewpassword:
");
scanf("%s",col);/*输入新密码*/
for(i=0;i<20;i++)
fwrite(&col[i],sizeof(char),1,fp);/*把新密码写入密码文件中*/
fclose(fp);/*关闭文件*/
printf("Modifypasswordsuccessed!
");
getch();
}
}
⑺户籍信息录入模块
voidinputinfo(structpeopleinfo*p_people)
{intcount=0;/*函数定义*/
charch;
system("cls");
if((infofile=fopen(filename,"a+b"))==NULL)/*检查信息文件能否打开*/
{printf("Cannotopen,pleasecheck!
");
getch();
exit
(1);/*关闭文件*/
}
rewind(infofile);/*返回文件头*/
for(count=0;fread(&p_people[count],sizeof(structpeopleinfo),1,infofile)==1;count++)/*如果没有将内容正确的写入infofile中就跳出*/
{continue;}
printf("personalinformationlist\n");
printf("(pleaseenterEnglishorpinyin)\n");
printf("-----------------------------------------\n\n");
printf("name:
");
while(count =NULL&&p_people[count].name[0]! ='\0')/*检查输入的信息是否正常*/ {printf("\nsex: ");/*输入姓名*/ gets(p_people[count].sex); printf("\nbirth: ");/*输入性别*/ gets(p_people[count].birth); printf("\nID: ");/*输入身份证号*/ gets(p_people[count].id); printf("\nminzu: ");/*输入民族*/ gets(p_people[count].minzu); printf("\nhuji: ");/*输入户籍所在地*/ gets(p_people[count].huji); printf("\naddress: ");/*输入地址*/ gets(p_people[count].address); fwrite(&p_people[count++],sizeof(structpeopleinfo),1,infofile);/*写入这个这个人的户籍信息*/ printf("continue? (Y/N)");/*是否继续*/ ch=getch(); if(ch=='y'||ch=='Y')/*如果继续*/ {system("cls"); printf("\nPleaseenterpersonalinformation\n"); printf("\nname: "); continue; } else/*取消结束输入*/ {printf("Endreturn! "); fclose(infofile);/*关闭文件*/ getch(); system("cls");/*清屏*/ return;/*返回*/ } } printf("Inputerror,return! ");/*提示输入错误*/ getch(); system("cls"); return; } ⑻查询户籍信息模块 voidsearchinfo(structpeopleinfo*p_people) {inti,count; charch,*temp=NULL;/*定义临时数组指针*/ system("cls"); count=datfile(p_people);/*文件处理*/ if(! count)/*检查信息是否存在*/ {printf("Cannotfindinformation,Pleasecheck! "); getch(); system("cls"); return; } temp=(char*)malloc(20*sizeof(char));/*分配内存*/ printf("PleaseentertheIDforsearch: "); while(gets(temp)! =NULL&&temp[0]! ='\0') {for(i=0;i {if(! strcmp(temp,p_people[i].id))/*比较是否为要查找的人口*/ {system("cls"); printf("Thefollowingis(%s)'sinformation\n",p_people[i].id); printf("---------------------------------------------------\n-"); printf("name: %s\n",p_people[i].name); printf("sex: %s\n",p_people[i].sex); printf("birth: %s\n",p_people[i].birth); printf("minzu: %s\n",p_people[i].minzu); printf("id: %s\n",p_people[i].id); printf("huji: %s\n",p_people[i].huji); printf("address: %s\n",p_people[i].address); printf("---------------------------------------------------\n-"); break; } } free(temp);/*释放内存*/ printf("\ncontinue? (Y/N)"); ch=getch(); if(ch=='y'||ch=='Y')/*确认是否继续*/ {system("cls"); temp=(char*)malloc(20*sizeof(char));/*重新分配内存*/ printf("PleaseentertheIDforsearch: "); continue; } else {printf("\nSearchEnd,Return! "); getch(); system("cls"); return; } } free(temp); printf("\nInputerror,return! "); getch(); system("cls"); } ⑼删除户籍信息模块 voidshanchuinfo(structpeopleinfo*p_people) {inti,count; char*temp=NULL,ch;/*定义字符数组*/ system("cls"); count=datfile(p_people);/*文件处理*/ if(! count)/*检查文件是否存在*/ {printf("Cannotread,pleasecheck! "); getch(); return;/*返回*/ } temp=(char*)malloc(20*sizeof(char));/*分配内存*/ printf("PleaseinputyouwanttodeleteID;"); while(gets(temp)! =NULL&&temp[0]! ='\0') {for(i=0;i {if(! strcmp(temp,p_people[i].id)) {system("cls"); printf("\nAreyousuretodelete: (%s)'sinformation? (Y/N)",p_people[i].id); ch=getch(); if(ch=='n'||ch=='N') {system("cls"); printf("\nTheoperationhasbeencanceled! pressanykeytoreturn! "); getch(); system("cls"); return; } for(;i {p_people[i]=p_people[i+1];} count--; if((infofile=fopen(filename,"w+b"))==NULL) {free(temp); printf("Cannotopen,pleasecheck"); getch(); exit (1); } for(i=0;i {if(fwrite(&p_people[i],sizeof(structpeopleinfo),1,infofile)! =1) break;/*如果没有将内容正确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 引论