C语言课程设计报告格式要求与范例

《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

相关推荐