《C语言程序设计》
课程设计报告
专 业: 电子信息工程(自动化) 班 级: 电信0904 姓 名: 陈列慧 指导教师: 彭琼 丁雄
20xx年 12月30日
C语言程序课程设计任务书
一、设计题目:职工信息管理系统
二、设计目的
1、熟练掌握C语言课程中所学的理论知识;
2、通过综合C语言的基本知识来解决实际问题;
3、加强分析和解决问题的能力;
三、设计内容
设计对5项职工信息管理的课程信息管理系统,每个职工有职工号、姓名、性别、年龄、学历、工资等。系统功能包括:
1、系统以菜单方式工作,密码登陆。
2、课程信息的录入功能(增加数据)。用数组数据类型赋初值的方法把课程信息送到各个数组中(但注意要是合法数据),然后把它们输出显示。
3、课程信息的删除(删除数据)。任意输入一门课程的编号,将它所有的信息从数组中删除。
4、课程信息的浏览功能(查找数据)。任意输入一门课程的编号,打印出所有相关数据。要求能多次查找。
5、课程信息的删除(修改数据)。任意输入一门课程的编号,打印出所有相关信息后,可对某一项信息进行修改并保存。
6、课程信息的计算并排序。计算所有课程的总学分及平均学分(aver,单精度,输出一位小数),将包括所有数据的数组元素按价格从高到低的顺序排序打印出来。
四、设计步骤
1、需求分析:对系统的应实现的功能进行分析。
2、概要设计:对系统功能进行模块分解,对模块的功能及模块之间的相互关系进行说明(如用到函数,则对函数间的接口进行说明),对系统使用的数据结构(各数组、主要变量的设置及其代表的含义)进行说明。
3、详细设计:用流程图、伪代码等方法对各主要算法进行描述。
4、编写代码:根据设计编写。源程序要按照程序的格式规范来编写,要求结构 2
清晰,界面友好,关键部分有必要的注释。
5、调试分析:准备充分的测试数据对系统进行调试(对错误的数据输入也要进行测试,保证程序的容错性),并通过测试对系统提出改进设想。
3
目 录
(空两行)
1………………………………………………………………页码 2………………………………………………………………页码 (要求:给出一级目录,宋体加粗,四号字
,1.5倍行距。) 4
(报告正文部分):
(要求:正文部分一律用小四号字,宋体,1.5倍行距。一级大标题靠左,加粗。二级大标题靠左,不加粗。)
课程设计的内容如下:
1. 课程设计目的(可参考任务书)
2.课程设计题目描述和要求(可参考任务书)
3.课程设计报告内容(以下仅供参考)
3.1 整个系统的框架结构与各个模块的接口设计与简介(可用绘图的方式表达说明系统的结构和个接口的定义)
…….
3.2登陆与主界面模块功能的设计与实现(包括流程图、源代码以及适当功能说明)
………..
3.3 具体负责的模块的功能的设计与实现(包括流程图、源代码以及适当功能说明)
……
3.4 模块的集成与调试(描述模块的集成与调试的一些细节工作)
………
4.总结(总结设计过程中的心得、经验、解决问题的方法和技巧、自己的收获等等)
………
5
参考书目:(五号,宋体加粗)
[1] 谭浩强,《C语言程序设计教程》,北京,清华大学出版社,20xx年
[2] …………………………………………………………………………..
(要求:五号字,宋体,单倍行距。按作者、书名、出版社、地点、出版时间格式逐一列出,中间用逗号格开)
6
附录(全部系统的源代码) //#include "StdAfx.h"
#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#define n1 20
#define m1 3
#define N 3
char zgxx[n1][m1][16];
struct people
{
char num[100]; //*职工号 char name[15]; //*姓名 char sex[20]; //*性别 char age[20]; //*年龄 char xueli[20]; //*学历 char gongzi[20]; //*工资 char address[20]; //*地址
char telephone[20]; //*电话号码}people[N];
void input(int i);
void enter();
void browse();
void add();
//void no_input(int i,int n) ; void search();
void modify();
void save(int n);
int load();
int modify_data(int i);
void printf_face();
void printf_back();
void printf_one(int i);
void menu();
void chack_No(int i);
void mima ();
void zggzpaixu();
7
void chack_No(int i)
{
if(i>0)
{
for(int k=0;k<i;k++)
{
if(strcmp(people[k].num,people[i].num)==0)
{
cout<<"您输入的职工号已存在,请更换号码!"<<endl; cout<<"职工号:";
cin>>people[i].num;
chack_No(i);
break;
}
}
}
}
void input(int i)
{
//no_input(i,i);
printf("职工号:");
scanf("%s",people[i].num);
chack_No(i);
printf("姓名:");
scanf("%s", people[i].name) ;
printf("性别:");
scanf("%s",people[i].sex);
printf("年龄:");
scanf("%s",people[i].age);
printf("学历:");
scanf("%s",people[i].xueli);
printf("工资:");
scanf("%s",people[i].gongzi);
printf("住址:");
scanf("%s",people[i].address);
printf("电话:");
scanf("%s",people[i].telephone);
}
void enter()
{
int i,n;
8
printf("请输入人数(0-%d) :",N-1);
scanf("%d",&n);
printf("\n 录入信息\n");
for(i=0;i<n;i++)
{
printf("\n 请输入第%d个人的信息.",i+1); input(i);
}
if(i!=0)save(n);
printf_back();
}
void browse()
{
int i,n;
n=load();
printf_face();
for(i=0;i<n;i++)
{
if((i!=0)&&(i%10==0))
{
printf("\n\n按任意键继续...."); getch();
puts("\n\n");
}
printf_one(i) ;
}
printf("\t共有%d条记录.\n",n);
printf("\n按任意键继续...");
getch();
menu();
}
void add()
{
int i,n,m,k;
FILE*fp;
n=load();
printf("你想添加的人数为(0-%d):",N-1-n); scanf("%d",&m);
k=m+n;
for(i=n;i<k;i++)
{
printf("\n输入第%d个人的信息.",i-n+1 ); 9
input(i);
}
if((fp=fopen("Pro.txt","ab"))==NULL)
{
printf("文件打开失败!\n");
}
for(i=n;i<k;i++)
if(fwrite(&people[i],sizeof(struct people),1,fp)!=1)
printf("文件写入失败!\n");
fclose(fp);
printf_back();
}
void search()
{
int i,n,k,w1=1,w2,w3,w4,m,a;
struct people p;
n=load();
do
{
printf("\n选择你要查询的方式 \n\t1).按学历 2).按职工号 [ ]\b\b"); scanf("%d",&m);
switch(m)
{
case 1:
do
{
k=-1;
printf("\n\n请输入你要查询的学历:");
scanf("%s",p.xueli);
printf_face();
for(i=0;i<n;i++)
if(strcmp(p.xueli,people[i].xueli)==0)
{
k=i;
printf_one(k);
break;
}
if(k==-1)
{
printf("\n\n你输入的学历不存在!");
printf("\n\n你想继续查询吗?\n\t 1).是 2).否 [ ]\b\b"); scanf("%d",&w1);
if(w1==2)
printf_back();
10
}
}
while(k==-1&&w1==1);
break;
case 2:
do
{
k=-1;
printf("\n\n请输入你要查询的职工号:");
scanf("%s",p.num);
printf_face();
for(i=0;i<n;i++)
if(strcmp(p.num,people[i].num)==0)
{
k=i;
printf_one(k);break;
}
if(k==-1)
{
printf("\n\n你输入的职工号不存在!");
printf("\n\n你想继续查询吗?\n\t1).是 2).否 [ ]\b\b"); scanf("%d",&w1);
if(w1==2)
printf_back();
}
}
while(k==-1&&w1==1);
break;
}
w4=0;w3=0;
if(k!=-1)
{
printf("\n\n请选择你要进行的操作:\n\t 1).查询 2).修改 3).删除 4).返回主菜单
[ ]\b\b");
scanf("%d",&w2);
switch(w2)
{
case 2:w3=modify_data(k);
break;
case 3:
printf("\n你确定要删除吗?\n\t 1).是 2).否 [ ]\b\b");
11
scanf("%d",&w4);
if(w4==1)
for(a=k;a<n;a++)
{
strcpy(people[a].num,people[a+1].num);
strcpy(people[a].name,people[a+1].name);
strcpy(people[a].sex,people[a+1].sex);
strcpy(people[a].age,people[a+1].age);
strcpy(people[a].xueli,people[a+1].xueli);
strcpy(people[a].gongzi,people[a+1].gongzi);
strcpy(people[a].address,people[a+1].address);
strcpy(people[a].telephone,people[a+1].telephone);
}
break;
}
if(w3==1||w4==1)
{
save(n);
printf("\n\n操作成功! ^_^ ");
printf("\n\n请输入你要进行的操作: \n\t 1).继续查询 2).返回上一级 [ ]\b\b" ); scanf("%d",&w2);
}
}
}
while(w2==1);
menu();
}
void modify()
{
struct people p;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{
if((i!=0)&&(i%10==0))
{
printf("\n\n请记着你要修改的职工号。按任意键继续 ...");
getch();
12
puts("\n\n");
}
printf_one(i);
}
do
{
printf("\n\n请输入你要修改的职工信息的职工号:");
scanf("%s",p.num);
for(i=0;i<n;i++)
if(strcmp(p.num,people[i].num)==0)
{
k=i;
p=people[i];
}
if(k==-1)printf("\n\n你的输入有误,请重新输入");
}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_data(k);
if(w1==1)
{
printf("\n操作成功! ^_^.\n是否继续修改?\n\n\t 1).是 2).否\t[ ]\b\b"); scanf("%d",&w0);
w2=1;
}
else
{
w0=0;
if(w2==1)
people[k]=p;
}
if(w0!=1&&w2==1)
save(n);
}
while(w0==1);
menu();
}
void save(int n)
{
FILE *fp;
int i;
13
if((fp=fopen("Pro.txt","wb"))==NULL)
{
printf("\n文件打开失败!\n");
}
for(i=0;i<n;i++)
if(people[i].num!=0)
if(fwrite(&people[i],sizeof(struct people),1,fp)!=1)
printf("文件写入失败!\n");
fclose(fp);
}
int load()
{
FILE *fp;
int i;
if((fp=fopen("Pro.txt","rb"))==NULL)
{
printf("\n文件打开失败!\n");
return NULL;
}
for(i=0;!feof(fp);i++)
fread(&people[i],sizeof(struct people),1,fp);
fclose(fp);
return(i-1);
}
int modify_data(int i)
{
int c,w1;
do
{
puts("\n请选择你要修改的选项\n\n 1).职工号 2).姓名 3).性别 4).年龄 5).学历 6)工资 7)住址 8)电话 ");
printf("您的选择是:[ ]\b\b");
scanf("%d",&c);
if(c>8||c<1)
{
puts("\n输入错误,请重新输入!");
getchar();
}
}
while(c>8||c<1);
do
{
14
switch(c)
{
case 1:printf("职工号:");scanf("%s",people[i].num);break; case 2:printf("姓名:");scanf("%s",people[i].name);break; case 3:printf("性别:");scanf("%s",people[i].sex);break; case 4:printf("年龄:");scanf("%s",people[i].age);break; case 5:printf("学历:");scanf("%s",people[i].xueli);break; case 6:printf("工资:");scanf("%s",people[i].gongzi);break; case 7:printf("住址:");scanf("%s",people[i].address);break; case 8:printf("电话:");scanf("%s",people[i].telephone);break; }
puts("\n现在信息:\n");
printf_face();
printf_one(i);
printf("\n你确定吗\n\n\t 1).是 2).否 3).返回且不保存 [ ]\b\b"); scanf("%d",&w1);
}
while(w1==2);
return w1;
}
//
void no_input(int i,int n)
{
int j,k,w1;
do
{
w1=0;
for(j=0;people[i].num[j]!='\0';j++)
if(people[i].num[j]>'9')
{
puts("输入错误,请从新输入!\n");
w1=1;break;
}
if(w1!=1)
for(k=0;k<n;k++)
if(k!=i&&strcmp(people[k].num,people[i].num)==0) {
puts("你输入的职工号已经存在了,请从新输入!\n"); }
}
while(w1==1);
}
15
void printf_face()
{
printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n");
}
void printf_one(int i)
{
printf("%9s%9s%9s%9s%9s%9s%10s%12s\n",people[i].num,people[i].name,people[i].sex,people[i].age,people
[i].xueli,people[i].gongzi,people[i].address,people[i].telephone);
}
void printf_back()
{
int w;
printf("\n\t操作成功!.^_^\n\n");
printf("请选择:\n\n\t1).浏览所有信息 \t2).返回 : [ ]\b\b");
scanf("%d",&w);
if(w==1)
browse();
else menu();
}
void pai_x()
{
int i,j,t=0,x,z,max,m=5,n=3;
float s=0;
int f[m1];
char num[100],age[20],address[20],name[15],gongzi[20],sex[20],telephone[20],xueli[20]; for (i=0;i<N;i++)
{
for(j=i;j<N;j++)
{
if (strcmp(people[i].gongzi,people[j].gongzi )<0)
{
strcpy(num,people[i].num);
strcpy(people[i].num,people[j].num);
strcpy(people[j].num ,num);
strcpy(age,people[i].age);
strcpy(people[i].age,people[j].age);
strcpy(people[j].age ,age);
16
strcpy(address,people[i].address);
strcpy(people[i].address,people[j].address);
strcpy(people[j].address ,address);
strcpy(name,people[i].name);
strcpy(people[i].name,people[j].name);
strcpy(people[j].name ,name);
strcpy(gongzi,people[i].gongzi);
strcpy(people[i].gongzi,people[j].gongzi);
strcpy(people[j].gongzi ,gongzi);
strcpy(xueli,people[i].xueli);
strcpy(people[i].xueli,people[j].xueli);
strcpy(people[j].xueli ,xueli);
strcpy(sex,people[i].sex);
strcpy(people[i].sex,people[j].sex);
strcpy(people[j].sex,sex);
strcpy(telephone,people[i].telephone);
strcpy(people[i].telephone,people[j].telephone);
strcpy(people[j].telephone,telephone);
}
}
}
for (i=0;i<N;i++)
{
printf("%9s%9s%9s%9s%9s%9s%10s%12s\n",people[i].num,people[i].name,people[i].sex,people[i].age,people[i].xueli,people[i].gongzi,people[i].address,people[i].telephone);
}
printf("请按上面工资顺序重新输入工资\n");
for(i=0;i<n-t;i++)
{
scanf("%d",&f[i]);
}
for(i=0;i<n-t;i++)
{
s=s+f[i];
}
printf("总工资是%6.2f平均工资是%6.2f\n",s,s/(N-t));
for(i=0;i<n-t;i++)
{
for(j=0,max=0;j<n-t;j++)
{
if(max<f[j])
17
{
max=f[j],x=j;
}
}
f[x]=0;
for(z=0;z<m;z++)
{
printf("%s\t",zgxx[x][z]);
}
printf("\n");
}
printf("\n按任意键继续...");
getch();
menu();
}
void jiem()
{
int a;
printf("\t\t\t**************************\n");
printf("\t\t\t欢迎进入职工工资排序系统!!\n");
printf("\t\t\t**************************\n\n\n\n\n");
printf("要进行排序请按(1),否则返回!\n");
scanf ("%d",&a);
printf("职工信息将按工资由高到低排序:\n");
if (a==1)
pai_x();
else
menu();
}
void menu()
{
int n,w1;
do
{
system("cls");//清屛
printf("\n\t ************************************************\n"); printf("\t *********欢迎进入职工信息管理系统***************\n"); printf("\t ************************************************\n"); printf("\t 1 录入职工信息 \n");
18
printf("\t 2 修改职工信息 \n");
printf("\t 3 查询及删除职工信息(学历/职工号) \n"); printf("\t 4 浏览信息 \n");
printf("\t 5 添加信息 \n");
printf("\t 6 计算排序 \n");
printf("\t 7 退出系统 \n");
printf("\t ************************************************\n"); printf("\t请选择(1-7):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>6)
w1=1;
else w1=0;
}
while(w1==1);
switch(n)
{
case 1:enter();break;
case 2:modify();break;
case 3:search();break;
case 4:browse();break;
case 5:add();break;
case 6:jiem();break;
case 7:exit(0);
}
}
void mima()
{
int n=3,i,k,cis=0;
char a[7];
for(i=0;;)
{
for(k=0;;)//**********用密码控制进入菜单********** {
// printf("\t\t 请输入密码: ");
for(i=0;i<6;i++)
{
a[i]=getch();
putchar('*');
}
printf("\n\n");
a[6]='\0';
if(strcmp(a,"123456")!=0)
{
19
printf("密码错误!请重新输入:\n");
cis++;
if(cis==3)
{
printf("你的输入次数已到,再见\n");
exit(0);
}
}
else break;
}
system ("cls");
printf("\t\t 登陆成功\n\n\t欢迎进入职工信息管理系统!\n"); printf("\n\n");
menu();
}
}
void main()
{
system("color f0");
printf("\n\n\n\n\n\n\t\t --*********欢迎,欢迎,欢迎!********--\n\n\n\n"); printf("\t\t--*********参加本程序制作的成员有:********--\n\n\t\t\t 罗鹏邓金彪 \n\n\t\t\t 于勤 陈列慧 陈智雄\n\n\n\n");
printf("请你输入密码:\n");
mima();
system("cls");
menu();
}
卢添骄20
信息工程学院网页设计与制作课程设计报告书指导教师专业班级姓名学号日期20xx年6月4日20xx年6月10日网页设计与制作课程设计一…
课程名称课程设计题目院别矿业与安全工程学院专业安全技术及管理姓名学号同组人员指导教师段汉文目录第一章系统设计分析311设计要求31…
C语言程序设计课程设计报告专业电子信息工程自动化班级电信0904姓名陈列慧指导教师彭琼丁雄20xx年12月30日C语言程序课程设计…
课程设计报告题目姓名专业班级学号设计成绩指导教师设计完成日期20xx年月日课程设计任务书题目系部专业班级学生姓名学号月日至月日共周…
《课程设计报告》的格式要求撰写课程设计报告参考格式:题目(居中,小三号黑体字)学生姓名(学号)(学生姓名之间两格)(一律采用五号宋…
大连交通大学软件学院C语言课程设计报告SOFTWAREINSTITUTEOFDALIANJIAOTONGUNIVERSITYEXP…
海南大学三亚学院信息管理与信息系统专业课程设计实验报告题目C语言程序设计实习分院管理分院专业信息管理与信息系统班级信管0902姓名…
3130111103福建工程学院C语言课程设计报告班级机械1301学号姓名指导教师日期20xx123020xx1331301111…
沈阳航空航天大学课程设计报告课程设计名称C语言课程设计课程设计题目猜数游戏院系计算机学院专业计算机科学与技术班级04010101学…
本次课程设计已经圆满结束了,通过这次课程设计,巩固和加深了学生对C语言基本知识和语言特点的理解和掌握,使学生熟练掌握了C语言编程和…