c语言 学生信息管理系统(线性表版)

2024-08-28 版权声明 我要投稿

c语言 学生信息管理系统(线性表版)(精选7篇)

c语言 学生信息管理系统(线性表版) 篇1

#include

struct student

{

int num;

char name[20];

int y;

int s;

int d;

int z;

int bz;

};

struct student stu[1000];

int n=0;

void red();

void f1();

void f2();

void f3();

void f4();

void sav();

void main()

{

FILE *fp;

if((fp=fopen(“student”,“r”))==NULL)

{

fclose(fp);

FILE *fp;

fp=fopen(“student”,“w”);

fclose(fp);

}

red();

int i;

loop1:printf(“************************************************n1查询每科最高分的学生n2查询所有学生n3删除信息

n4添加信息n其它退出保存

n************************************************n”);

scanf(“%d”,&i);

switch(i)

{

case 1:

f1();

gotoloop1;

case 2:

f2();

gotoloop1;

sav();

case 3:

f3();

gotoloop1;

case 4:

f4();

gotoloop1;

default:

sav();

}

printf(“操作已保存n”);

}

void red()

{

int i;

FILE *fp;

fp=fopen(“student”,“r”);

for(i=0;!feof(fp);i++)

{

fread(&stu[i],sizeof(struct student),1,fp);

n=i+1;

}

fclose(fp);

}

void f1()

{

int i;

printf(“************************************************n1 语文n2 数学n3 代数

n************************************************n”);

scanf(“%d”,&i);

switch(i)

{

case 1:

{

int j;

struct student st;

st.y=0;

for(j=0;j

if(stu[j].bz)

if(stu[j].y>st.y)st=stu[j];

printf(“语文最高分的学生:n”);

if(stu[i].bz)

{

printf(“学号姓名语文数学代数总分n”);

printf(“%8d%10s%8d%8d%8d%8dn”,st.num,st.name,st.y,st.s,st.d,st.z);

}

break;

}

case 2:

{

int j;

struct student st;

st.s=0;

for(j=0;j

if(stu[j].bz)

if(stu[j].s>st.s)st=stu[j];

printf(“数学最高分的学生:n”);

if(stu[i].bz)

{

printf(“学号姓名语文数学代数总分n”);

printf(“%8d%10s%8d%8d%8d%8dn”,st.num,st.name,st.y,st.s,st.d,st.z);

}

break;

}

case 3:

{

int j;

struct student st;

st.d=0;

for(j=0;j

if(stu[j].bz)

if(stu[j].d>st.d)st=stu[j];

printf(“代数最高分的学生:n”);

if(stu[i].bz)

{

printf(“学号姓名语文数学代

数总分n”);

printf(“%8d%10s%8d%8d%8d%8dn”,st.num,st.name,st.y,st.s,st.d,st.z);

}

break;

}

default:;

}

}

void f2()

{

printf(“所有信息:n”);

int i,j;

struct student t;

for(j=0;j

for(i=0;i

if(stu[i].z

{ t=stu[i];stu[i]=stu[i+1];stu[i+1]=t;}

for(i=0;i

if(stu[i].bz)

{

printf(“学号姓名语文数学代数总分n”);

printf(“%8d%10s%8d%8d%8d%8dn”,stu[i].num,stu[i].name,stu[i].y,stu[i].s,stu[i].d,stu[i].z);

}

}

void f3()

{

if(n==0)

printf(“要删除信息不存在n”);

int i=0,j,t=1;

printf(“输入要删除信息的学号n”);

scanf(“%d”,&j);

while(i

{

if(stu[i].bz&&(stu[i].num==j))

{ stu[i].bz=0;

t=0;}

i++;

}

if(t)

printf(“要删除信息不存在n”);

}

void f4()

{

int t,j=0;

loop2:printf(“输入学号n”);

t=0;

scanf(“%d”,&stu[n].num);

while(j

{

if((stu[n].num==stu[j].num)&&stu[j].bz)t=1;j++;

}

if(t){printf(“输入学号已存在n”);goto loop2;}printf(“输入姓名n”);

scanf(“%s”,&stu[n].name);

printf(“输入语文n”);

scanf(“%d”,&stu[n].y);

printf(“输入数学n”);

scanf(“%d”,&stu[n].s);

printf(“输入代数n”);

scanf(“%d”,&stu[n].d);

stu[n].z=stu[n].y+stu[n].s+stu[n].d;

stu[n].bz=1;

n++;

}

void sav()

{

int i;

FILE *fp;

fp=fopen(“student”,“w”);

for(i=0;i

{

if(stu[i].bz)

fwrite(&stu[i],sizeof(struct student),1,fp);}

fclose(fp);

c语言 学生信息管理系统(线性表版) 篇2

关键词:管理信息系统,程序设计,面向对象

纵观我系各年级、各层次人才培养方案, 除去专业实习与毕业设计环节, 我校专科学生总共在校5学期, 程序设计语言类的课程开设共持续4学期, 本科学生总共在校7学期, 程序设计语言的开设共持续6学期, 虽然经过长时间的系统学习, 但是效果并不是很理想, 虽然我系的人才培养定位希望在广度上和深度上均有所突破, 针对面向过程和面向对象两类程序设计类课程, 开设有《C语言程序设计》、《面向对象程序设计》、《Java语言程序设计》、《Delphi语言程序设计》、《C#语言程序设计》、《.Net语言程序设计》等一系列程序设计类课程, 企图用程序设计语言的高覆盖率换取高就业率, 但大多数同学均感觉投入了过多的精力, 却没有精通任何一门程序设计类语言, 而且我系从事计算机相关工作的毕业生人数比例不到25%, 这与我们人才培养的初衷出现了严重的不一致, 通过跟踪走访, 就业后两到三年的时间内, 从其他行业转入计算机行业的比例显著增加, 针对该现象[1,2], 我们以《C语言程序设计》〉和《C++面向对象程序设计》两门课程为研究对象, 采取利用此两门语言编写同一套软件等方式, 让学生深刻理解面向对象和面向过程的区别, 从而推广到其他面向对象类程序设计类课程的教学中, 达到在缩短单门课程教学周期的同时, 提升学生实战经验的目的。

1 需求分析与概要设计

《C语言程序设计》作为我系开设的第一门程序设计类语言课程, 在第二学期开设, 学时为72, 为使学生以最快的速度进入实战状态, 我们选择数据库编程方向对学生进行训练, 只需满足增加、删除、修改和查询四种基本功能, 由于学生在此时还没有开设数据结构和数据库的相关知识, 故数据我们采取文本的方式进行存储[3]。基于此, 学生管理信息系统的功能模块图如图1所示。

2 具体实现

1) 主菜单的实现

主菜单采用switch () 语句进行菜单选择, 利用input_message () 进行信息录入, save_message (sum) 进行数据保存, output_message () 进行信息输出, renew_message () 进行数据更新, inquire_message () 进行信息查询, del_message () 进行数据删除。核心代码如下:

2) 删除信息模块

我们选择学号为主索引, 删除学生信息模块主要由函数del_num () 完成, 使用系统函数getch () 使屏幕停止, 具体代码如下:

3) 利用文本的方式存取数据

数据存取采用系统函数fopen () 、fwrite () 和fread () 实现, 具体代码如下:

3 结束语

本系统虽然功能简单, 但是对处在仅仅开设了《C语言程序设计》课程阶段的同学来说, 在对C语言程序设计课程进行全方位的理解来讲, 意义却是重大的, 其中对函数知识点熟练的运用, 对后续面向对象程序设计类课程的学习也打下了良好的基础。

参考文献

[1]Fang Zhou.General implement research of Program design inquiry method on software series course[C]//Chongqing, China:Proceed ings of the 2012 International Conference on Computational and Information Sciences (ICCIS 2012) , 2012.

c语言 学生信息管理系统(线性表版) 篇3

《C语言程序设计》

课程设计报告

部:

专业班级: 电子资讯工程(2)班

号:

070306210

名:

设计题目:

同学通讯录设计

起讫日期: 2008.6.16 至 2008.6.29 指导老师:

徐 化 祥

2008 年 6 月

宿迁学院课程设计报告

课程设计(论文)内容要求:

1.本课程设计的目的

(1)熟练掌握C语言的基本知识和技能;(2)掌握程序设计的一些经典算法和基本方法;(3)了解数组、指针和结构体的应用;

(4)利用所学的基本知识和技能,解决日常生活中经常面临的问题;(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。

2.课程设计的任务及要求 1)课程设计题目:同学通讯录设计

2)基本要求:

(1)设计一个菜单将在实现的功能显示出来,并有选择提示;

(2)通讯簿应包含姓名、性别、电话号码、QQ号码、Email、班级、宿舍等基本信息;(3)能够查询全部成员清单;

(4)能够按号码或姓名查询某一个成员的信息;(5)能够增加、修改某一个成员的信息;

(6)要求有错误提示功能,例如性别只能输入F,M,输入错误提示重新输入。

3)创新要求:

(1)加入删除功能,实现对指定成员信息的删除操作;

(2)信息的输入输出可以用文件的存取和显示的方式,建立文件,直接存取默认檔或指定文件。

4)课程设计报告编写要求

(1)要按照课程设计模板的规格书写课程设计报告;(2)报告包括目录、正文、心得体会、参考文献等;

(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成。

5)参考数据:

(1)谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7(2)张强华.C语言程序设计.北京:人民邮电出版社,2001.8(3)http:///

6)提交内容:

6.18

209实验室

编程设计与调试

6.186.28

209实验室 提交所有数据

6.282345int i,j;/*下面的循环是对初始值的处理*/ for(i=0;i

strcpy(stu[i].sex,”“);stu[i].age=0;strcpy(stu[i].tel,”“);strcpy(stu[i].major,”“);strcpy(stu[i].classes,”“);strcpy(stu[i].room,”“);strcpy(stu[i].qq,”“);strcpy(stu[i].email,”“);strcpy(stu[i].others,”“);}

宿迁学院课程设计报告

int print1(){ int n;printf(”tttt<<通讯录>>n“);printf(”**************************************************************n“);printf(”t欢迎使用本通讯录应用程序,愿您从中找到所需要的信息。n“);printf(”制作人:冀鹏超 & 李长明t学号:070306210 & 070306211t班级:07电子信息(2)班n“);printf(”**************************************************************n“);printf(”n“);printf(”ttt1.浏览通讯簿n“);printf(”ttt2.输入同学信息n“);printf(”ttt3.查询同学信息n“);printf(”ttt4.删除同学信息n“);printf(”ttt5.增加同学信息n“);printf(”ttt6.修改同学信息n“);printf(”ttt7.退出通讯簿n“);printf(”n请输入您的选择(1-7):“);scanf(”%d“,&n);return n;} void menu(struct txl stu[]){ int i,j,flag=1;char str[15];for(;flag==1;){ switch(print1())

电话{

:case 1: for(i=0;stu[i].age!=0;i++){ printf(”姓名: %sn性别:%sn年龄:%dn%sn

%sn

宿

%sn

%snQQ号:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email);

} printf(”其它信息:%sn“,stu[i].others);if(i==0)printf(”目前通讯簿为空,请先输入信息n“);

宿迁学院课程设计报告 ,stu[i].room,stu[i].major,stu[i].qq,stu[i].email);

}

if(i==N)printf(”t通讯簿中没有你要找的同学!n“);break;

printf(”其它信息:%sn“,stu[i].others);break;} case 4: printf(”现在你将进行删除操作!请输入要删除的同学的名字,按Enter结束.n“);

scanf(”%s“,str);for(i=0;i

if(strcmp(stu[i].name,str)==0){

printf(”姓名: %sn性别:%sn年班级:%sn

宿舍:%sn

专业:%snQQ龄:%dn电话:%sn号:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email);

printf(”该同学将被删除n“);

}

宿迁学院课程设计报告

scanf(”%s“,stu[i].name);printf(”输入同学的性别: “);scanf(”%s“,stu[i].sex);printf(”输入同学的年龄: “);scanf(”%d“,stu[i].age);printf(”输入同学的电话: “);scanf(”%s“,stu[i].tel);printf(”输入同学的班级: “);scanf(”%s“,stu[i].classes);printf(”输入同学的宿舍: “);scanf(”%s“,stu[i].room);printf(”输入同学的专业: “);scanf(”%s“,stu[i].major);printf(”输入同学的QQ号: “);scanf(”%s“,stu[i].qq);printf(”输入同学的Email: “);scanf(”%s“,stu[i].email);printf(”输入同学的其它信息: “);scanf(”%s“,stu[i].others);} } break;case 7: flag=0;break;default: printf(”你的输入有错误,请重新输入!n");} } } void main(){ struct txl stu[N];

} init(stu);menu(stu);

宿迁学院课程设计报告

四、测试结果

1.通讯录菜单如下图所示:

2.输入“1”,进行“浏览通讯录操作:

3.输入“2”,进行“输入同学信息”的操作:

宿迁学院课程设计报告

8.输入“7”,进行“退出通讯簿”操作:

宿迁学院课程设计报告

五、设计心得

自从记事以来就听过了计算机这个高科技,现在终于实现了自己的一个小小愿望——成为了计算机系的一名学生,这学期我们学的C语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后都要把书啃一遍,要不然上课就跟不上,终于学期快结束了,我们有一个课程设计,在两个星期内,完成一个复杂的程序,我们的题目是做一个通讯簿。

通过为期一周的C课程设计实验课使我了解到了一个程序开发的过程,虽然规模不大,但为我以后的编程学习打下了基础。在编程的过程中,我体会到了学习编程的辛苦,为了一个算法的实现而思考,为了一个小小的编译错误而花时间去寻找,这需要很大的毅力和耐心,而且要有良好的思维,这才使得我完成这个任务,也使我感到一分喜悦,毕竟自己完成了一个有模有样的程序。于此,我也发现自己的一些不足,良好的编程习惯的养成,坚定的毅力和耐心仍是我要加强的,同别人的交流也是必须的,这样才能不断使我进步。在这次设计中,我遇到了很多困难,但我没有向困难低头,通过查询数据,虚心向同学、老师请教,才一一得到了解决。我发现平时学的太少了,在今后我首先要把老师在课堂讲的弄懂,弄透,在此基础上利用课余时间多看课外书籍,拓宽知识面。在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。每个人掌握的不同。我相信:态度决定一切,只有努力才有收获。

总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高。

C语言是在国内外广泛使用的一种计算机语言,我相信除了以上优点之外还有许多,希望能在以后的学习中有更深入的认识。

很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。

人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的路上,总遇到重重困难,但正是因为困难我们才变的更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧!

宿迁学院课程设计报告

六、参考文献

[1] 谭浩强.C++程序设计.北京:清华大学出版社,2004 [2] http:/// [4] http:///

[5] 刘振安.C程序设计课程设计.北京:机械工业出版社,2004 [6] 张强华.C语言程序设计.北京:人民邮电出版社,2001.8

用c语言编写一个成绩管理系统 篇4

1、成绩录入

2、成绩查询

3、成绩统计

4、退出(2)各菜单项功能 ① 成绩录入:输入学生的学号、姓名及三门课的成绩; ② 成绩查询:(至少一种查询方式)。v 按学号查询学生记录。v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩; ④退出系统:退出整个系统(即主菜单)。(3)结构体数组: #define N 30 struct student {int num;/* 定义学号*/

char name[20];/* 定义姓名*/

float score[3];/* 定义存贮三门课成绩的数组*/

float average;/* 定义平均成绩*/

};struct student stu[N];/* 定义结构体数组,存贮多个学生的记录*/

.#include

#include

#include

struct student

{ int num;char name[20];

float score[4];

float average;

}

stu[10000];

long t,max;

bool unpass[1000];

FILE *fstu=fopen(“stud.dat”,“at+”);

int init()

{

int no,i;

float s[4],ave;

char nam[20];

while(!feof(fstu))

{

fscanf(fstu,“%d”,&no);

fscanf(fstu,“%s”,nam);

fscanf(fstu,“%f%f%f%f”,&s[1],&s[2],&s[3],&ave);

if(no>max)

max=no;

stu[no].num=no;

strcpy(stu[no].name,nam);

unpass[no]=false;f

or(i=1;i<=3;i++)

{

stu[no].score[i]=s[i];

if(s[i]<60)

unpass[no]=true;

}

stu[no].average=ave;

}

}

int stuinsert()

{

int no,i;

float s[3],sum;

char nam[20],cha;

loop:printf(“请输入学生的学号、姓名及三门课的成绩 n”);

scanf(“%d”,&no);scanf(“%s”,nam);

scanf(“%f%f%f/n”,&s[1],&s[2],&s[3]);

if(no>max)

max=no;

stu[no].num=no;

sum=0.0;

strcpy(stu[no].name,nam);

unpass[no]=false;

for(i=1;i<=3;i++)

{

stu[no].score[i]=s[i];

sum=sum+s[i];

if(s[i]<60)

unpass[no]=true;

}

stu[no].average=sum/3.0;

fprintf(fstu,“n”);

fprintf(fstu,“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1],stu[no].score[2],stu[no].score[3],stu[no].average);

}

int find(int x)

{

long i,no;

switch(x)

{

case 1:printf(“请输入学号:”);

scanf(“%d”,&no);

printf(“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1], stu[no].score[2],stu[no].score[3],stu[no].average);

break;

case 2:for(i=1;i<=max;i++)if(unpass[i])printf(“%d %s %f %f %f %fn”,stu[i].num,stu[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);

break;

}

}

int sort(int x)

{

extern int headprint(int x);

student so[1000];

int i,j,k,n;

switch(x)

{

case 1:for(i=1;i<=max;i++)if(stu[i].num==i)printf(“%d %s %fn”,i,stu[i].name,stu[i].average);

break;

case 2:n=0;

for(i=1;i<=max;i++)

{

j=1;if(stu[i].num==i)

while((so[j].average>stu[i].average)&&(j<=n))

j++;n++;

for(k=n;k>=j;k--)so[k]=so[k-1];so[j]=stu[i];

}

for(i=1;i<=n;i++)

printf(“%d %s %f %f %f %fn”,so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].score[3],so[i].average);break;case 3:headprint(4);

}

}

int othersort(int x)

{

extern int headprint(int x);

student so[1000];

int i,j,k,n,q;q=0;

switch(x)

{

case 1:if(q==0)q=1;

case 2:if(q==0)q=2;

case 3:if(q==0)q=3;

n=0;

for(i=1;i<=max;i++)

{

j=1;

if(stu[i].num==i)

while((so[j].score[q]>stu[i].score[q])&&(j<=n))

j++;

n++;

for(k=n;k>=j;k--)

so[k]=so[k-1];

so[j]=stu[i];

}

for(i=1;i<=n;i++)

printf(“%d %s %fn”,so[i].num,so[i].name,so[i].score[q]);

break;

}

}

int select(int x)

{

extern int headprint(int x);

int p;

switch(x)

{

case 1:scanf(“%d”,&p);

switch(p)

{

case 1:stuinsert();

break;

case 2:headprint(2);

break;

case 3:headprint(3);

break;

case 4:t=0;

break;

}

break;

case 2:scanf(“%d”,&p);

find(p);

break;

case 3:scanf(“%d”,&p);

sort(p);

break;

case 4:scanf(“%d”,&p);

othersort(p);

break;

}

}

int headprint(int x)

{

switch(x)

{ case 1:printf(“学生成绩管理系统n”);

printf(“

1、成绩录入n”);printf(“

2、成绩查询n”);

printf(“

3、成绩统计n”);

printf(“

4、退出n”);

select(x);

break;

case 2:printf(“

1、按学号查询学生记录n”);

printf(“

2、查询不及格学生的记录n”);

select(x);

break;

case 3:printf(“

1、计算学生的平均分n”);

printf(“

2、根据学生的平均分高低,对学生的数据进行排序后输出n”);

5printf(“

3、对学生单科成绩排序,输出学生姓名与该科成绩n”);select(x);

break;

case 4:printf(“

1、第一科n”);printf(“

2、第二科n”);printf(“

3、第三科n”);select(x);break;;

}

}

int main()

{ max=0;t=1;

init();

loop:headprint(1);

if(t!=0)

goto loop;

c语言 学生信息管理系统(线性表版) 篇5

小型职工工资管理系统

专业班级

2016级通信工程本科1班

通信第二组

学生姓名

院(系)

信息工程系

指导教师(职称)

完成时间

2017年5月31日

课程设计任务书

题目职工工资管理系统 班级2016级通信工程本科1班 学号 201605070106 姓名 学号 201605070111 姓名 学号 201605070118 姓名 学号 201605070119 姓名 学号 201605070136 姓名

一、主要内容:

本课程设计结合本学期所学C语言知识,准备设计开发一个简单职工工资管理系统。工资管理系统是企业不可或缺的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。设计开发这个系统需要用到单链表、文件读取操作、结构体、函数、指针等C语言知识。本课程设计准备通过Windows控制台应用程序实现职工工资管理系统的简单运行。利用所学知识,本着简单、易用的设计原则,本课程设计尽量实现良好、美观的“人机界面”,便于软件的操作使用。本次设计主要学习内容包括:

(一)进一步学习并熟练掌握C语言语法和编程思想。

(二)学习C语言提供的库函数,熟悉Visual C++ 6.0的开发工具。

(三)学习C语言函数、链表、结构体、文件读取、指针等知识。

(四)学习如何查阅他人的文档进行软件的设计与开发。

二、基本要求:

(一)质量要求

1.职工工资管理系统基本功能模块的设计应包括:显示主菜单功能、职工信息 的录入、添加、删除、修改、查询、排序功能,退出系统。测试文件的读取与存储是否正常、测试评估界面是否合理,友好。

2.对职工工资管理系统设计并进行调试、修复、完善、测试。3.定期主动向指导教师汇报任务进度,认真填写相关报告文档。4.按时完成各阶段工作,不突击,不抄袭。

(二)进度要求

1.明确课程设计任务,搜集资料:2017年2月28日—3月14日。

2.完成程序的设计与实现,撰写课程设计论文初稿:2017年3月15日—5月15日。

3.与指导教师沟通,完成课程设计论文定稿:2016年5月16日—2017年5月28日。

4.进入课程设计论文审阅阶段,准备答辩:2017年5月29日—6月9日。

三、主要参考资料:

1.工资管理系统课程设计程序http://blog.csdn.net/JZQT_T/article/category/2317235

2.C语言程序设计规范及基础

https://wenku.baidu.com/view/58b***409c7b.html 3.《明解C语言 第3版》,(日)柴田望洋著,人民邮电出版社 4.《C Primer Plus 第6版 中文版》,姜佑 译,人民邮电出版社 5.《C程序设计 第四版》,谭浩强著,清华大学出版社 6.《C和C++实物精选》,徐波著,北京邮电出版社

学 生 签 名: 指导教师签名:

年 月 日

目录 概述...............................................1 1.1 设计思想.................................................................................................................................1 1.2 设计原则.................................................................................................................................1 1.3 性能需求.................................................................................................................................1 1.4 课程设计报告内容及分工情况.............................................................................................2 1.4.1 课程设计报告内容.........................................................................................................2 1.4.2 课程设计分工情况.........................................................................................................2 2 总体设计...........................................3 2.1 系统功能设计图.....................................................................................................................3 2.2 主函数 main().........................................................................................................................3 2.3 程序流程图..............................................................................................................................4 3 详细设计...........................................4 3.1 函数..........................................................................................................................................4 3.2 函数流程图..............................................................................................................................9 4 运行结果与调试....................................16 4.1 运行结果...............................................................................................................................16 4.2 程序调试...............................................................................................................................21 结束语..............................................22 附录................................................24 概述

1.1 设计思想

1.系统分成几个相对独立的模块,但这些模块都进行集中式管理。

2.分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。

3.合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。

1.2 设计原则

为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:

1.合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。

2.实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。

3.准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。

4.易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。

5.源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。

1.3 性能需求

(1)支持工资信息一次性多组导入

(2)非法操作能够提示错误并且知道安全行为方式(3)信息查询时界面显示数量

1.4 课程设计报告内容及分工情况

1.4.1课程设计报告内容

1.系统功能模块结构图和程序流程图 2.数据结构设计及用法说明

3.程序结构(画功能模块图或流程图)4.各模块的功能

5.实验结果(包括输入数据和输出结果)6.设计体会 7.参考文献

1.4.2 课程设计分工情况

本组共有5人,具体分工情况如下:

(1)学号:201605070106,姓名:司笑笑,具体负责功能模块结构图和程序流 程图的设计;负责“排序”代码的编写及整体代码的整合;负责程序设计报告中函数详细设计。

(2)学号:201605070111,姓名:代慧,负责“添加”、“录入”代码的编写;负责显示界面的优化、美化。

(3)学号:201605070118,姓名:王春亚,负责“查询”代码的编写;程序的测试与调试。

(4)学号:201605070119,姓名:董子阳,负责“修改”代码的编写;具体负责实验结果的采集;程序设计报告书的校对;负责流程图的绘制。

(5)学号:201605070136,姓名:马良智,负责“删除”代码的编写;具体负责程序设计报告书的排版与完善;相关文献的查找和参考。总体设计

2.1 系统功能设计图

系统功能设计是使整个系统能基本实现职工工资管理功能,能让公司的管理者利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,提高了工作效率。管理信息系统(MIS)主要的功能就是进行信息的收集、查询、存储,同时对这些信息进行维护的。

本系统共包括七大模块,分别是录入模块,添加模块,修改模块,删除模块,查询模块,排序模块,输出模块。系统功能模块设计如图2-1所示。

图2-1 小型职工工资管理系统功能模块结构图

2.2 主函数 main()

(1)函数的功能: 用于联系各个功能函数模块,以及退出程序时的退出画面提示。

(2)函数的入口: 整个程序是从主函数开始的。

(3)函数的出口: 当从main()的switch()开关结构中进入,即choise的值大于7时通过return退出main()函数,即:退出整个程序。(4)函数调用关系:该函数不被其它函数调用。

2.3 程序流程图

详细设计

3.1 函数

(1)功能函数mainMenu()①函数的功能:显示主菜单

②函数的入口:从main()进入,main()运行时进入该函数。③函数调用关系:被主函数调用。

④函数的出口:当主菜单显示在屏幕上,结束该函数。(2)功能函数input(LinkList head)①函数的功能:进入录入职工信息系统。

②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先用inputMenu()显示录入菜单选项,然后选择选项进行录入职工信息。

③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。

④函数的出口:录入职工信息完成后,结束该函数而并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(3)功能函数inputMenu()①函数的功能:显示录入菜单。

②函数的入口:从input(LinkList head))进入,input(LinkList head)被调用时进入该函数。

③函数调用关系:被input(LinkList head))调用,并在文中无返回值的空值void函数。

④函数的出口:当录入菜单显示在屏幕上,结束该函数。(4)功能函数hand(LinkList head)①函数的功能:进入“手动录入职工信息”。

②函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为1时,开始进入该函数,进入函数后,首先输入录入职工人数,然后逐个录入职工信息。

③函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。

④函数的出口:录入全部职工信息完成后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(5)功能函数read(LinkList head)

①函数的功能:进入“文件录入职工信息”。

②函数的入口:程序从input(LinkList head)的switch()开关结构中进入,即choice的值为2时,开始进入该函数,进入函数后,输入需要录入的文件路径fileName,通过fopen()函数,即“if((fq=fopen(fileName,“r”))==NULL)” 打开文件,进入数据的处理。

③函数调用关系:被input(LinkList head)调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。

④函数的出口:自动录入文件中全部职工信息后,结束该函数并执行input(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(6)功能函数output(LinkList head)①函数的功能:输出职工信息。

②函数的入口:程序在录入、添加、修改、删除、查询、排序后都进入该函数,进入函数后,将职工信息用printf()标准输出到屏幕上,然后通过fopen()函数,即“if((fp=fopen(“d:worker.dat”, “w”))== NULL)” 打开文件,将职工信息写到d:worker.dat文件中。

③函数调用关系:被main()等多个调用。在文中无返回值的空值void函数。④函数的出口:将职工信息用printf()标准输出到屏幕上,将职工信息存入磁盘后,结束该函数。

(7)功能函数add(LinkList head)①函数的功能:添加一个职工信息。

②函数的入口:从main()的switch()开关结构中进入,即choice的值为2的时侯,进入该函数,根据提示输入职工信息。

③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1添加成功。

④函数的出口:职工信息添加成功返回1后结束该函数,并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(8)功能函数deleteWorker(LinkList head)①函数的功能:删除 一个职工信息。

②函数的入口:从main()的switch()开关结构中进入,即choice的值为3的时侯,进入该函数,输入要删除的职工编号,删除改编号职工信息。

③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1删除成功。

④函数的出口:职工信息删除成功返回1后结束该函数,并执行主函数main()

中“output(head);”,输出剩余的职工信息在屏幕上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(9)功能函数update(LinkList head)①函数的功能:修改一个职工信息。

②函数的入口:从main()的switch()开关结构中进入,即choice的值为4的时侯,进入该函数,输入要修改的职工编号,根据提示输入新的职工信息。

③函数调用关系:被主函数调用。由switch()开关结构中进入,并在文中有返回值的整型int函数,返回值为1修改成功。

④函数的出口:职工信息修改成功返回1后结束该函数,并执行主函数main()中“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后执行“break;”跳出switch()开关函数,继续执行while循环结构。(10)功能函数find(LinkList head)①函数的功能:进入查询职工信息系统

②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为5时,开始进入该函数,进入函数后,首先用findMenu()显示查询菜单选项,然后选择选项进行查询职工信息。

③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。

④函数的出口:查询职工信息完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(11)功能函数 findMenu()①函数的功能:显示查询菜单。

②函数的入口:从find(LinkList head)进入,find(LinkList head)被调用时进入该函数。

③函数调用关系:被find(LinkList head)调用,并在文中无返回值的空值void函数。

④函数的出口:当查询菜单显示在屏幕上,结束该函数。(12)功能函数findByWay(LinkList head, int n)①函数的功能:查询职工信息”。

②函数的入口:程序从find(LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同的选项值进行相应的查询。

③函数调用关系:被find(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1查询成功。

④函数的出口:查询职工信息完成后,执行“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行find(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(13)功能函数sort(LinkList head)①函数的功能:进入职工信息排序系统

②函数的入口:程序从main()的switch()开关结构中进入,即choice的值为6时,开始进入该函数,进入函数后,首先用sortMenu()显示排序菜单选项,然后选择选项进行职工信息排序。

③函数调用关系:被主函数调用。从switch()开关结构中进入,并在文中无返回值的空值void函数。

④函数的出口:职工信息排序完成后,结束该函数,然后执行主函数main()中的“break;”跳出switch()开关函数,继续执行while循环结构。(14)功能函数 sortMenu()①函数的功能:显示排序菜单。

②函数的入口:从sort(LinkList head)进入,sort(LinkList head)被调用时进入该函数。

③函数调用关系:被sort(LinkList head)调用,并在文中无返回值的空值void函数。

④函数的出口:当排序菜单显示在屏幕上,结束该函数。(15)功能函数sortByWay(LinkList head, int n)①函数的功能:职工信息排序。

②函数的入口:程序从sort(LinkList head)的switch()开关结构中进入,即choice的值为1,2,3,4,5,6时,开始进入该函数,进入函数后,根据不同的选项值进行相应的排序。

③函数调用关系:被sort(LinkList head)调用。从switch()开关结构中进入,并在文中有返回值的的整型int函数,返回值为1排序成功。

④函数的出口:职工信息排序完成后,执行“output(head);”,输出职工信息在屏幕上并保存职工信息在磁盘上,然后结束该函数,执行sort(LinkList head)中“break;”跳出switch()开关函数,继续执行while循环结构。(16)功能函数uqnum(LinkList head, int num)

①函数的功能:判断职工编号是否已存在。

②函数的入口:程序add(LinkList head)中进入,输入职工编号后,开始进入该函数,进入函数后,判断输入的职工编号是否已经存在。

③函数调用关系:被add(LinkList head)调用。在文中有返回值的的整型int函数,返回值为1职工编号已存在。

④函数的出口:判断职工编号是否已存在后返回add(LinkList head),继续输入其它职工信息或重新输入职工编号。

功能实现效果如图3-1所示。

图3-1 主菜单界面

3.2 函数流程图

(1)录入职工信息

该功能模块流程如图3-2所示。

图3-2 “录入职工信息”功能模块流程图

(2)添加职工信息

该功能模块流程如图3-3所示。

图3-3 “添加职工信息”功能模块流程图

(3)删除职工信息

该功能模块流程如图3-4所示。

图3-4“删除职工信息”功能模块流程图

(4)修改职工信息

该功能模块流程如图3-5所示。

图3-5“修改职工信息”功能模块流程图

(5)查询职工信息

该功能模块流程如图3-6所示。

图3-6“查询职工信息”功能模块流程图

(6)排序职工信息

该功能模块流程如图3-7所示。

图3-7“排序职工信息”功能模块流程图 运行结果与调试 4.1 运行结果

本系统运行初始页面如图4-1所示。

图4-1 初始页面

在函数开始时,初始化临时结构体数组,让结构体内所有信息为空.,读取目标文件,然后运行功能函数,选择需要的功能。

实现效果如图4-2所示。

图4-2 输入界面

(1)根据自己需要的功能输入相应数字

图4-3职工信息的录入

图4-4职工信息的添加

图4-5职工信息的删除

4-6职工信息的修改

图4-7职工信息的查询

图4-8职工信息的排序

图4-9退出系统

(2)录入职工的信息,通过手动录入和文件录入两个方法录入职工的信息。

图4-10职工信息录入的方式

(3)查找职工的个人信息,通过输入编号、姓名、部门、基本工资、奖金和总工资进行查找。

图4-11职工信息的查询方式

(4)职工信息的排序可以通过编号排序、姓名排序、部门排序、基本工资排序、奖金排序和总工资排序。

图4-12职工信息的排序方式

(5)每次将职工信息输出在屏幕上时,都会通过fwrite写到文件D:woker.date中。

(6)根据数字提示结束程序。

4.2 程序调试

(1)每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过同学的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:有些函数会出现错误;经过多次调试和修改,才发现把“system(“cls”);”放在调用的函数之前以及适当的位置可以解决此问题。(2)修改员工信息时,输入职工编号查询出多条信息,修改错误!后来加入职工编号唯一判断的函数,让职工编号唯一不重复。

(3)排序,开始交换指针指向,一直出现指针不存在导致乱码问题,后来修改为交换指针的数据域。

(4)文件写入磁盘,用笔记本打开磁盘内的文件乱码,经查询资料了解写入磁盘的文件是二进制数据,不能通过笔记本打开,可重新把文件读入程序中,在程序中显示。

(5)忘导入,导致strcmp不能用。(6)字符串输入输出要用%s。

结束语

工资管理系统对于决策者和管理者来说都至关重要,所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件工资档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对工资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件。

这一个月以来,在开发这个工资管理系统过程中,我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学们进行交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。

在这里要同学的帮助、老师的悉心指导下基本完成本次课程设计,基本达到了工资管理系统的要求。

小组各成员心得体会

Xxx:

这个系统实现了对员工信息的存储、修改、删除、查询及排序。从拿到题目到完成整个编程,从理论到实践学到了很多东西。通过这次程序设计我深入了解了链表、结构体,也学会了文件的读写,懂得了理论和实际结合是很重要的。在设计过程中遇到了很多问题,这毕竟是第一次做,同时在设计过程中发现了自己的不足之处,对以前所学的知识理解的不够深刻,掌握的不够牢固,比如单链表。总之不收获很多!

Xxx:

通过这次课程设计,我对数据结构中单链表的应用有了更深的理解,并且深刻的认识了实践的重要性,只有理论与实践相结合才能很好的学习。发现想要做好课程设计,仅靠书本上的知识是不够的,还需要查阅其他的程序和知识。在这个过程中,我充分认识了数据结构在编写程序方面的重要地位,知道它的特点是可以用存储单元来存储数据,并且可以方便的实现对数据进行插入、删除和遍历等操作。

Xxx:

这个课程设计实现了对职工信息的管理,通过录入、添加、修改、删除、查询等实现对职工信息的管理。通过这次的课程设计,我学到了很多的东西。同时也找到了自己很多的不足之处。在这次课程设计中,由于以前没有好好学这门课,所以很多知识掌握的不够好,导致在编写的时候遇到很多困难,但是通过队员的帮助,得到了解决。这次课程设计,不仅让我学到了知识,更好的掌握了函数、结构体、指针、单链表等的用法,也让我知道了团队的重要性。

Xxx:

通过这次课程设计我学到了许多在课堂没有学习好的知识,同时也巩固了我之前学习的知识,在设计的过程中我补全了自己的不足,找到自己掌握的不牢固的,还有理解的不深刻的,比如:函数,结构体等等,通过这次课程设计我提高了独立思考的能力和自己的实际动手能力,我还学会了如何用流程图来表达自己的想法,同时这次课程设计也让我们小组之间加深了了解,总的来说,这次设计让我的c语言知识更加丰富!

Xxx:

经过两学期的C语言学习,我们掌握了C语言的基础知识,我对课程设计有了一定的了解和体会。并且通过这次课程设计使我懂得了理论与实践相结合是很重要的。从理论中得出结论,才能真正为今后的学习、工作服务,从而提高自己的实际动手能力和独立思考的能力。在这次程序设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。而且我学会了最基本的替换,然后扩展到循环、嵌套,条理很清楚。让我也深感集体的强大力量,很多东西并不是一两个人就可以完成的,比如这个小型工资管理系统程序的编写,俗话说“众人拾柴火焰高”,经过共同的努力,最终克服难关开发出了该系统。在本次课程设计中,还有一点不得不说,通过这次程序设计书的编写让我深刻的意识到拥有好的文笔是多么的重要,我们虽为工科生,但是在以后的工作岗位上也不得不面临着各种各样的工作,所以文笔也是非常重要的。

参考资料

[1] 工资管理系统课程设计程序http://blog.csdn.net/JZQT_T/article/category/2317235

[2] C语言程序设计规范及基础

https://wenku.baidu.com/view/58b***409c7b.html [3]《明解C语言 第3版》,(日)柴田望洋著,人民邮电出版社 [4] 《C Primer Plus 第6版 中文版》,姜佑 译,人民邮电出版社 [5] 《C程序设计 第四版》,谭浩强著,清华大学出版社 [6]《C和C++实物精选》,徐波著,北京邮电出版社

附录

c语言 学生信息管理系统(线性表版) 篇6

一、C语言课程设计现状

C语言是目前世界上使用最广泛的高级程序设计语言之一, 许多大型应用软件都是用C语言编写的。C语言程序设计的理论性、实践性均较强, 在教学过程中要突出理论联系实际的基本原则, 注重上机实验。但实验教学往往采取学生模仿实验指导书的内容进行练习, 教师答疑辅导的形式, 其存在的问题是学生过分依赖教师, 没有达到提高独立设计、调试程序能力的目的。C语言课程设计不仅要求学生掌握C语言编程的基本理论、基本知识和基本方法, 而且要求学生具有很强的实际动手操作能力。“讲得多、做得少”是目前存在的普遍现象, 这样将会导致学生动手能力差, 理论脱离实际。因此, 在C语言课程设计中应开设大量实验、实践课程, 以培养学生学习、应用C语言进行程序设计和软件开发的能力。

二、目前C语言课程设计中需要解决的问题

针对重点内容, 不仅要从基本概念、原理、方法上深入浅出地讲解, 而且要联系实际, 通过加强上机实验等办法, 让学生深刻理解并掌握所学内容;针对难点内容, 综合性地运用课堂教学、指导性教学、课件辅助教学、网络教学等教学方法和手段, 为学生提供理想的个性化、多元化的课程设计模式。课程设计是教学过程的重要组成部分, 是实现培养目标的重要途径。因此, C语言课程设计需解决以下四方面主要问题。

(1) 根据等级考试和程序员考试的需要, 并从切实提高学生程序设计能力出发, 重新优化组合课程设计内容, 突出课程的重点和难点。

(2) 课程设计不但提供基础与验证型实验, 而且也提供设计与开发型实验, 使学生的程序设计能力能够达到应有的水平。

(3) 充分利用计算机网络资源, 建设课程设计网站, 更新习题集, 满足个性化、多样化的需求。

(4) 从提高学生创新能力出发, 改革和完善考核方式。

三、改革方案设计

1. 课程设计内容改革课程设计内容部分包括基础训练和综合训练两种方式。

基础性训练以总结数据类型和常用算法的应用为主, 学生可独立完成;综合训练以课题形式给出, 重点安排了统计工资、统计成绩、职工档案及简明信息生成、链表信息管理、简单通信录程序、学籍管理程序等设计内容, 目的是锻炼学生编写较大型程序的能力。综合训练题目具有以下突出特点:

(1) 重点在C语言的基本特征上, 涵盖了C语言的重要基础知识。

(2) 结合了实际应用的要求, 使课程设计既涵盖知识点, 又接近工程实际需要。通过激发学习兴趣, 调动学生主动学习的积极性, 并引导他们根据实际编程需要, 训练自己实际分析问题的能力以及编程能力, 并养成良好的编程习惯。

(3) 每个课程设计均给出要求与算法, 为学生创造独立思考的条件。学生在掌握要求与算法的前提下, 完全可以设计出自己的应用程序。

(4) 有些课程设计还提出了一些改进措施或要求, 可以供有兴趣的学生扩充自己的设计。

(5) 综合训练题目分为基本部分与扩展部分, 这样就可以满足不同学生的要求。

(6) 提供两个综合课程设计, 以期进一步锻炼学生的动手能力。还可以将其分为几个子项目, 让学生分工合作, 以培养团队精神。

2. 课程设计组织形式与教师指导方法改革

为配合课程设计改革重新编写了课程设计指导书。指导书在内容编写上, 遵循启发为主的原则。既有详细的上机实习过程, 又并非让学生按部就班;学生在上机实习过程中既有章可循, 又通过随时提出问题让学生思考, 引导学生进行相关实践。这样学生带着问题上机, 通过上机实践解决问题。教师答疑辅导时不是包办代替, 而是采取指出问题解决途径来启发、引导学生学习的方式, 有助于培养学生解决实际问题的能力。强调案例教学法的应用, 对一些经典案例, 采取“提出问题-解决方案-得出结论”的教学思路。每一个课程设计的课题都包括指导复习、释疑讲解、书面设计、实验测试、课题总结、书写报告六个步骤。

3. 改革后的C语言课程设计基本流程

首先, 做一个系统, 对其进行功能模块的分析、控制模块的分析, 然后检查是否符合课题的要求, 能否实现相应的功能;能否使程序设计更加合理和完善。

其次, 整个系统设计必须要达到实现的目的, 编程过程尽量要简练, 可用, 其功能全面。

第三, 课程设计的说明书及流程图等要表述清楚。

第四, 为编写设计说明书作好准备, 要有相应的记录来记载设计的情况。

第五, 必须采用模块化程序设计的思想, 并按设计报告要求进行上机调试。

最后, 要提交设计的报告并进行上机演示、答辩。

4、C语言课程设计内容调整———适当取舍和整合

课程设计成功的首要条件就是选择一个合适的题目, 题目要符合实际, 不仅要使学生掌握C语言程序设计教学中的重要知识点、了解程序模块化开发等内容, 而且还要与现实生活联系密切, 具有一定的实用性, 增强学生对专业知识的领悟与应用能力。

4.1整合

适当的调整知识点的设计顺序, 增强知识点间的联系, 这样可以直接把知识转化为能力。但在教材整合时要注重知识的渐进性, 符合课程设计的认知规律。比如, 讲解整形数据的时候可以和该类型的输入输出语句格式说明相结合, 通过两个数求最大值的例子, 引入选择结构、关系运算符和关系表达式、流程图的画法等内容。

4.2取舍

与其把所有的内容通讲, 还不如挑一些内容精讲, 让学生熟练掌握这些知识。对于未讲的内容, 可能通过在上课的过程中循序渐进的方式、在例题或作业中逐步加入。

5、加强指导, 提高学生的实践创新能力

在课程设计过程中, 不是简单的“学生问, 教师答”这种固定模式, 教师应该从多方面去指导学生完成设计, 比如, 若学生所设计的项目是游戏程序的开发, 可以先指导学生熟悉游戏的相关规则和相应的技术要点, 或引导学生查阅相关的设计方法和相关的源代码, 从而开发学生的设计思路;若学生设计的是一个小的应用系统, 老师可以在设计开始时系统地讲解管理信息系统的开发方法, 介绍软件工程生命周期, 需求分析的意义和方法等内容。使学生对软件开发方法和软件开发过程有一个初步的了解和认识。在整个课程设计指导过程中, 教师要给学生足够的自主思考和设计空间, 允许设计思路和设计形式的多样化, 不对设计方法、设计流程做过多的限制, 让学生讨论问题解决方法, 交流设计经验, 这样有利于激发学生的创新意识, 培养创新能力和团队合作精神。

6、规范设计报告的书写, 以提高学生的综合素质

在设计完成后, 每个学生必须写出设计报告, 然后进行答辩。书写设计报告是学生在课程设计过程中的一个重要步骤, 写出设计报告的过程就是一个提高的过程, 可以使学生对知识理解更深刻, 对程序设计认识更深入。因此, 我们应要求报告内容必须完整, 其中包括目录、任务书、需求分析、系统框图、详细设计等。这样可提高学生的语言表达能力, 工程制图等方面的综合素质。

7、重视答辩环节, 以考核和检查实践与创新成果

学生书写完成课程设计报告后就可以进行答辩, 每个学生都要针对自己的设计进行内容自述、代码演示及回答老师提出的每一个问题。老师再根据学生的回答情况来给出每个学生的成绩。这样我们老师既保证了课程设计的公平、公正, 同时也给学生提供了一次锻炼自己的机会。起到了培养学生语言表达能力与反应能力和竞争意识。

8、做好总结, 加强学生对知识的理解和吸收

在整个课程设计结束后, 指导教师应安排一次总结会议, 总结在课程设计中所学到的知识, 设计的项目有哪些创新, 以及还存在哪些不足这处, 从而有利于教师今后的改进以提高教学质量, 总结主要包括以下三方面的总结。

(1) 学生总结; (2) 教师讲评; (3) 师生交流;

四、结论

教学手段和考核方法的改进等。实践表明, 对课程设计教学环节、教学内容等方面的改革, 不仅有助于学生深入理解和掌握所学内容, 激发学生的学习热情和积极性, 提高教学质量和效率, 而且是培养知识宽、能力强、素质高的学生的有效途径。C语言课程设计的改革研究与实践对提高教学质量有明显的优越性:克服了重理论, 轻实践的弊端, 有利于提高学生的动手能力;教师能及时获得教学和实习的反馈信息, 能及时发现问题, 及时解决;调动了学生学习的积极性, 学生的程序设计能力得到进一步的提高, 创新能力也得到进一步增强。目前此改革方案已应用于我校电气信息类专业, 极大地调动了学生学习的积极性, 形成了一种主动的、协作的和开放的教学模式, 收到了很好的教学效果。

参考文献

[1]陆继远, 景亮, 赵不贿.ISP在“数字电子技术”课程设计中的应用[J].农机化研究, 2003, (1) :174-175.

[2]林勇.C语言课程设计的实践教学探讨.电脑知识与技术, 2006, (6) .

c语言 学生信息管理系统(线性表版) 篇7

工程技术学院

课程设计报告书

课程名称:

C语言课程设计

级:

物联网一班

小组成员: 范立恒、陈根、聂俊豪、麦灿文、黄文康

长:

范立恒

指导教师:

楚惟善

二○一三 年 六 月

C语言课程设计实验报告 课程题目及要求及要求

题目一:火车售票系统

任务:结合C语言中相关知识,设计出火车售票系统。录入北京西站车次信息; 2 旅客按车次买票; 统计某日火车票销售金额。

程序要求:

 贯彻结构化的程序设计思想。

 用户界面友好,功能明确,操作方便。

 用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某

日销售 金额”、“退

出”4项。

 代码应适当缩进,并给出必要的注释,以增强程序的可读性  为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;

 根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。

 程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和 程序分设计说明

经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加车次函数

主要实现程序最初运行时车次的录入;

C语言课程设计实验报告

(1)添加学生数据函数add 真以追加方式打开E盘student.txt文件成功?假假输出文件打开失败以追加方式打开E盘student.txt文件成功?真输入添加学生数量n循环变量i=1当i<=n时输入学号、姓名和三门成绩学生信息写入文件 i++关闭文件图2 添加学生数据函数

返回

(2)读取学生数据函数reads 真以读方式打开E盘student.txt文件成功?假循环变量i=0当文件未结束时读取学生信息到数组元素stu[i]中i++关闭文件返回学生人数i图3读取学生数据

输出文件打开失败返回

(3)删除学生记录函数del

C语言课程设计实验报告

n=reads(stu)循环变量i=0当i

j++图5按总分排

4.程序清单

本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1.录入车次信息函数

录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e:rain.txt)当中。具体的程序段如下:

if((fp=fopen(“e:rain.txt”,“a”))==NULL)//如果文件已经存在,可以追加车次信息

{

if((fp=fopen(“e:rain.txt”,“w”))==NULL)// 文件不存在时,创建新文件,输入车次信息

{

C语言课程设计实验报告

scanf(“%d”,&j);

tra[i].maipiao=tra[i].maipiao+j;

printf(“n购买成功n”);

printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice);

save(tra,n);3.查询销售总额

对于也使用比较日期的方法实现的,这部分程序仍然调用了reads函数,整个排序过程在文件中实现,然后用for循环进行运算,把查询这一天的总额算出。

具体程序如下:

if((fp=fopen(“e:rain.txt”,“r”))==NULL)

{ printf(“读取错误,不能打开该文件!n”);

return;} else

for(i=0;i

fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

printf(“请输入你要查询的日期:n”);

scanf(“%d”,&temp.date);

for(i=0;i

C语言课程设计实验报告

知识并在此基础上对数据结构的特点和算法有了更深的了解,C语言是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应实际,实践编程的能力.黄文康:首先这一周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、树和二叉树以及图等,然后确定处理过程——算法,可得最后结论。最后,在这次课程设计过程中,我们深刻的认识到了自己在学习方面的不足之处,我们知道我们还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。

麦灿文:一个礼拜的课程设计让我们受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。

对于我本人来讲这次课程设计的总体表现,我自己还比较满意,每天做到了按时的出勤,上机遵守机房的管理规定,遵循指导老师的安排并能适时地与老师进行沟通,觉得不足的是不能熟练地掌握c语言的设计技巧使编程的结果缺乏效率,不过我相信这只是我的一个开始,我更应该注重的是这次过程,我坚信我会在以后的学习和训练中不断地弥补自己的不足之处,不断的完善自己的编程能力,因为成功需要一点一点积累。

0

C语言课程设计实验报告

} void menu(){ printf(“

************************* 武昌站火车订票系统************************ ”);

printf(“n 显示当前时间”);

printf(“n 车次信息录入”);

printf(“n 显示”);

printf(“n 旅客买票”);printf(“n 统计某日销售金额”);

printf(“n 退出”);} int reads(struct train tra[N])// 读取车次中的内容 {

FILE *fp;

int i=0;

if((fp=fopen(“e:rain.txt”,“r”))==NULL){

printf(“文件打开失败!n”);

return 0;}

else {

for(i=0;!feof(fp);i++)

fscanf(fp,“%d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

}

fclose(fp);

return i;} void save(struct train tra[N],int n)// 车次信息改变后更新文件 { FILE *fp;

int i=0;

if((fp=fopen(“e:rain.txt”,“w”))==NULL){

printf(“文件打开失败!n”);

return;}

else {

for(i=0;i

C语言课程设计实验报告

getch();}

void sell()// 按顾客要求对车次信息卖票 {

struct train tra[N];

int num,n,j;

int i;

n=reads(tra);

printf(“n请输入待查询的车次号,按回车键确认:n”);

scanf(“%d”,&num);

for(i=0;i

if(num==tra[i].num)break;

if(i>=n)

{

printf(“没有找到该车次信息!n”);

return;

}

else

printf(“n请输入所买票数,按回车键确认:n”);

scanf(“%d”,&j);

tra[i].maipiao=tra[i].maipiao+j;

printf(“n购买成功n”);

printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice);

save(tra,n);} void all()//统计销售金额 { struct train tra[N],temp;float sum=0;FILE *fp;int i,j=0;if((fp=fopen(“e:rain.txt”,“r”))==NULL)

{ printf(“读取错误,不能打开该文件!n”);

return;} else

for(i=0;i

fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

printf(“请输入你要查询的日期:n”);

C语言课程设计实验报告

4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

5、源程序清单和执行结果(光盘):清单中应有足够的注释

二、具体安排:

学生以2—6人为一组,共同完成一个题目,选出一个组长负责分工和管理,共同完成总体框架设计,然后每个学生分工独立完成各自的功能模块的编程,最后要能集成并测试通过。

每组要以光盘形式上交C源文件和可执行文件(放在组长文件袋中,其他成员在报告本中写明源程序在哪个同学的文件袋中)

(注:课程设计报告统一使用学院规定的课程设计报告本和文件袋)

三、备注

每个人可自行附加模块设计心得

及所发现的问题及解决方法

《C语言课程设计报告

上一篇:反腐倡廉主要靠自律下一篇:盘点高考英语作文经典提分句型