本模板是课程设计报告模板,请各位同学认真阅读以下要求:
1.
报告后输出时将本页删除)
2.
3.
4.
5. 本设计报告左侧装订。在虚线处装订。 在课程设计封皮一页上用已经设置好的宋体四号来填写各个项目。 在课程设计评定表一页上用宋体小四填写班级、学号、姓名、项目组、项目
组长、项目组组员、本人工作简介。
组长评语一栏应由组长来给出。
6. 在课程设计任务书一页的开头应按照给定的设置(黑体三号)填写好你的班
级,在第五项时间安排里面应用宋体五号加粗来填写好日期范围。
7. 从程序基本框架结构图开始到设计报告的最后一页都要求有页眉,内容为你
的课程设计题目,宋体小五居中。页脚中的页码已经设置好,同学们不必改动。
8. 在程序基本框架结构图采用WORD中的自选图形绘制程序基本框架结构图,
也就是程序流程图。
9. 在程序设计说明书中应该描述程序的设计思想,重点描述自己做的那部分的
设计思想。字体用宋体小四。
10. 在代码清单中打印程序已经调试好的可运行的程序代码。
要求字体为宋体 五号。(页数可增加)
11. 报告的最后一部分是设计总结,应在程序代码之后另起一页,主要写通过一
周课程设计你自己的体会,包括你学到了什么,哪里遇到了困难解决的办法以及今后的目标。
字体用宋体小四。
12. 报告的各个部分都可以不为规定的一页,自己可增加页数,但要保证开始另外一项要另起一页。
13. 服务课程名称:本科添写:C语言;/专科添写:计算机语言(c)
14. 报告完成后,要更新目录。方法为:单击目录左侧,选定整个目录后,按F9键更新目录。
┊┊
课 程 设 计
目录
C语言课程设计成绩评定表 .............................................. 1
C语言课程设计任务书 ...................................................... 2
程序设计思路 ...................................................................... 4
程序基本框架结构图 .......................................................... 5 系统运行界面截图 ............................ 错误!未定义书签。
源代码清单 .......................................................................... 6
课程设计总结 .................................................................... 15
C语言课程设计
C语言课程设计成绩评定表
- 1 -
C语言课程设计
C语言课程设计任务书
一、设计目的
通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
二、设计要求
1、认真查阅参考书、资料 2、遵守课程设计时间安排
3、按时上机,认真调试程序 4、认真完成课程设计报告
三、课设报告装订内容及顺序
1、课程设计封皮 2、目录
3、课程设计成绩评定表 4、课程设计任务书
5、程序基本框架图 6、程序设计说明书
7、源代码清单 8、课设总结与心得
四、设计题目
_____________工资管理系统_________________
五、时间安排(一周:从 月 日到 月 日 )
1、查阅资料及程序设计(1天) 2、程序编制及调试(3天)
3、成绩评定(0.5天) 3、打印报告(0.5天)
六、参考文献
1、《C语言程序设计》李淑华/李贞编 大连理工大学出版社
2、《C语言程序设计》孙连科/姚大鹏编 辽海出版社
3、《C++时尚编程百例》网冠科技编.机械工业出版社
4、《TURBO C 实用大全》徐金梧等编. 机械工业出版社
- 2 -
C语言课程设计
- 3 -
C语言课程设计
程序设计思路
我们程序设计的是工资管理系统。它包括:输入函数、显示函数、追加函数、排序函数、删除函数、插入函数、修改函数以及查询函数。我在程序设计中主要负责对插入函数和修改函数的编写。
调用插入函数时,先用fread函数以读方式打开文件,然后输入所要插入的编号,把文件中的所有元素存放到数组a[n]中,利用for循环,使插入点之后的每个数组元素都往后移动一个位置(从最后一个开始移动),利用fclose函数关闭文件。再以写方式重新打开文件,输入所要插入函数的数据,利用for循环把数组中每个元素重新写回到到文件中,这样就得到了比原来多一个的数组a[n+1],关闭文件,程序终止。
至于显示函数,先以读方式打开文件,再输入所要修改的编号,将文件中的所有元素存放到数组a[]中来,利用for循环,把数组中的元素与输入编号进行对比,当二者相同时,记录其下标为t,关闭文件。再重新以写方式打开文件,输入a[t]元素中的所有数据。利用循环把数组中的所有元素重新写回到到文件中,关闭文件。这样修改函数就完成了。
若原始数据为:
01 女 1000 200 300 300
08 男 1200 300 200 200
插入点为1,插入数据:
02 女 1300 200 300 200
运行结果为:
修改编号为08,修改数据:
08 男 1300 300 400 100
- 4 -
C语言课程设计
程序基本框架结构图
- 5 -
C语言课程设计
源代码清单
#include "stdio.h"
#include "stdlib.h"
typedef struct teacher /*定义结构体类型*/
{ long num;
char name[9];
char sex[3];
float salary;
float allowance;
float bonus;
float deduction;
float netpay;
}TEA;
void input() /*输入函数,完成将键盘输入的教师数据写入磁盘*/ {
int i,n;
TEA a; /*结构体变量a 用来存放一个教师的数据*/ FILE *fp;
system("cls"); /*清屏*/
if((fp=fopen("e:\\file1.txt","wb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\t请输入教师人数:");
scanf("%d",&n); /*输入教师人数*/
for(i=0;i<n;i++) /*以循环的方式输入每个教师的数据*/ { printf("请输入第%d名教师信息:\n",i+1);
printf("\t编号:");
scanf("%ld",&a.num);
printf("\t姓名:");
scanf("%s",a.name);
printf("\t性别:");
scanf("%s",a.sex);
printf("\t基本工资:");
scanf("%f",&a.salary);
printf("\t补贴:");
scanf("%f",&a.allowance);
printf("\t奖金:");
scanf("%f",&a.bonus);
printf("\t扣除金额:");
scanf("%f",&a.deduction);
- 6 -
C语言课程设计
a.netpay=a.salary+a.allowance+a.bonus-a.deduction;
printf("\t实际工资:%.2f\n",a.netpay);
fwrite(&a,sizeof(TEA),1,fp);
} fclose(fp);
}
void list() /*显示函数,完成将文件中的教师数据显示在屏幕上*/
{ TEA a; /*结构体变量a 用来存放一个教师的数据*/
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\t编号\t姓名\t性别\t基本工资 补贴 \t奖金\t扣除金额 实际工资\n\n");
while(fread(&a,sizeof(TEA),1,fp)!=0)
printf("\t %ld\t %s\t %s\t%.2f %.2f
\t%.2f\t%.2f\t %.2f\n\n",a.num,a.name,a.sex,a.salary,a.allowance,a.bonus,a.deduction,a.
netpay);
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause");
}
void append() /*追加函数,完成将键盘上输入的教师数据追加到文件中*/
{
int i,n;
TEA a;
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","ab"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\n\t请输入追加教师人数:");
scanf("%d",&n);
printf("\n\t请按下面的提示信息输入学生数据\n");
for(i=0;i<n;i++)
{printf("\n\t请输入第%d名追加教师编号:",i+1);
scanf("%d",&a.num);
printf("\t姓名:");
scanf("%s",a.name);
printf("\t性别:");
scanf("%s",a.sex);
printf("\t基本工资:");
scanf("%f",&a.salary);
printf("\t补贴:");
scanf("%f",&a.allowance);
- 7 -
C语言课程设计
printf("\t奖金:");
scanf("%f",&a.bonus);
printf("\t扣除金额:");
scanf("%f",&a.deduction);
a.netpay=a.salary+a.allowance+a.bonus-a.deduction;
printf("\t实际工资:%.2f\n",a.netpay);
fwrite(&a,sizeof(TEA),1,fp);
}
fclose(fp);
}
void sort() /*排序函数,完成对文件中的教师数据按学号排序并显示在屏幕上*/ { int i,j,n=0;
TEA a[50],t; /*结构体数组a 可存放50个教师的数据*/
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
while(fread(&a[n],sizeof(TEA),1,fp)!=0)
n++; /*变量n累计文件中教师人数*/
for(i=0;i<n-1;i++)
for(j=n-1;j>i;j--)
if(a[j].num<a[j-1].num)
{ t=a[j];a[j]=a[j-1];a[j-1]=t; }
printf("\n\n\n\tsorted on num :\n");
printf("\n\t编号\t姓名\t性别\t基本工资\t补贴\t奖金\t扣除金额\t实际工资\n\n"); for(i=0;i<n;i++)
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause"); /*程序暂停*/
}
void del() /*删除函数,完成将键盘上输入的教师数据从文件中删除*/
{long num;int i,n=0,t;
TEA a[100];
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\n\t请输入要删除的编号:");
scanf("%ld",&num);
while(fread(&a[n],sizeof(TEA),1,fp)!=0)
n++;
- 8 -
C语言课程设计
for(i=0;i<n;i++)
if(a[i].num==num)
t=i;
fclose(fp);
if((fp=fopen("e:\\file1.txt","wb"))==NULL)
{printf("error!\n");exit(0);}
for(i=0;i<n;i++)
{ if(i!=t)
{ fwrite(&a[i],sizeof(TEA),1,fp);
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
}
}
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause");
}
void ins() /*插入函数,完成将键盘上输入的教师数据插入到文件中*/
{long num;int i,n=0,k;
TEA a[50];
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\n\t请输入要插入的编号:");
scanf("%d",&num);
while(fread(&a[n],sizeof(TEA),1,fp)!=0)
n++;
for(i=n;i>num;i--)
a[i]=a[i-1];
fclose(fp);
if((fp=fopen("e:\\file1.txt","wb"))==NULL)
{printf("error!\n");exit(0);}
printf("\t编号:");
scanf("%ld",&a[i].num);
printf("\t姓名:");
scanf("%s",a[i].name);
printf("\t性别:");
scanf("%s",a[i].sex);
printf("\t基本工资:");
scanf("%f",&a[i].salary);
printf("\t补贴:");
scanf("%f",&a[i].allowance);
- 9 -
C语言课程设计
printf("\t奖金:");
scanf("%f",&a[i].bonus);
printf("\t扣除金额:");
scanf("%f",&a[i].deduction);
a[i].netpay=a[i].salary+a[i].allowance+a[i].bonus-a[i].deduction;
printf("\t实际工资:%.2f\n",a[i].netpay);
for(i=0;i<=n;i++)
{ fwrite(&a[i],sizeof(TEA),1,fp);
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
}
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause");
}
void modify() /*修改函数,完成将键盘上输入的教师数据修改到文件中*/ {int i,n=0,t;
long num;
TEA a[100];
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
while(fread(&a[n],sizeof(TEA),1,fp)!=0)
n++;
printf("\t编号:");
scanf("%d",&num);
for(i=0;i<n;i++)
if(a[i].num==num)
t=i;
fclose(fp);
if((fp=fopen("e:\\file1.txt","wb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n请按以下提示输入正确数据:\n");
printf("\t编号:");
scanf("%ld",&a[t].num);
printf("\t姓名:");
scanf("%s",a[t].name);
printf("\t性别:");
scanf("%s",a[t].sex);
printf("\t基本工资:");
scanf("%f",&a[t].salary);
printf("\t补贴:");
- 10 -
C语言课程设计
scanf("%f",&a[t].allowance);
printf("\t奖金:");
scanf("%f",&a[t].bonus);
printf("\t扣除金额:");
scanf("%f",&a[t].deduction);
a[t].netpay=a[t].salary+a[t].allowance+a[t].bonus-a[t].deduction;
printf("\t实际工资:%.2f\n",a[t].netpay);
for(i=0;i<n;i++)
{ fwrite(&a[i],sizeof(TEA),1,fp);}
fclose(fp);
printf("\n修改完成!\n\n");
printf("\n\tpress any key to continue...");
system("pause");
}
void search_num() /*按编号查询函数,将查询教师数据修改到文件中*/
{long n;int i,t=0;
TEA a[50];
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{printf("error!\n");exit(0); }
printf("\n\t请输入教师编号:");
scanf("%ld",&n);
while(fread(&a[t],sizeof(TEA),1,fp)!=0)
t++;
for(i=0;i<t;i++)
if(a[i].num==n)
break;
if(i<t)
{printf("\n\t该教师数据已查到,详情如下:\n");
printf("\n\t编号\t姓名\t性别\t基本工资\t补贴\t奖金\t扣除金额\t实际工资");
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
}
else printf("\t无此信息!\n");
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause");
}
void search_name() /*按姓名查询函数,将查询教师数据修改到文件中*/
{char n[9];int i,j=0;
TEA a[50];
- 11 -
C语言课程设计
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{printf("error!\n");exit(0); }
printf("\n\t请输入教师姓名:");
scanf("%s",n);
while(fread(&a[j],sizeof(TEA),1,fp)!=0)
j++;
for(i=0;i<j;i++)
if(strcmp(a[i].name,n)==0)
break;
if(i<j)
{printf("\n\t该教师数据已查到,详情如下:\n");
printf("\n\t编号\t姓名\t性别\t基本工资\t补贴\t奖金\t扣除金额\t实际工资");
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
}
else printf("\t无此信息!\t");
fclose(fp);
printf("\n\tpress any key to continue...");
system("pause");
}
void search_sex() /*按性别查询函数,将查询教师数据修改到文件中*/
{char s[3];int i,j=0;
TEA a[50];
FILE *fp;
system("cls");
if((fp=fopen("e:\\file1.txt","rb"))==NULL)
{ printf("error!\n");exit(0); }
printf("\n\t请输入教师性别:");
scanf("%s",s);
while(fread(&a[j],sizeof(TEA),1,fp)!=0)
j++;
for(i=0;i<j;i++)
if(strcmp(a[i].sex,s)==0)
break;
if(i<j)
{printf("\n\t该教师数据已查到,详情如下:\n");
printf("\n\t编号\t姓名\t性别\t基本工资\t补贴\t奖金\t扣除金额\t实际工资");
printf("\t%ld\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",a[i].num,a[i].name,a[i].sex,a[i].salary,a[i].allowance,a[i].bonus,a[i].deduction,a[i].netpay);
}
else printf("\t无此信息!\t");
fclose(fp);
- 12 -
C语言课程设计
printf("\n\tpress any key to continue...");
system("pause");
}
void search()
{int a;
do
{ system("cls"); /*清屏*/
printf("\n\n\n\n\n\t\tstudent score management system\n"); /*显示查询子菜单*/ printf("\t\t*******************************\n");
printf("\t\t\t1----按编号查询\n");
printf("\t\t\t2----按姓名查询\n");
printf("\t\t\t3----按性别查询\n");
printf("\t\t\t0----退出查询子系统\n");
printf("\t\t*******************************\n");
printf("\t\tplease choose:");
scanf("%d",&a);
switch(a)
{ case 1:search_num();break; /*调用按编号查询函数*/
case 2:search_name();break; /*调用按姓名查询函数*/
case 3:search_sex();break; /*调用按性别查询函数*/
case 0:exit(0); /*返回主菜单*/
}
}while(a!=0);
}
main() /*主函数,完成程序菜单的显示并调用以上各函数*/
{ int a;
do
{ system("cls"); /*清屏*/
printf("\n\n\n\n\n\t\tstudent score management system\n"); /*显示程序菜单*/ printf("\t\t*******************************\n");
printf("\t\t\t1----输入\n");
printf("\t\t\t2----显示\n");
printf("\t\t\t3----追加\n");
printf("\t\t\t4----排序\n");
printf("\t\t\t5----删除\n");
printf("\t\t\t6----插入\n");
printf("\t\t\t7----修改\n");
printf("\t\t\t8----查询\n");
printf("\t\t\t0----退出\n");
printf("\t\t*******************************\n");
printf("\t\tplease choose:");
scanf("%d",&a);
switch(a)
{ case 1:input();break; /*调用输入函数*/
- 13 -
C语言课程设计
case 2:list();break; /*调用显示函数*/ case 3:append();break; /*调用追加函数*/
case 4:sort();break; /*调用排序函数*/ case 5:del();break; /*调用删除函数*/ case 6:ins();break; /*调用插入函数*/ case 7:modify();break; /*调用修改函数*/ case 8:search();break; /*调用查询函数*/
case 0:exit(0); /*结束程序的运行*/ }
}while(a!=0);
}
- 14 -
C语言课程设计
课程设计总结
白驹过隙,转眼一周的对工资管理系统的程序设计已经结束了,虽然短暂,却感触颇多。
刚开始编写程序时,感觉找不到方向,毕竟机器运行不能和我们的思维习惯相一致。特别是在设计修改函数时,怎样才能正确找出所要修改函数的下标呢?毕竟所输入的数据是随机的,询问老师后,才知道可以把文件中的元素存放到数组中,利用for循环将数组中的元素从第一个开始与所输入的编号进行对比,这样就可以找到所要修改的编号。这才发现自己对C语言知识了解的有多么肤浅,等到把修改函数编写完成运行成功后,心里顿时一阵雀跃很有成就感。
此外,编写程序过程中需要细心和耐心,其实对做任何事而言都是如此。我还深刻记得编写程序之初,运行程序时错误高达60个,这是多么令人震惊的事实!当时真有心思要放弃了,感觉这么多错误是不能够改完的,而在同学的鼓励下我开始硬着头皮开始寻找错误,这才发现自己竟然连如此简单的错误都会犯,看来以后还是得努力学习C语言知识,温故而知新,以使自己能够更加熟练地掌握程序设计。而且在老师和同学的帮助下,把程序的错误全部改完,我在心里暗暗对自己说:以后一定不能被困难表象所吓倒,只要继续坚持,拥有足够的细心和耐心,一定会“柳暗花明又一村”的!
说实话,很感谢能有机会来程序设计,能让我在编写过程中一步步发现自己的不足,来完善自己的知识;一点点探索C语言的奥妙,来培养对程序设计的兴趣。
最后,还要感谢我的老师,如果不是她细细地给我讲解每个函数编写过程中所需要注意的,我也不能完美地把程序设计出来,总之千言万语汇成一句感谢:老师,您辛苦了,谢谢您!
- 15 -