课程设计报告
一 C语言课程设计的目的
设计一职工信息管理系统,使之能提供以下功能: (1) 系统以菜单方式工作
(2) 职工信息录入功能(职工信息用文件保存) (3) 职工信息浏览功能
(4) 职工信息查询功能,查询方式可按学历查询或按职工号查询 (5) 职工信息删除修改功能(可选项)
二 课程设计报告正文
1题目要求
设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一职工信息管理系统,使之能提供以下功能: (6) 系统以菜单方式工作
(7) 职工信息录入功能(职工信息用文件保存) (8) 职工信息浏览功能
(9) 职工信息查询功能,查询方式可按学历查询或按职工号查询 (10) 职工信息删除修改功能(可选项)
2需求分析
根据题目要求,由于职工信息是存放在文件中,所以应
提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应
提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计
根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出.系统功能模块如下:
职工信息管理系统 数据添加 数据查找 数据修改 数据删除 数据输出 4详细设计
1 主函数
主函数设计要简洁,只提供部分函数的调用。其中各功能模块用菜单方式选择。
【程序】
void main() {
int m;
while(1)
{ printf(\"\\n\\n\\n\\ ______________________________________\\n\"); printf(\"\\ 欢迎进入内蒙古科技大学员工信息系统\\n”); printf(\"\\ 设计者:计算机—3班 学号1076807334\\n”);
printf(”\\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n\");
printf(”\\n\\\\添加,请按1\"); printf(”\\n\\\\查找,请按2”); printf(”\\n\\\\修改,请按3”); printf(\"\\n\\\\删除,请按4\"); printf(\"\\n\\\\输出,请按5\");
- 1 -
printf(\"\\n\\\\退出,请按0\\n\"); scanf(\"%d\",&m); if(m〉=0&&m〈=5) {
switch(m) {
case 1: append(); break;
case 2: search(); break;
case 3: modify(); break;
case 4: delete(); break;
case 5: output(); break;
case 0: exit(); }
printf(”\\n\\n操作完毕,请再次选择!\"); } else
printf(”\\n\\n选择错误,请再次选择!”); } }
2 数据添加 【程序】
void append() {
if((fp=fopen(”worker.xls”,”a\"))==NULL) {
printf(\"\\n不能打开该文件!\"); exit(); }
printf(\"\\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\\n\");
scanf(\"%s%s%s%s%s%s%s%s%s”,one.name,one.num,one.sex,one。age,one。record,one.position,one.wanges,one.tel,one.addr);
fprintf(fp,”%—10s%—8s%-5s%-5s%-10s%—8s%-8s%—10s%—15s\\n\,one.num,one.sex,one。age,one.record,one。position,one。wanges,one。tel,one.addr);
fclose(fp); }
- 2 -
3 数据查找 数据查找共分为职工号、姓名等方式查找 【程序】
void search() {
int l;
printf(”\\\\*姓名查找按:1*\\n\"); printf(\"\\\\*学历查找按:2*\\n\"); printf(\"\\\\*职工号查按:3*\\n\");
scanf(”%d”,&l); if(l>0&&l<4) {switch(l) {
case 1:nameway(); break;
case 2:xueliway(); break;
case 3:numway(); break; }
printf(”\\n\\n操作完毕!!!\"); }
else printf(”\\\\输入有误!!!”); }
void nameway() {
int k=0;
char nam[8];
printf(”\\n请输入您要查找的职工姓名:\"); scanf(”%s\; if((fp=fopen(”worker.xls\",”rb”))==NULL) {
printf(\"\\n不能打开文件!\"); exit(); }
while(!feof(fp)) {
fscanf(fp,”%s%s%s%s%s%s%s%s%s\\n”,one.name,one.num,one.sex,one.age,one。record,one.position,one。wanges,one。tel,one.addr);
if(strcmp(nam,one。name)==0)
- 3 -
{
printf(\"\\n\\n已查到,记录为:”);
printf(”\\n%—10s%-8s%-5s%—5s%—10s%—8s%—8s%-10s%—15s\\n”,one.name,one.num,one。sex,one。age,one.record,one.position,one。wanges,one。tel,one。addr);
k=1; } }
if(k==0)
printf(”\\n\\n对不起,查无此人!.\"); fclose(fp); }
void xueliway() {int j=0;
char xueli[10];
printf(”\\\\输入你要查询的学历\\n”); scanf(\"%s”,xueli); if((fp=fopen(\"worker。xls\",”rb\"))==NULL) {
printf(”\\n不能打开文件!\"); exit(); }
while(!feof(fp)) {
fscanf(fp,”%s%s%s%s%s%s%s%s%s\\n\。num,one.sex,one.age,one。record,one.position,one。wanges,one.tel,one。addr);
if(strcmp(xueli,one。record)==0) {
printf(”\\n\\n已查到,记录为:\");
printf(\"\\n%-10s%-8s%—5s%—5s%-10s%—8s%-8s%—10s%-15s\\n”,one。name,one.num,one。sex,one。age,one。record,one.position,one.wanges,one。tel,one.addr);
j=1; } }
if(j==0)
printf(”\\n\\n对不起,查无此人!.\"); fclose(fp); }
void numway() {
int i=0;
- 4 -
char numb[10];
printf(”\\\\输入你要查询的职工号\\n\"); scanf(”%s”,numb);
if((fp=fopen(”worker.xls”,”rb\"))==NULL) {
printf(”\\n不能打开文件!”); exit(); }
while(!feof(fp)) {
fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n”,one.name,one.num,one.sex,one.age,one。record,one.position,one.wanges,one.tel,one.addr);
if(!strcmp(numb,one.num)) {
printf(”\\n\\n已查到,记录为:”); printf(\"\\n%-10s%-8s%-5s%—5s%—10s%-8s%—8s%-10s%—15s\\n\。num,one.sex,one。age,one。record,one.position,one.wanges,one。tel,one。addr);
i=1; } }
if(!i)
printf(\"\\n\\n对不起,查无此人!。\"); fclose(fp); }
4 数据修改 【程序】
void modify() {
int m,k=0; long a;
char namekey[8];
printf(”\\n请输入您要修改的职工的姓名:\"); scanf(”%s”,namekey); if((fp=fopen(\"worker.xls”,\"r+\"))==NULL) {
printf(\"\\n不能打开该文件!”); exit(); }
while(!feof(fp)) {
a=ftell(fp); fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n”,one。name,one。num,one。sex,one。
- 5 -
age,one。record,one.position,one.wanges,one。tel,one.addr);
if(!strcmp(namekey,one.name)) { k=1; break; } } if(k) {
printf(\"\\n已查到,记录为:”);
printf(”\\n%—10s%-8s%-5s%-5s%-10s%-8s%—8s%-10s%-15s\\n”,one.name,one。num,one。sex,one。age,one.record,one.position,one.wanges,one。tel,one.addr);
printf(”\\n请输入信息(按照姓名、工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):”);
scanf(”%s%s%s%s%s%s%s%s%s”,one.name,one。num,one.sex,one。age,one。record,one。position,one.wanges,one。tel,one。addr);
fseek(fp,a,0);
fprintf(fp,”%—10s%—8s%-5s%—5s%—10s%—8s%—8s%—10s%-15s\\n”,one.name,one。num,one。sex,one.age,one.record,one。position,one。wanges,one.tel,one.addr);
} else
printf(\"\\n对不起,查无此人,无法进行修改.\"); fclose(fp); }
5 数据删除 【程序】
void delete() {
int m,k=0; long a,b;
char namekey[8], valid[4];
printf(”\\n请输入您要删除的职工姓名:\"); scanf(”%s”,namekey);
if((fp=fopen(\"worker.xls”,”r+\"))==NULL) {
printf(\"\\n不能打开该文件!”); exit(); }
while(!feof(fp)) {
a=ftell(fp);
fscanf(fp,”%s%s%s%s%s%s%s%s%s\\n\",one.name,one.num,one。sex,
- 6 -
one.age,one。record,one.position,one。wanges,one.tel,one.addr);
if(strcmp(namekey,one.name)==0) { k=1; break; } }
if(k==1) {
printf(”\\n已查到,记录为\");
printf(\"\\n%—10s%-8s%-5s%—5s%-10s%—8s%-8s%—10s%—15s\\n\",one.name,one。num,one.sex,one。age,one.record,one.position,one.wanges,one.tel,one.addr);
printf(”\\n确实要删除,按1;不删除,按0:\"); scanf(”%d”,&m); if(m==1) {
fseek(fp,a,0);
fprintf(fp,\"%—10s%-8s%-5s%-5s%—10s%-8s%—8s%—10s%-15s\\n” ”\",\"\,\"\,\"”);
} } else
printf(\"\\n对不起,查无此人。”); fclose(fp); }
6 数据输出 【程序】
void output() {
if((fp=fopen(\"worker。xls”,”r”))==NULL) {
printf(”\\n不能打开该文件!\"); exit(); }
printf(”\\n\\n%20s\\n”,”职工信息管理系统\"); while(!feof(fp)) {
fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n”,one。name,one.num,one.sex,one。age,one。record,one.position,one.wanges,one。tel,one.addr);
printf(\"%—10s%—8s%—5s%-5s%—10s%—8s%-8s%-10s%-15s\\n”,one。name,one.num,one.sex,one。age,one。record,one.position,one.wanges,one.tel,one.addr);
- 7 -
}
fclose(fp); }
5运行与测试报告:
三 后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会.
这次课程设计让我掌握了许多的有用知识。首先我能够熟练的应用软件Microsoft Visual C++ 6。0 了。再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响.同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。
- 8 -
在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。还有就是起初我设计的程序总是有错误,我细心的修改,不断的改进,最终我做出了自己非常理想的程序!
附录:源程序清单 #include char name[8]; char num[10]; char sex[10]; char age[10]; char record[10]; char position[15];char wanges[10]; char tel[15]; char addr[50]; }one; FILE *fp; void output(); void search(); void append(); void modify(); - 9 - void delete(); void nameway(); void xueliway(); void numway(); void main() { int m; while(1) { printf(\"\\n\\n\\n\\ ______________________________________\\n”); printf(”\\ 欢迎进入中国地质大学(武汉)员工信息系统\\n\"); printf(\"\\ 设计者:055071-12苏龙 学号20071001569\\n\"); printf(”\\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~\\n\"); printf(”\\n\\\\添加,请按1\"); printf(”\\n\\\\查找,请按2”); printf(”\\n\\\\修改,请按3\"); printf(\"\\n\\\\删除,请按4\"); printf(”\\n\\\\输出,请按5\"); printf(\"\\n\\\\退出,请按0\\n\"); scanf(\"%d\",&m); if(m>=0&&m<=5) { switch(m) { case 1: append(); break; case 2: search(); - 10 - break; case 3: modify(); break; case 4: delete(); break; case 5: output(); break; case 0: exit(); } printf(\"\\n\\n操作完毕,请再次选择!\"); } else printf(”\\n\\n选择错误,请再次选择!”); } } void output() { if((fp=fopen(\"worker.xls\)==NULL) { printf(\"\\n不能打开该文件!\"); exit(); } printf(”\\n\\n%20s\\n\",\"职工信息管理系统\"); while(!feof(fp)) { fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n\",one。name,one。num,one.sex,one.age,one。record,one.position,one.wanges,one。tel,one。addr); printf(\"%—10s %-8s%—5s%-5s%-10s%-8s%-8s%-10s% - 11 - —15s\\n”,one.name,one.num,one.sex,one.age,one.record,one。position,one。wanges,one。tel,one.addr); } fclose(fp); } void append() { if((fp=fopen(\"worker.xls\",\"a\"))==NULL) { printf(”\\n不能打开该文件!\"); exit(); } printf(\"\\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\\n\"); scanf(”%s%s%s%s%s%s%s%s%s\。name,one.num,one.sex,one.age,one。record,one.position,one。wanges,one。tel,one.addr); fprintf(fp,”%-10s%-8s%—5s%—5s%—10s%-8s%-8s%-10s%-15s\\n\",one。name,one.num,one。sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fclose(fp); } void search() { int l; printf(”\\\\*姓名查找按:1*\\n\"); printf(”\\\\*学历查找按:2*\\n\"); printf(\"\\\\*职工号查按:3*\\n”); - 12 - scanf(\"%d”,&l); if(l〉0&&l<4) {switch(l) { case 1:nameway(); break; case 2:xueliway(); break; case 3:numway(); break; } printf(”\\n\\n操作完毕!!!”); } else printf(”\\\\输入有误!!!\"); } void nameway() { int k=0; char nam[8]; printf(”\\n请输入您要查找的职工姓名:”); scanf(”%s”,nam); if((fp=fopen(\"worker.xls\))==NULL) { printf(”\\n不能打开文件!\"); exit(); } while(!feof(fp)) - 13 - { fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n\,one。num,one。sex,one.age,one.record,one.position,one。wanges,one.tel,one.addr); if(strcmp(nam,one。name)==0) { printf(”\\n\\n已查到,记录为:\"); printf(\"\\n%-10s%—8s%—5s%—5s%—10s%—8s%-8s%—10s%—15s\\n”,one.name,one。num,one.sex,one。age,one。record,one。position,one。wanges,one。tel,one。addr); k=1; } } if(k==0) printf(”\\n\\n对不起,查无此人!。\"); fclose(fp); } void xueliway() {int j=0; char xueli[10]; printf(\"\\\\输入你要查询的学历\\n\"); scanf(\"%s\); if((fp=fopen(”worker.xls\",\"rb\"))==NULL) { printf(\"\\n不能打开文件!\"); exit(); } while(!feof(fp)) { fscanf(fp,”%s%s%s%s%s%s%s%s%s\\n”,one.name,one.num,one.sex,one.age, - 14 - one。record,one.position,one。wanges,one。tel,one.addr); if(strcmp(xueli,one。record)==0) { printf(\"\\n\\n已查到,记录为:\"); printf(\"\\n%—10s%-8s%-5s%—5s%-10s%-8s%-8s%—10s%-15s\\n\",one。name,one。num,one。sex,one。age,one.record,one。position,one.wanges,one。tel,one.addr); j=1; } } if(j==0) printf(”\\n\\n对不起,查无此人!.”); fclose(fp); } void numway() { int i=0; char numb[10]; printf(\"\\\\输入你要查询的共号\\n”); scanf(”%s”,numb); if((fp=fopen(”worker.xls”,\"rb\"))==NULL) { printf(”\\n不能打开文件!\"); exit(); } while(!feof(fp)) { fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n\",one.name,one.num,one.sex,one。age,one.record,one。position,one.wanges,one。tel,one。addr); - 15 - if(!strcmp(numb,one。num)) { printf(\"\\n\\n已查到,记录为:”); printf(\"\\n%-10s%—8s%—5s%—5s%—10s%—8s%—8s%-10s%-15s\\n\",one.name,one.num,one.sex,one.age,one.record,one。position,one。wanges,one。tel,one。addr); i=1; } } if(!i) printf(\"\\n\\n对不起,查无此人!。\"); fclose(fp); } void modify() { int m,k=0; long a; char namekey[8]; printf(”\\n请输入您要修改的职工的姓名:\"); scanf(\"%s\); if((fp=fopen(”worker。xls\",”r+”))==NULL) { printf(\"\\n不能打开该文件!\"); exit(); } while(!feof(fp)) { a=ftell(fp); - 16 - fscanf(fp,\"%s%s%s%s%s%s%s%s%s\\n\。name,one.num,one.sex,one.age,one.record,one。position,one。wanges,one.tel,one.addr); if(!strcmp(namekey,one.name)) { k=1; break; } } if(k) { printf(\"\\n已查到,记录为:\"); printf(\"\\n%-10s%—8s%-5s%-5s%-10s%—8s%—8s%-10s%—15s\\n\",one。name,one.num,one。sex,one.age,one。record,one.position,one.wanges,one。tel,one。addr); printf(\"\\n请输入信息(按照姓名、职工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):”); scanf(\"%s%s%s%s%s%s%s%s%s\。name,one.num,one。sex,one.age,one.record,one.position,one.wanges,one.tel,one。addr); fseek(fp,a,0); fprintf(fp,”%-10s%-8s%—5s%-5s%—10s%—8s%—8s%—10s%-15s\\n”,one。name,one.num,one。sex,one.age,one。record,one.position,one.wanges,one。tel,one。addr); } else printf(”\\n对不起,查无此人,无法进行修改.”); fclose(fp); } void delete() { - 17 - int m,k=0; long a,b; char namekey[8], valid[4]; printf(”\\n请输入您要删除的职工姓名:\"); scanf(”%s\",namekey); if((fp=fopen(\"worker。xls”,\"r+”))==NULL) { printf(\"\\n不能打开该文件!\"); exit(); } while(!feof(fp)) { a=ftell(fp); fscanf(fp,”%s%s%s%s%s%s%s%s%s\\n”,one.name,one。num,one.sex,one.age,one。record,one。position,one。wanges,one。tel,one。addr); if(strcmp(namekey,one。name)==0) { k=1; break; } } if(k==1) { printf(\"\\n已查到,记录为”); printf(\"\\n%-10s%—8s%—5s%-5s%-10s%-8s%-8s%-10s%-15s\\n\,one。num,one.sex,one.age,one。record,one.position,one。wanges,one。tel,one.addr); printf(”\\n确实要删除,按1;不删除,按0:\"); scanf(\"%d\&m); if(m==1) - 18 - { fseek(fp,a,0); fprintf(fp,\"%-10s%—8s%-5s%-5s%-10s%-8s%—8s%—10s%—15s\\n” \"”,””,\"”,\"\",\"”,\"”,\"\",\"\} } else printf(\"\\n对不起,查无此人。\"); fclose(fp); } - 19 - 因篇幅问题不能全部显示,请点此查看更多更全内容