摘要:职工信息管理系统是实现对职工信息的添加、删除、查询、修改、新建列表、排序等功能;使用结构体储存全部职工的基本信息和情况!可以将数组中的信息保存到指定文件中,并且对指定文件进行读取以将信息读入到数组中,也可将多个文件组成一个文件进行管理。
一、专业设计目的
(1) 巩固C语言的基本语法,掌握函数设计方法和结构化设计思想。
(2) 掌握结构体数组的定义和使用。
(3) 掌握C语言的文件进行操作。掌握结构体数据写入文件中读取结构体数据的方法。
(4) 了解规范的程序设计思想和程序编码格式。
(5) 了解职工管理过程中所需要处理的信息以及相关的处理方法。
二、设计基本要求
(1) 职工信息包括职工编号、姓名、性别、婚姻状况、学位、所属部门、职位、工资、工龄等信息,定义结构体储存职工信息。
(2) 用数组临时保存输入的职工信息,并且可以对现有列表中的职工信息进行增加,修改,查询,删除等基本操作。
(3) 使用二进制文件完成职工信息的储存与读取,要求每次运行某个操作时可以将文件中数据读入结构体中,并给用户提供保存选项,可以将结构体中的数据保存在二进制文件中。
(4) 系统以菜单方式工作,编写完成后应实现类似下图所示界面。
三、算法分析
1.数据结构
(1)设计一个存储一条职工信息的结构体,可参考使用下述的结构体数据类型定义:
struct Employee {
char EmployeeNum[15];
char EmployName[20];
char EmployGender[20];
char EmployeeMarriage[20];
char EmployeeDegree[20];
char EmployeeDepart[20];
char EmployeePosition[20];
char EmployeePay[20];
char EmployeeWorkTime[20];
};
typedef struct Employee EmpInfo;
(2)在头文件中采用了宏定义,用整型、浮点型、字符型等来定义所包含的数据和变量;在头文件中定义全局变量,并统一了名称和数值。
2.函数定义
程序代码由五个源文件和一个头文件构成,具体文件内容和函数功能说明如表1.1所示。
表1.1 文件及函数说明
**源文件/头文件**
main_menu_sel_new_quit.c
void main(void) 总控整个程序
int menu_select(void) 显示界面,接收用户选择的命令代码void handle_menu(void) 处理用户选择的操作
void newRecord(void) 重新在内存中建立职工信息列表
void quit(void) 退出程序
**源文件/头文件**
dis_add.c
void addRecord(void) 增加记录
void display(void) 显示内存里已记录的员工信息
void addInfo(int num) 写入指定员工信息
void printInfo(int num) 打印指定员工信息
**源文件/头文件**
find_del_modify.c
void deleteRecord(void) 删除内存中所选定的操作记录
intfindRecord(char*target,int targetType,int form) 查找指定的记录
void findInfo(void) 查询内存中指定的员工的信息
void modifyRecord(void) 修改内存中指定员工的信息
**源文件/头文件**
save_load.c
int saveRecords(void) 将记录存入指定文件
int loadRecords(void) 将指定文件里的记录文件读入内存
**源文件/头文件**
sort_copy.c
void sortInfo(void) 对内存中的员工信息按要求进行排序
voidcopyRecord(EmpInfo* src,EmpInfo* temp) 将src指向的记录复制给temp指向的记录
静态变量及常数定义 提供静态变量及常数
**源文件/头文件**
employee.h
结构体定义 员工信息结构
库函数及自定义函数声明 调用库函数及自定义函数
3.处理过程
(1)为一些函数设计一个整型返回值用来区分函数操作是否正确.每个员工的信息用一个Emplnfo的结构体来保存,用一个EmplInfo类型的数组records来保存一组员工信息。用宏定义INITIAL_SIZE来规定这个数组的大小,如果所定的数组大小不够时,用另一个宏定义INCR_SIZE来动态申请内存增加数组大小。用全局变量numEmpl来记录学生数,用arraySize为数组分配空间大小。
(2)saveFlag是否保存员工信息的标志,当员工信息已经保存到文件时设置为0表示“已保存”;当没有存入文件时,设置为1表示“为保存”,以次为关键点展开对文件的保存、载入、叠加等相关操作。
(3)主要函数的算法
1)addRecord函数
用来在当前链表尾部增加新的信息,只要将新的信息保存到record[numEmpl]中即可,然后numEmpl自加1,完成操作。如果在增加新的信息前,numEmpl已经大于或等于arraySize,这时就要使用realloc函数重新分配一块大小为(arrySize+INCR_SIZE)EmpInfo的数组的存储块,并重新设置arraySize。
2)loadRecord函数
进行两个文件拼接时,在内存无极录的情况下,对读入的第二天文件进行询问。如果覆盖原来记录,就先保存原纪录,然后令numEmpl=0,否则原来的numEmpl不变。在读取文件时,使用fread函数,每次读取sizeof(EmpInfo)个字节,存在数组records[numEmpl中,并令numEmpl自加1,如此下去,直到读完文件。如果在每读入一条信息之前,numEmpl已经大于或等于arraySize,那么就使用realloc函数重新为records分配大小为(arraySize+INCR_SIZE)EmpInfode的数组的存储块,并重新设置arraySize。
3)deleteRecord、findInfo、modifyInfo函数
4)sortInfo函数
此排序操作函数主要应用冒泡排序法进行排序。
四、源程序代码
#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include
#include
#include
#include
#define INITIAL_SIZE 100 /*数组初始化大小*/
#define INCR_SIZE 50 /*数组每次增加的大小*/
struct Employee {
char EmployeeNum[15]; /*员工的编号*/
char EmployName[20]; /*员工的姓名*/
char EmployGender[20]; /*员工的性别*/
char EmployeeMarriage[20]; /*员工的婚姻状况*/
char EmployeeDegree[20]; /*员工的学位*/
char EmployeeDepart[20]; /*员工所属部门*/
char EmployeePosition[20]; /*员工职位*/
char EmployeePay[20]; /*员工工资*/
char EmployeeWorkTime[20]; /*员工工龄*/
};
typedef struct Employee EmpInfo;
extern int numEmpl; /*记录的员工数*/
extern EmpInfo *records; /*记录员工信息的数组*/
extern char savedFlag; /*信息是否已保存的标志,0为已保存,1为未保存*/
extern int arraySize; /*数组大小*/
void handle_menu(void);
int menu_select(void);
void addRecord(void);
void modifyRecord(void);
void display(void);
void findInfo(void);
void deleteRcord(void);
void sortInfo(void);
int saveRecords(void);
int loadRecords(void);
void newRecords(void);
void quit(void);
int findRecord(char *target,int targetType,int from);
void copyRecord(EmpInfo *src,EmpInfo *dest);
void addInfo(int num);
void printInfo(int num);
#endif //H_STUDENT_HH
#include"employee.h"
/**********************
* 初始化
***********************/
int numEmpl=0; /*记录的员工数*/
EmpInfo*records=NULL; /*记录员工信息的数组*/
char savedFlag=0; /*信息是否已保存的标志,0为已保存,1为未保存*/
int arraySize; /*数组大小*/
/******************************
* 主函数
******************************/
void main(void){
printf("\n");
printf("\t***************************************************\n");
printf("\t* *\n");
printf("\t* 欢迎您使用本管理系统 *\n");
printf("\t* *\n");
printf("\t***************************************************\n");
printf("\n");
getch();
system("cls");
/*初始化数组*/
records=(EmpInfo*)malloc(sizeof(EmpInfo)*INITIAL_SIZE);
if(records==NULL) {
printf("memory fail!");
exit(-1);
}
arraySize=INITIAL_SIZE;
handle_menu();
}
/***********************
* 菜单处理函数
***********************/
void handle_menu(void) {
for(; ;) {
switch(menu_select()) {
case 0:
addRecord();
getch();
system("cls");
break;
case 1:
modifyRecord();
getch();
system("cls");
break;
case 2:
display();
getch();
system("cls");
break;
case 3:
findInfo();
system("cls");
break;
case 4:
deleteRecord();
system("cls");
break;
case 5:
sortInfo();
system("cls");
break;
case 6:
saveRecords();
system("cls");
break;
case 7:
loadRecords();
getch();
system("cls");
break;
case 8:
newRecords();
getch();
system("cls");
break;
case 9:
quit();
}
}
}
/******************************
* 菜单选择函数menu_selected
******************************/
int menu_select(void) {
char s[2];
int choice=0;
printf("\n");
printf("\t******菜单选项******\n");
printf("\n");
printf("\t0.增加员工信息\n");
printf("\t1.修改员工信息\n");
printf("\t2.显示员工信息\n");
printf("\t3.查询员工信息\n");
printf("\t4.删除员工信息\n");
printf("\t5.对员工信息进行排序\n");
printf("\t6.保存员工信息至记录文件\n");
printf("\t7.从记录文件读取员工信息\n");
printf("\t8.新建员工信息文件\n");
printf("\t9.退出管理系统\n");
printf("\t********************");
printf("\n\t左边数字对应功能选择,请选择0--9: ");
for(; ;) {
scanf("%S",s);
choice=atoi(s); /*处理键入的非数字键,过滤出数字0*/
if(choice==0&&(strcmp(s,"0")!=0))
choice=11;
if(choice<0||choice>9)
printf("\n\t输入错误,重选0--9: ");
else
break;
}
return choice;
}
/********************************************************************
* 新建员工信息记录
* 结果:若原来信息没有保存,则保存原来的信息,然后重新输入信息记录
********************************************************************/
void newRecords(void) {
char str[5];
if(numEmpl!=0) {
if(savedFlag==1) {
printf("现在已经有记录,选择处理已有记录的方法。\n");
printf("是否保存原来的记录?(y/n)");
scanf("%s",str);
if(str[0]!='n' && str[0]!='N')
saveRecords();
}
}
numEmpl=0;
addRecord();
}
/********************************************************************
* 结束运行,退出
* 参数 void
********************************************************************/
void quit(void) {
char str[5];
if(savedFlag==1) {
printf("是否保存原来的记录?(y/n)");
scanf("%s",str);
if(str[0]!='n' || str[0]!='N')
saveRecords();
}
free(records);
exit(0);
}
#include"employee.h"
/*******************************
* 显示所有的员工信息
*******************************/
void display(void) {
int i;
char str[3];
if(numEmpl==0) {
printf("没有可供显示的记录!");
return;
}
printf("\n1.显示简明员工信息\n2.显示详细员工信息\n您的选择: ");
scanf("s%",str);
if(str[0]=='2') {
for(i=0;i/*打印员工信息*/
printInfo(i);
/*打印满20个记录后停下来*/
if(i%20==0 && i!=0) {
printf("输入任意字符后继续...");
getch();
printf("\n\n");
}
}
}
if(str[0]=='1') {
for(i=0;iprintf("编号\t姓名\t部门\t职位\n");
printf("%s\t%s\t%s\t%s\n",records[i].EmployeeNum,
records[i].EmployName,
records[i].EmployeeDepart,
records[i].EmployeePosition);
if(i%20==0&&i!=0) {
printf("输入任意字符后继续...");
getch();
printf("\n\n");
}
}
}
}
/********************************************************************
* 在当前表的末尾增加新的信息
* 结果:records中将记录新的信
* 息,如果数组大小不够,会重
* 新申请数组空间
********************************************************************/
void addRecord(void){
char str[10];
if(numEmpl==0)
printf("原来没有记录,现在建立记录\n");
else
printf("下面在当前表的末尾增加新的信息\n");
while(1){
printf("你将要添加一组员工信息,确定吗?(y/n)");
scanf("%s",str);
if(str[0]=='n' || str[0]=='N')
break;
if(numEmpl>=arraySize){
records=realloc(records,(arraySize+INCR_SIZE)*
sizeof(EmpInfo));
if(records==NULL){
printf("memory failed!");
exit(-1);
}
arraySize=arraySize+INCR_SIZE;
}
addInfo(numEmpl);
numEmpl++;
}
printf("现在一共有%d条信息\n",numEmpl);
savedFlag=1;
}
void addInfo(int num){
char str1[10];
char str2[10];
char str3[10];
char str4[10];
printf("请输入员工编号:");
scanf("%s",records[num].EmployeeNum);
printf("请输入员工姓名:");
scanf("%s",records[num].EmployName);
printf("请输入员工性别(0为女,1为男):");
scanf("%s",str1);
if(str1[0]=='0')
strcpy(records[num].EmployGender,"女");
else
strcpy(records[num].EmployGender,"男");
printf("请输入员工婚姻状况(0为未婚,1为已婚):");
scanf("%s",str2);
if(str2[0]=='0')
strcpy(records[num].EmployeeMarriage,"未婚");
else
strcpy(records[num].EmployeeMarriage,"已婚");
printf("请输入员工学历:(0.大学本科生,1.硕士研究生,2.博士研究生):");
scanf("%s",str3);
if(str3[0]=='0')
strcpy(records[num].EmployeeDegree,"大学本科生");
else if(str3[0]=='1')
strcpy(records[num].EmployeeDegree,"硕士研究生");
else if(str3[0]=='2')
strcpy(records[num].EmployeeDegree,"博士研究生");
printf("请输入员工所在部门:");
scanf("%s",records[num].EmployeeDepart);
printf("请输入员工职务:(0.职员,1.主任,2.经理,3.董事长)");
scanf("%s",str4);
if(str4[0]=='0')
strcpy(records[num].EmployeePosition,"职员");
if(str4[0]=='1')
strcpy(records[num].EmployeePosition,"主任");
if(str4[0]=='2')
strcpy(records[num].EmployeePosition,"经理");
if(str4[0]=='3')
strcpy(records[num].EmployeePosition,"董事长");
printf("请输入员工工资:");
scanf("%s",records[num].EmployeePay);
printf("请输入员工工龄:(以年为单位计算):");
scanf("%s",records[num].EmployeeWorkTime);
}
void printInfo(int num){
printf("编号\t姓名\t性别\t婚姻状况\t学位\t部门\t职位\t工资\t工龄\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
records[num].EmployeeNum,
records[num].EmployName,records[num].EmployGender,
records[num].EmployeeMarriage,records[num].EmployeeDegree,
records[num].EmployeeDepart,records[num].EmployeePosition,
records[num].EmployeePay,records[num].EmployeeWorkTime);
}
#include "employee.h"
int findRecord(char* target,int targetType,int from){
int i;
for(i=from;iif((targetType==0 && strcmp(target,records[i].EmployeeNum)==0)
||(targetType==1 && strcmp(target,records[i].EmployName)
==0)
||(targetType==2&&strcmp(target,records[i].EmployeeDepart)
==0))
return i;
}
return -1;
}
void findInfo(void){
char str[5];
char target[20];
int type;
int count;
int i;
if(numEmpl==0) {
printf("没有可供查询的记录!");
getch();
return;
}
while(1){
printf("请输入查找的方式:\n");
printf("1.按员工编号\n");
printf("2.按员工姓名\n");
printf("3.按员工所在部门\n");
printf("4.结束查询\n");
scanf("%s",str);
if(str[0]=='4')
return;
if(str[0]=='1') {
printf("请输入欲查询的员工的编号:");
scanf("%s",target);
type=0;
}
else if(str[0]=='2'){
printf("请输入欲查找的员工的姓名:");
scanf("%s",target);
type=1;
}
else if(str[0]=='3'){
printf("请输入欲查找的员工所在部门:");
scanf("%s",target);
type=2;
}
i=findRecord(target,type,0);
if(i!=-1){
printf("编号\t姓名\t性别\t婚姻状况\t学位\t部门\t职位\t工资\t工龄\n");
}
count=0;
while(i!=-1){
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
records[i].EmployeeNum,records[i].EmployName,
records[i].EmployGender,records[i].EmployeeMarriage,
records[i].EmployeeDegree,records[i].EmployeeDepart,
records[i].EmployeePosition,records[i].EmployeePay,
records[i].EmployeeWorkTime);
i=findRecord(target,type,i+1);
count++;
}
if(count==0)
printf("没有符合条件的员工!\n");
else
printf("一共找到了%d名员工的信息\n\n",count);
}
}
void deleteRecord(void){
char str[5];
char target[20];
int type;
int i,j;
if(numEmpl==0) {
printf("没有可供删除的记录!");
getch();
return;
}
while(1){
printf("请输入如何找到欲删除的记录的方式:\n");
printf("1.按员工编号\n");
printf("2.按员工姓名\n");
printf("3.退出删除操作\n");
scanf("%s",str);
if(str[0]=='3')
return;
if(str[0]=='1'){
printf("请输入该员工编号:");
scanf("%s",target);
type=0;
}
else if(str[0]=='2'){
printf("请输入该员工的姓名:");
scanf("%s",target);
type=1;
}
i=findRecord(target,type,0);
if(i==-1)
printf("没有符合条件的员工!\n");
while(i!=-1){
printInfo(i);
printf("确定要删除这个员工信息吗?(y/n)");
scanf("%s",str);
if(str[0]=='y'||str[0]=='Y'){
numEmpl--;
for(j=i;j1],&records[j]);
}
printf("成功删除记录!\n");
}
else
break;
/*取下一个符合条件的记录*/
i=findRecord(target,type,i++);
}
}
savedFlag=1;
}
/*********************************************************************
修改指定员工的消息
***********************************************************************/
void modifyRecord(void){
char str[5];
char target[10];
int type;
int i;
if(numEmpl==0){
printf("没有可供修改的记录!");
getch();
return;
}
while(1){
printf("请输入如何找到欲修改的记录的方式:\n");
printf("1.按员工编号\n");
printf("2.按员工姓名\n");
printf("退出修改操作\n");
scanf("%s",str);
if(str[0]=='3')
return;
if(str[0]=='1'){
printf("请输入该员工编号:");
scanf("%s",target);
type=0;
}
if(str[0]=='2'){
printf("请输入该员工姓名:");
scanf("%s",target);
type=1;
}
i=findRecord(target,type,0);
if(i==-1)
printf("没有符合条件的员工!\n");
while(i!=-1){
/*打印员工信息*/
printInfo(i);
printf("确定要修改这个员工的信息吗?(y/n)");
scanf("%s",str);
if(str[0]=='y'||str[0]=='Y'){
addInfo(i);
printf("修改记录成功!\n");
}
i=findRecord(target,type,i+1);
}
}
savedFlag=1;
}
#include"employee.h"
/***********************************************
*文件储存操作函数
*结果;数组records被保存至指定文件
*返回:成功0,失败-1
************************************************/
int saveRecords(void){
FILE *fp;
char fname[30];
if(numEmpl==0){
printf("\n\n没有记录可存!\n\n");
getch();
return -1;
}
printf("\n\n输入要存入的文件名:\n\n");
scanf("%s",fname);
if((fp=fopen(fname,"wb"))==NULL){
printf("不能存入文件!\n");
getch();
return(-1);
}
printf("\n存入文件...\n");
fwrite(records,sizeof(EmpInfo)*numEmpl,1,fp);
fclose(fp);
printf("%d条记录已经存入文件,请继续操作。\n",numEmpl);
savedFlag=0; /*更新是否已保存的标记*/
getch();
return(-1);
}
/********************************************************************************
*文件储存操作函数
*结果;records将为从指定文件中读取出的记录
*返回:成功0,失败-1
***********************************************************************************/
int loadRecords(void){
FILE *fp;
char fname[30];
char str[5];
if(numEmpl!=0&&savedFlag==0){
printf("请选择你是要覆盖现有记录(y),还是要将");
printf("读取的记录添加到现有记录之后(n)?\n");
scanf("%s",str);
if(str[0]=='n'||str[0]=='N'){
/*将读取的记录添加到现有记录之后*/
savedFlag=1;
}
else{
if(savedFlag==1){
/*覆盖现有记录*/
scanf("%s",str);
if(str[0]!='n'&&str[0]!='N')
printf("读取文件将会更改原来的记录");
printf("是否保存原来的记录?(Y/n)");
saveRecords();
}
numEmpl=0;
}
}
printf("\n\n请输入要读取的文件名:");
scanf("%s",fname);
if((fp=fopen(fname,"rb"))==NULL){
printf("\n\n打不开文件!请重新选择\n\n");
return-1;
}
printf("\n取文件\n");
while(!feof(fp)){
/*现在的数组空间不足,需要重新申请空间*/
if(numEmpl>=arraySize){
records=realloc(records,(arraySize+INCR_SIZE)*sizeof(EmpInfo));
if(records==NULL){
printf("memory failed!");
exit(-1);
}
arraySize=arraySize+INCR_SIZE;
}
if(fread(&records[numEmpl],sizeof(numEmpl),1,fp)!=1)
break;
numEmpl++;
}
fclose(fp);
printf("现在共有%d条记录。",numEmpl);
return 0;
}
#include"employee.h"
/***********************************************
*文件储存操作函数
*结果;数组records被保存至指定文件
*返回:成功0,失败-1
************************************************/
int saveRecords(void){
FILE *fp;
char fname[30];
if(numEmpl==0){
printf("\n\n没有记录可存!\n\n");
getch();
return -1;
}
printf("\n\n输入要存入的文件名:\n\n");
scanf("%s",fname);
if((fp=fopen(fname,"wb"))==NULL){
printf("不能存入文件!\n");
getch();
return(-1);
}
printf("\n存入文件...\n");
fwrite(records,sizeof(EmpInfo)*numEmpl,1,fp);
fclose(fp);
printf("%d条记录已经存入文件,请继续操作。\n",numEmpl);
savedFlag=0; /*更新是否已保存的标记*/
getch();
return(-1);
}
/********************************************************************************
*文件储存操作函数
*结果;records将为从指定文件中读取出的记录
*返回:成功0,失败-1
***********************************************************************************/
int loadRecords(void){
FILE *fp;
char fname[30];
char str[5];
if(numEmpl!=0&&savedFlag==0){
printf("请选择你是要覆盖现有记录(y),还是要将");
printf("读取的记录添加到现有记录之后(n)?\n");
scanf("%s",str);
if(str[0]=='n'||str[0]=='N'){
/*将读取的记录添加到现有记录之后*/
savedFlag=1;
}
else{
if(savedFlag==1){
/*覆盖现有记录*/
scanf("%s",str);
if(str[0]!='n'&&str[0]!='N')
printf("读取文件将会更改原来的记录");
printf("是否保存原来的记录?(Y/n)");
saveRecords();
}
numEmpl=0;
}
}
printf("\n\n请输入要读取的文件名:");
scanf("%s",fname);
if((fp=fopen(fname,"rb"))==NULL){
printf("\n\n打不开文件!请重新选择\n\n");
return-1;
}
printf("\n取文件\n");
while(!feof(fp)){
/*现在的数组空间不足,需要重新申请空间*/
if(numEmpl>=arraySize){
records=realloc(records,(arraySize+INCR_SIZE)*sizeof(EmpInfo));
if(records==NULL){
printf("memory failed!");
exit(-1);
}
arraySize=arraySize+INCR_SIZE;
}
if(fread(&records[numEmpl],sizeof(numEmpl),1,fp)!=1)
break;
numEmpl++;
}
fclose(fp);
printf("现在共有%d条记录。",numEmpl);
return 0;
}
五、源程序代码测试
5.1程序主界面
(1) 职工信息管理系统主界面如图5.1所示。
图5.1 职工信息管理系统主界面
(2) 职工信息基本信息管理界面如图5.2所示。
图5.2 职工信息管理系统主界面
(3)增加员工信息界面如图5.3所示。
图5.3增加员工信息界面
(4)修改员工信息界面如图5.4所示。
图5.4修改员工信息界面如
(5)查询员工信息界面如图5.5所示。
图5.5查询员工信息界面
(6)删除员工信息界面如图5.6所示。
图5.6删除员工信息界面
(7)对员工员工信息进行排序界面如图5.7所示。
图5.7对员工员工信息进行排序界面
(8)保存员工信息至记录文件界面如图5.8所示。
图5.8保存员工信息至记录文件界面
(9)从记录文件读取员工信息界面如图5.9所示。
图5.9从记录文件读取员工信息界面
(10)新建员工信息文件界面如图5.10所示。
图5.10新建员工信息文件界面
结束语
这次专业实习,我选择陈和梁*组成三人组共同承担 “职工信息管理系统”这个课题。确定课题后,我们就这个课题立刻展开数次的小组讨论。我根据组员的实际能力,把专业实习的工作进行分摊。通过大家的努力工作、团结一致、相互协作,最后提前按质按量完成这次专业的课程设计。
通过这次实习操作,让我各方面都有了很大的提高。一、专业知识有了很大的提高。让我更加熟练C++的编程软件、更好地掌握C++语言的基本知识和技能;掌握了面向对象程序设计的基本思路和方法;能够更好地利用所学的基本知识和技能,解决简单的面向对象程序设计问题;成功制作“职工信息管理系统”。
二、团队意识和团队精神大大提高。在当今信息量庞大的程序世界里,单凭一个人的力量是非常渺小的,必须提高团队意识和精神并利用好团队协作的力量才能更好的把每一个项目做得更快更好。
三、理论最终还是得回到实践来。在以后的学习中必须加强实践,把学到的理论回到实践来。
四、程序实践是对编程设计能力的综合训练,对培养具有创新意识、创新能力的高素质软件人才有很大的推动作用。通过采用项目实例来进行c语言编程的综合训练,可以提高学生实际分析问题、解决问题、编程实践、自主创新的能力,同时,还可以培养学生的团队合作精神、创新协作意识及勇于探索的科学精神。
当然在这次专业实习中也出现了不少的问题,主要有以下几个方面:
一、任务分工不够合理、公平;
二、工作不够细心,程序中的代码出现很多错误;
三、对多文件的程序认识和了解不足。最后,在陈**老师和队员的共同协作下提前按质按量完成这次专业的课程设计。
参考文献:
李丹程.C程序设计案例实践.北京:清华大学出版社,2009