c语言图书管理系统

2024-10-16

c语言图书管理系统(8篇)

1.c语言图书管理系统 篇一

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单 学生成绩管理系统

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;

}

2.c语言图书管理系统 篇二

当前世界的信息爆炸, 导致了信息技术的空前发展, 信息量的增长导致了对信息的存储和安全的要求的不断的升高, 对于信息的存储海量及存储的速度瓶颈已成为了现阶段IT技术的又一次变革。

存储资源管理系统是指对存储设备资源进行管理, 存储性能的优化, 系统存取数据的监控, 系统监控, 数据的备份容灾等方面进行管理和控制的软件。在存储资源管理系统中, 由于网络技术的发展, 计算机能力的不断提高, 数据量也不断增加, 数据对于用户的重要性也是与日俱增, 数据进行备份和恢复等技术方面的问题也越来越重要。

二、存储资源管理系统的分析设计

1、系统的设计思想

磁盘文件的访问牵涉到了系统的很多方面, 在系统中, 几乎所有的操作或多或少的会与磁盘文件的访问有关, 在这个过程中有很多的子系统和机制来保证访问的正确和完成, 包括虚拟文件系统层, 处理块设备驱动程序和页缓冲机制。我们实现存储资源管理系统的思想其实比较简单, 因为每一个读写请求都会在进入内核之前, 现行调用我们的虚拟文件系统接口, 这个接口对上层应用程度对数据的操作请求进行判别后向内核发送请求, 调用想应的函数来完成这次调用。

由于所有的数据操作都要经过虚拟文件系统, 所以我们在虚拟文件系统这一层进行修改, 让调用请求在进入内核前, 在虚拟文件系统这一层进行一些命令的重定义或者是同步发送, 这样在向内核申请调用的时候, 我们可以以我们想要的方式进行文件操作, 即当虚拟文件系统接收到了要对数据进行修改的请求之后, 先对系统中需要进行修改的文件或者其他类型的数据进行备份, 然后再将系统要求的新数据进行写入, 这样, 在数据进行修改的时候, 我们同步的进行了备份, 也就是实现了快照。

2、系统的快照控制

根据快照文件的数量和频率的不同, 我们实现了快照文件的三种保持方式。

数量:根据用户设置的快照数目的最大数和最小数来限制用户的快照保持, 因为每个文件都需要一定的快照数目, 特别是稀疏存储方式下的快照文件;时间:因为用户的恢复数据的时间不会太长, 不可能一个人去把系统恢复到一年前或者更早的时候的状态, 为了节省资源, 时间的设置也是很有必要的;

三、存储资源管理系统的研究实现

1、存储阵列管理的创建

在上层命令到达RAID.c后, 根据命令中的参数进入create模式, 首先程序会从命令中得到RAID的级别, 磁盘数目, 阵列名字, 参与组建阵列的磁盘的名字。一次只能创建一个阵列。

下面详细说明存储资源管理系统中创建阵列的过程:首先进入create.c文件调用mdopend.c中的open_mddev () 函数打开给定的md设备并作相应的检查得到md设备和设备描述符, 检查所需要的信息是否提供, 比如level, disk数量以及具体的disk等信息;然后检查每一块disk, 读取相关信息, 并且按照这些信息填充关于阵列信息的数据结构;最后, 使用SET_ARRAY_INFO&ADD_NEW_DISK等ioctrl command, 设置相关的信息, 更新superblock, 通过RUN_ARRAY函数调用相应的ioctrl command启动这个阵列。

其中涉及到的主要的数据结构为在md_u.h中定义的struct mdu_array_info_s, 这是由md和DM两个模块共同使用的一个结构。这个struct中包含了md driver和用户空间交互所用到的数据。其具体定义和解释如下:

typedef struct mdu_array_info_s{

int patch_version;//主、次、patch版本号信息

int nr_disks;//子设备个数

int raid_disks;//成员个数

int md_minor;//RAID设备的次设备号

int not_persistent;

int utime;/*0 Superblock update time*/

2、系统存储调用的实现

读写系统调用的过程机会一样。它们都有三个参数一个文件描述符号fd, 存放数据的内存缓冲区的地址buf和一个标识需要传递的字节数count。读文件是把磁盘上的文件读到内存缓冲区中, 写文件做相反的工作。这两个系统调用运行成功时返回传输的字节数, 运行失败时返回-1。下面我们分析它们在内核中的具体实现过程:

(1) 调用fget_light () 函数, 根据fp可以知道文件地址。

(2) 如果file->f_mode不允许对应的操作, 则返回错误代码-EBADF。

(3) 如果文件没有read () 或aio_read () 操作函数, 函数返回错误代码-EINVAL, 无法进行操作。

(4) 调用access_ok () , 这个函数主要的功能就是检查内存缓冲区的地址buf和需要传递的字节数count两个参数是否有效。

3、系统快照的创建实现

存储资源管理系统在用户对文件进行读写操作时会在open系统调用中会设置一个标志位, 来标识这个文件正在被打开, 为了避免在这个过程中其他的进程读写这个文件产生数据不一致, 导致脏数据的产生, 在close系统调用时, 清楚这个标识位。快照的生成是write_cow () 来实现的, 这个函数运行后会在创建快照, 并且把把缓冲区挂载到系统的缓冲区列表中。

(1) 创建一个文件的存储空间, 来保存我们将要创建的快照文件。

(2) 获取一个inode, 获取inode的函数是struct mode*new_inode (struct super_block*sb) , 是一个内核的函数, 这个函数完成了获取inode的操作。这个函数直接调用的内核函数alloc_inode (struct super_block*sb) , 根据传来的超级块的参数可以完成inode的初始化操作。

(3) 生成快照文件名称, 这个函数是我们自己加入的一个函数, 这个函数实际上只是一个中间层, 系统中间原本没有这个函数get_snapname (file) 。

四、总结

总之, 存储资源管理系统的出现较好的解决了数据的备份, 安全和传输, 具备传统的存储方式无法比拟的优势, 现今的世界, 存储资源管理系统已经成为了企业级数据安全的不二选择。

参考文献

[1]张江陵、冯丹:《海量信息存储》, 科学出版社, 2009年第1版。

3.c语言图书管理系统 篇三

关键词:数据同步;客户端;C语言

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2010) 16-0000-02

The C-language Design Research of Data Synchronization System Client

Dai Xiuhong

(Liaoning Petrochemical College,Jinzhou121000,China)

Abstract:The research data synchronization system of the client's C language design,data synchronization system proposed by the client data synchronization process and data management and monitoring,this paper addresses generated in the process of enterprise information system database of multiple inter-related business data synchronization,data synchronization process in particular,face three major issues:how to accurately access the source system data,howto keep the data is safe,timely and correct sent to the target system and how to synchronize data and processes on a unified monitoring and management.

Keywords:Data synchronization;Client;C language

對于业务系统来说数据的正确性将直接影响到企业的正常工作和发展,因此对数据同步的过程和数据进行监控和管理就显得尤为重要。同步系统使用了独立的数据库来存放所有同步的数据,同步系统的客户端可以对同步的数据和过程进行管理。客户端登陆时需要设置同步系统服务器端的IP地址并输入正确的用户名、密码才能进入客户端系统进行操作。本文研究数据同步系统客户端的功能设计和异常信息日志表等数据表的设计。数据同步系统包括数据同步系统服务器端、数据同步系统客户端和数据同步系统转发器端。同步系统服务器端对源数据发送方进行身份验证并接收源系统发送的数据后保存在数据同步系统数据库的待发送表中,数据同步系统转发器端将数据从待发送表中取出发送给数据接收方,而通过数据同步系统客户端可以实现对数据同步过程中的同步数据和同步过程的监督和管理。

一、同步数据的查询、新增和修改模块

在成功登录同步系统客户端后可以对待发送数据表、已发送数据表和异常信息日志表的数据进行管理。其主要功能包括:

(一)待发送表数据的查询、修改功能。待发送表中保存了所有未发送到目标系统的正常状态消息和发送失败的异常状态消息,通过数据同步客户端可以查询到这些数据并进行修改操作,考虑为了保护数据的完整性和一致性,数据同步系统的客户端没有开放数据删除的功能。

(二)已发送表数据的查询。己发送表中保存了所有正确发送到目标系统的所有数据,可以通过数据同步系统客户端查询这些数据,但不允许修改和删除操作。

(三)异常信息日志表数据的查询。异常信息日志表记录了数据同步系统服务器本身在运行过程中发生的异常信息、源数据发送方调用同步系统服务器端接口时发生的异常信息和数据同步系统转发器端向数据接收系统发送数据时发生异常的信息,通过数据同步系统客户端可以查询所有的异常信息,为相关系统负责人进行故障排查提供了依据。

二、异常状态数据管理

在数据同步的过程中可能会出现各种的异常情况如:源系统组织的数据问题、数据接收系统服务器问题、身份验证问题等各种情况,在异常发生时需要将发生异常的数据暂停发送,并将待发送数据表中的一些相关数据的状态进行修改防止造成数据错误。若在数据同步系统转发器将正常状态的数据发送给某个数据接收方时发生了异常,则该条数据的状态将变为异常状态,所有待发送数据表中与该条数据相同转发类型和数据接收系统的所有数据的状态将同时更新为异常状态,此时数据同步系统转发器端将停止向该数据接收方发送数据,但不会对其它的数据接收方产生影响。通过数据同步客户端可以查询到异常发生时的时间和异常信息等,系统负责人可以根据异常信息快速的判断异常发生的可能原因并及时的进行处理,若是由于源系统方发送的数据问题产生异常,则可以在待发送查询页面中查询到该数据并进行修改保存操作。在系统负责人确认异常情况已经解决后可以查询待发送表中的异常状态数据并修改其状态为正常状态,此后数据同步系统转发器将自动将这些暂停发送的数据发送给数据接收方。通过数据同步系统客户端的异常状态数据管理可以有效的提高数据同步系统的可靠性和安全性。

三、转发类型管理

在同步系统服务器端发布以后将会有多个业务系统调用同步系统的服务器端接口,随着业务的发展可能会改变原先制定的数据同步对象,如原来A系统的数据需要同步给B系统,而现在则需要同时同步给C系统或者将B系统换成D系统。如果每次改变业务需求时都需要修改同步系统的代码并重新分布的话将会对其余的业务也产生影响,这应该是尽量避免的。

在同步系统服务器端接收源系统发送的数据时会根据传入的转发类型参数字段查找数据同步系统数据库转发类型表中相同转发类型的所有数据记录,然后根据每条记录中的目标系统字段生成相应的数据插入待发送数据表,例:在转发类型表中存在两条数据A和B,数据A的转发类型字段、目标系统字段、目标系统接口字段和是否可用字段分别为ES_CS_001,CA,GetDataFromA和True,数据B的转发类型字段、目标系统字段、目标系统接口字段和是否可用字段分别为ES_CS_001,CB,GetDataFromB和True,若源数据发送方传入的转发类型参数字段的值为ES_CS_001,则数据同步系统服务器端将根据A和B的值向待发送表中插入两条待发送数据,数据同步系统转发器在进行数据转发时将分别取出这两条记录并分别调用CA系统的GetDataFromA方法和CB系统的GetDataFromB方法发送数据。可以通过数据同步系统客户端将数据B记录的是否可用字段设置为false,此后在数据同步系统服务器端接收ES_CS_001转发类型的数据时将只会在待发送表中插入一条记录。因此在数据同步业务需求发生改变时只需修改转发类型表中的数据字段内容即可实现相应的数据同步业务功能的增、改而无需修改任何的代码,实现了代码的重用。

四、数据同步系统客户端实现

(一)服务器端初始化。数据同步系统主要为源数据发送系统提供了数据接收的接口,在对源数据发送方进行身份验证后将接收到的数据存储到数据库中等待转发器进行转发。本文首先数据同步的整个过程进行介绍,然后详细描述了数据同步系统客户端从初始化到运行以及接收源数据发送方的数据并存储到数据库的整个过程。在.NET中可以通过二步来实现Remoting服务器端初始化:

第一步:指定通道。在Remoting中通过通道(channel)来实现两个应用程序域之间对象的通信。为了实现跨越应用程序域进行通信,同步系统客户端必须先指定通信的通道。Remoting的通道主要有两种:Tcp类型通道和Http类型通道。在.Net的System.Runtime.Remoting.Channel命名空间里定义了IChannel接口,其中就包括了这两种通道类型。HttpChannel类型存在于命名空间System.Runtime.Remoting.Channel.Http中。通过使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。TcpChannel类型存在于命名空间System.Runtime.Remoting.Channel.Tcp中。Tcp类型通道使用了基于Socket的传输方式并通过Tcp协议来跨越Remoting边界传输序列化的消息流。TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。指定通道代码如下:

public class Server

[STAThread]

static void Mai。(stringy[]args)

{

try{

//设置端口

IDictionary htPort=new Hashtable();

htPort[""port""]=9996;

//设置名称

htPort[""name""]=""channel";

//指定通道类型

BinaryServerFormatterSinkProvider serverProv=new

BinaryServerFormatterSinkProvider();

serverProv.TypeFilterLevel=

System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

BinaryClientFormatterSinkProvider clientProv=new

BinaryClientFormatterSinkProvider();

TcpChannel channel=new TcpChannel(htPort,clientProv,serverProv);

//注册通道

ChannelServices.RegisterChannel(channel);

}

第二步:设置远程对象的激活方式。在访问远程的一个对象实例时,必须在服务器端创建通道并对该对象进行初始化。这种客户端通过通道来创建远程对象的方式,称为对象的激活。在Remoting中,远程对象的激活分为两种:服务器端激活和客户端激活。服务器端激活,即WellKnow方式激活:在激活对象实例之前会在一个URI上来发布这个类型,并为此类型配置一个WellKnown对象,然后根据指定的地址或端口来发布对象.Net Remoting把服务器端激活又分为两种模式:SingleTon和SingleCall模式。SingleCall模式是一种无状态模式,客户端调用远程对象方法时,会为每一个客户端建立一个远程对象实例,而远程对象实例的销毁和资源回收则由.NET提供的垃圾回收机制自动管理。考虑到会有多个业务系统调用数据同步系统服务器端,需要为每个访问同步系统服务器端的对象建立一个远程对象实例,所以本系统采用了WellKnown模式中的SingleCall模式。

(二)接口實现。数据同步系统必须提供数据接收接口用于获得源数据发送方的数据,数据同步系统服务器端将接口函数封装在可串行化的类中并生成.dll文件然后发给源数据发送方,源数据发送方引用该dll文件并通过设置远程对象的工P地址、端口和激活方式来获取远程对象。远程处理框架需要提供必要的基础结构,以便隐藏远程对象调用方法和返回结果的复杂性。所有需要跨越应用程序域的本地对象都必须按数值来传递并且用Serializable属性标记,否则需要继承并实现ISerializable接口。在应用程序域内部,数据类型按数值传递,而所有的对象按引用传递。MarshalByRefObject是通过使用代理进行消息通讯从而跨越应用程序域边界的对象的基类。没有从MarshalByRefObject继承的对象会以隐式方式按值封送。在Remoting中能够传递的远程对象可以是各种类型,包括复杂的DataSet对象。通过继承MarshalByRefObject可以使任意对象变为远程对象。当客户端激活远程对象时,将接收到该远程对象的代理。对该代理的所有操作都将重新定向,使远程处理基础结构能够正确截取和转发调用。远程对象定义如下:

//允许运行库串行化一个对象

[Serializable]

//远程对象必须继承MarshalByRefObject

public class Message:MarshalByRefObject

{//为源系统提供的接口

public bool GetMsgFromOrigin(byte[]identify,string oriSystem,string operatorName,string transType,string xmlStr)

{

//实例化业务逻辑层对象

MSDS.BizFacade.Message message=new MSDS.BizFacade.Message();

//调用业务逻辑层函数

return message.GetMsgFromOrigin(identify,oriSystem,operatorName,transType,xmlStr);

catch(Exception ex)

//向接口调用方抛出异常信息

throw new Except.ion(ex.Message);

finally

//释放资源

ServicedComponent.Dispose0bject (message);}}

五、结论

在企业信息化发展过程中,建立了大量的信息管理系统,这些系统之间存在一定的关联关系,部分数据在多个系统内都需要被使用。但由于缺乏有关企业信息管理模型方面的标准和规范,造成这些信息系统之间存在兼容性差、数据信息资源难以交流共享等问题,当一个业务系统对其数据库中的某些信息进行更新时,将导致该系统与其它多个系统内数据的不一致性,从而对公司业务的正常运作造成了阻碍。通过对本人所在企业的需求调研,本文设计并实现了用于解决企业数据同步问题的数据同步系统。系统采用Visual Studio 2003的开发环境,使用C语言实现系统开发。实现了在企业范围内多个业务数据库之间的数据交换与同步。系统投入正式运行,并取得了较好的应用效果。

参考文献:

[1]杨柳,蔡英蔚.基于XML格式异构数据同步模型的研究[J].中国电力教育,2008,22

[2]沈敏,许华虎.基于XML的分布式异构数据库数据同步系统的研究[J].计算机工程与应用,2005,41,5:184-186

[3]梁利妓,吴国平.一种基于XML的异构数据源集成方案[J].现代计算机,2004,3:27-29

4.基于C语言多维立体系统研究专题 篇四

【摘 要】 针对于高职院校中,开设的C语言程序设计课程,在教学过程中还存在着传统教学、多媒体教学和混合型教学模式,其形式单一,枯燥乏味。而该课程的教学内容对于初学语言的学生来说,知识内容抽象,教师授课难教,学生也难学。为了更好的转变传统教学模式,本文主要提出多维立体教学系统,本人结合多年的教学经验,从教学手段,以及教学方法等一些方面对C语言程序设计课程进行教学模式改革和教学实践改革,从而提高学生学习兴趣,培养学生独立分析问题、解决问题、自主创新的能力。

【关键词】 高职 C语言 立体教学

在高职院校计算机专业中,C语言程序设计一门专业必修课,同时也是许多非计算机专业的公共基础课。它主要培养学生的算法思想,程序意识,它是高校学生所接触到的第一门程序设计语言,其重要性可想而知。目前,针对于大部分的高职院校采用传统的授课方式,没有真正摆脱“教本位”的模式。面对当前高职学生的基础知识薄弱,学习主动性和动手能力较差。为引起学生的学习热情,那就将C语言教学必须要创新授课思路、创新教学模式,营造学生的主观能动性,遇到问题能够分析并解决问题的能力。本人结合现有的多年的教学经验、教学资源进行整合,改进了C语言程序设计的教学,为让学生能较快地掌握程序设计基本方法,切实提高学生的学习兴趣,一直以来都是值得探索的问题。关于C语言教学问题分析

对于C语言这门课程教材的选取直接影响到学生所学知识的实用性、系统性、及新颖性。对于目前存在的关于C语言教材种类繁多、内容老旧、良莠不齐等差异,就需要教师对教材要认真的选择。在教材中还存在形式陈旧,案例单一,练习不突出重点和难点,理论与实际运用脱节等多方面问题,而真正适合高职院校学生来使用的C语言教材并不多。高职院校大部分采用教材多为普通高校所采用的教材、案例教材、项目教材等。

除教材外,据调查大部分的高职院校对C语言这门课的改革较少,传统的教学方法使得学生除了能对课本的内容掌握之外,根本不能独立的自行编写程序,根本不能达到将理论与实践联系到一起的能力,更谈不上与市场需求相结合,对于高职生来说不能很快的适应工作岗位的需求。C语言多维立体教学系统

为学生树立一个正确的学习目标是教师教好学生,如何学好一门课的根本所在。教师和学生之间要承现出一种交互关系,实现学生的“学”与教师的“导”的高效互动,更好的提高学生的学与操作技巧。传统的教学模式存在交互性弱、理论与实践缺乏联系等缺点。本人将多年C语言程序设计课程的教学经验给以总结,逐渐引入多维立体教学系统。该系统由立体化教学资源、理论知识教学环节立体化、实验实践立体化三个子系统构成多维度、立体化的学习模式,语言学习者定制完全个性化的学习模式,能全面提升学习者的C语言运用水平,改变学生的认识结果,真正实现学知所用、学会所用、学有所用且学会“学”。

2.1 立体化教学资源

教学资源立体化,以现有纸质教材为主要核心、以其配套的多媒体课件、素材资源作为基本资源。而立体化教学则是以课程为单位,将教材与多媒体资源相整合,归纳总结为教师的主讲教材、教师的参考教材、学生实验指导书、电子图书、CAI课件、案例库、试题库等,我们将这些称为教学包。其发现形式以网络、光盘等传递。这样使得教师在教学中充分发挥,取其各自的优势,满足学生们的多种应用需求。既在课堂讲授新知识,又能课下将重点、难点重复和强调,学生也可通过教学包中的内容来补充自己不足,相互配合。这样即可节省资源,也能提高教学质量。

2.2 理论知识教学环节立体化

全方位多角度的课堂教学,立体化教学模式,可利用新的教育理念、新技术手段、新教学方法、将教师和学生、理论教学与实践教学、教学与考核紧密结合起来,构建一个完整的、丰富的、互动的课程系统的教学模式。理论知识教学中本人一般采用,CAI课件+程序窗口+案例+板书+课堂提问+小组讨论+举一反三+课后作业的这种教学手段,这样学习理论知识的同时,学生课堂就能验证,通过循序渐进的案例引入,可将知识内容逐渐加深,通过对新的问题的提出、思考、解答来引出新的知识点。这样的教学环节设计,使得课堂的气氛及师生的互动更为激励学生的好学特性。在教学中发现实用且效果好。学生记忆扎实,课后巩固。

2.3 实验实践立体化

以前大多数教师授课侧重于讲理论、重结果的知识传授,而现在很多教师有了问题意识,从提出问题到解决问题,从而激发学生们的创新潜力和意识。为避免学生把“创新”作为一个临时项目任务来对待,根据高职院校培养学生的目标,开始反思课程教学,削减一些较老旧的教学内容和设置重复的课程,将创新实验项目深入到学生的教学活动中,同时增加实践和实验教学的环节。

教师为学生制定专门的学生实验指导书,包括实验目的、实验要求、及要求每位学生手写实验报告等,学生可以进行分组实验。实验课是实践教学的重要组成部分,必须充分重视。这类课程逐步将转变老师的验证性操作转化为学生的探索性操作,有条件的实验室要逐步开出综合自主性、操作性实验。要严格训练学生实验操作技能和对实验数据分析处理技能。结语

结合多年的教学经验的实践,使我知道作为C语言程序设计作为一门基础语言,要让知识点繁杂、晦涩难懂内容被学生被所了解与掌握是很难的,这使得我们更需要在今后的教学过程中不断改进教学方法来应对教学过程中出现的问题。作为教师更要善于把复杂的问题简单化。本人也会继续将C语言程序设计这门课程立体教学系统更加完善。

参考文献:

5.c语言图书管理系统 篇五

小型职工工资管理系统

专业班级

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++实物精选》,徐波著,北京邮电出版社

附录

6.c语言图书管理系统 篇六

设计购物卡管理系统,系统主要模块:(1 实现系统内制卡、发卡功能;(2 实现系统内账户及相关账户管理;(3 实现卡交易和合法性检查;(4 实现卡交易积分功能;(5 实现卡报表功能;(6 数据以文件形式存储。【提示】

制卡:指申请一张购物卡,但还没有使用。发卡:该购物卡已经启用。

实现卡交易:指从卡中消费掉一定的金额。

一、系统需求分析

根据题目要求, 由于数据要以文件形式存储, 所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存 款、消费、查询账户相关信息、查询账户交易记录、查询全部信息、退出 程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。

二、系统总体设计

分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的 设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息。

三、系统详细设计 1.主函数设计

主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能, 提供了菜单输入、模块选择、退出系统等模块的调用。其中各功能模块用 菜单方式选择。

【流程图】 1 N 2 【小结】

函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指 一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件 包含到本文件之中。C 语言提供了 #include命令用来实现“文件包含”的 操作。

在本程序中包含了一下头文件:“string.h”、“ctype.h”、“stdio.h” ,方便 调用库函数实现某些功能。

在程序设计中,只使用一些基本类型(或称简单类型的变量(如整 型、实型、字符型变量等和构造类型数据——数组,是远远不够的。有 时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组 合在一个整体中的数据是相互联系的。

在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信 息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体 如下:

struct user { int num;/*账户号码 */ char name[20];/*户主名称 */ float surplus;/*账户余额 */ char state[2];/*账户状态, y :已启用, n :未启用 */ int point;/*账户积分 */ }u[100];同时在各分函数中,定义了 int、float、char 等一系列变量类型,用来 实现函数功能。

在主函数前面,要加上对各功能函数的声明,声明的作用是把函数的 4 名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调 用该函数时系统按此进行对照检查,例如函数名是否正确,实参与形参的 类型和个数是否一致等。

主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上 了各函数的声明,如下: void c_c(;/*制卡函数模块 */ void s_u(;/*发卡函数模块 */ void in_m(;/*存款函数模块 */

void out_m(;/*取款函数模块 */ void c_i(;/*查询账户相关信息函数模块 */ void c_r(;/*查询账户交易记录函数模块 */ void check(;/*查询全部信息函数模块 */ void menu(;/*主菜单函数模块 */ void back(;/*返回函数模块 */ void check_b(;/*给用户提示已有信息 */ 实现菜单选择功能,使用的是 switch 语句,根据用户输入的菜单选项 a ,调用不同的函数实现各种功能: switch(a { case 1:c_c(;break;/*制卡模块 */ case 2:s_u(;break;/*发卡模块 */ case 3:in_m(;break;/*存款模块 */ case 4:out_m(;break;/*取款模块 */ case 5:c_i(;break;/*查询账户相关信息模块 */ case 6:c_r(;break;/*查询交易记录模块 */ case 7:check(;break;/*查看所有信息模块 */ case 8:exit(0;break;/*退出模块 */ } 2.各功能模块设计

2.1 制卡模块 【流程图】

2.2 发卡模块 【流程图】

N

2.3 存款模块 【流程图】

2.4 消费模块

【流程图】 11 12

2.5 查询账户相关信息模块

【流程图】 13 N 14

7.C语言智能化在线学习评价系统 篇七

现有的测试系统都注重测试的结果, 缺乏对试卷的分析。不能透过试卷测试考生的知识结构和各项能力, 不能针对学生不理解的知识点进行个别化指导, 而这些恰恰是考试的目标所在。

本文设计了一个C语言智能化在线学习评价系统。利用Web系统的跨平台性, 学生能够通过浏览器方便地使用系统。系统考虑学生就某一知识点的掌握情况, 针对学生不懂的知识点给出评价并进行个别化测试, 返回测试结果, 给出相应的评价, 以利于学生更好地学习C语言课程。

1 学习评价系统的分析与设计

1.1 系统实现的目标

为了便于学生通过跨平台的网络系统和浏览器, 全面了解和掌握学生对C语言课程的掌握情况, 在任何时间任何地点进行自主化学习。本智能化在线评价系统的设计目标是实现界面友好, 方便操作, 交互性良好, 便于增强老师和学生, 学生与学生之间的交流, 评价结果清晰明确, 便于学生及时了解学习情况并调整学习策略的系统。为实现这些设计目标, 本系统主要实现了课前评价, 课后评价以及课程讨论区这几方面的内容:

a) 课前评价

系统能够根据学生提交的静态信息进行分析, 针对选择不同风格的学生给出相应的试题。通过测试结果, 判断出学生对C语言课程某一知识点预习的情况, 根据该预习情况做出评价, 对应采取何种学习策略给出相应的建议。

b) 课后评价

学生通过建议, 采用针对该知识点相应的学习策略进行学习后, 再次进入本系统测试。通过测试结果, 判断出该学生对这一知识点的掌握理解程度, 根据学生的掌握程度做出评价, 建议学生采用什么样的学习策略进行调整, 用以巩固所学知识点。

c) 课程讨论区

讨论区, 即知识论坛。学生可以按知识点进行查询, 跟同学探讨就该知识点的学习方法。如果实在不能理解, 可以向老师进行发问。老师登陆论坛可以跟学生进行交互, 回答学生问题, 对学生不理解的知识点进行个别化的学习指导。

1.2 系统功能模块图

本系统要实现学生信息采集、课前评价、课后评价、知识论坛, 以及学习策略调整等功能, 功能模块图如图1所示。

2 学生信息采集

本模块主要完成对学生静态信息的采集。由于不同学生学习风格各不相同, 对同一知识点, 采用的学习方法和学习方式都有所差别。所以系统要求把学生的学生风格记录下来, 以利于学习策略的选择。系统采用注册登陆的方法来进行学生静态信息的采集, 根据学生的选择, 推测学生的学习风格, 便于更好地进行知识点测试。

学生注册登陆系统后, 进行学生静态信息的采集如下图:

从图1的信息采集表中, 可以分析出学生的部分性格特征:内向、好静。系统主要从学生登陆注册的信息中获得学生的静态信息, 从而推测出学生的兴趣爱好以及性格特征。以便在学习策略调整中给出相应的调整建议。如:学生喜欢阅读, 相应的反馈给学生与C语言课程学习相关的书籍。

3 课前评价

系统鼓励学生在学习前对将要学习的知识点进行课前预习。通过预习, 学生对所学知识点已经有所了解, 再利用本系统进行学前测试, 有助于学生发现该知识点的理解漏洞和听课重点。本系统的课前评价主要采用遗传算法作为组卷算法, 结合一定组卷策略, 实现组卷的全自动化。如果对生成试卷部分不满意的化, 也可以进行手动修改。试题抽取采用智能化组卷, 针对学生风格给出相应的题型。根据测试结果给出需要进一步加强的评价, 学生通过调整学习策略, 对该知识点的某一部分进行特别强化, 用以加深对该知识点的印象。

4 课后复习

为检测学生对知识点的掌握, 系统在学生学习后进行课后测验。系统采用智能化组卷, 题目针对学生不理解的知识点, 即学生预习的薄弱环节进行重点强化。根据学生测验结果, 分析学生接下来应采用何种学习策略继续学习, 给出评价, 即对学生学习该知识点后的学习效果进行评价。为实现本模块, 运用面向对象的建造方法, 设计一个简单的学生类如下:

5 学习策略调整

为促使学生更加全面的掌握知识点, 从而调整学生的学习方式。学习策略的调整贯穿与整个系统, 参照学生的学习风格, 性格特点等, 在相应的阶段给出合适的反馈意见和评价。课前评价根据学生的静态信息, 运用智能组卷算法抽取相应的试题进行测试, 通过测试结果给出相应的评价。对学生将要学习的知识点给出智能化的建议, 让学生作为参考, 调整学习策略。学生用调整后的学习策略学习。然后再来进行课后评价, 同样采用智能组卷法, 针对学生薄弱缓解进行测试, 给出评价。对学生是否能够进行下一知识点学习做出判断。推荐学生进入讨论区跟同学探讨学习方法, 学习内容, 或者就不明之处, 向老师发问。老师对学生进行个别辅导。

6 结论

本文利用B/S架构, 以及面向对象的方法设计了该C语言智能化学习评价系统。系统通过智能组卷算法, 根据学生风格筛选出适合当前测试的题目。推测出学生那些知识点需要强化, 针对知识点开设知识点论坛讨论区。通过本系统学生能够更加深刻了解到自己那些知识掌握的不足和努力的方向, 不足之处是学生风格难以把握, 难于给出有效的学习调整方案。针对系统测试评价的单一性, 对于自制力较差的学生, 将来可以加设学习娱乐环节, 寓教于乐, 全方面考虑到学生的用户体验。

摘要:为了考查学生对C语言课程的掌握情况, 该文设计了一个C语言课程学习的智能在线评价系统。便于进行智能化个别化和主动式的辅助学习。该系统采用B/S架构和面向对象技术设计, 根据学生的在线评测结果, 对学生应掌握的知识和学习情况进行评价, 并对学生应采取的学习策略进行智能化调整。

关键词:C语言,智能化,在线评价系统

参考文献

[1]谭浩强.C程序设计[M].3版.北京:清华大学出版社, 2008:1-3.

[2]李洛, 黄达峰.智能化C语言自学系统的设计与实现[J].宁波职业技术学院学报, 2012, 16 (5) :42-45.

[3]C Programming[EB/OL].[2012-05-06]http://www2.its.strath.ac.uk/courses/c/.

[4]吴运命, 赵秀玲.网络考试测评系统的研究现状与发展趋势[J].软件导刊, 2010, 9 (10) :99-100.

[5]廖汗成.智能化在线考试测评系统的设计[J].科技广场, 2006.

[6]丁海燕, 桂进阳.智能教学系统设计_以基于Web的日本语导学系统为例[J].云南大学学报 (自然科学版) , 2011, 33 (S1) :290-293.

[7]张翠善.基于Web和数据挖掘的智能教学系统设计[J].科技资讯, 2007 (29) :78-79.

[8]周晓军.多媒体智能教学系统研究与设计[M].北京:北京语言大学出版社, 2009:85-101.

8.c语言图书管理系统 篇八

关键词:C语言;教学系统;Moodle;OnlineJudge

0引言

《C语言程序设计》是包括高职院校在内的高等院校广泛开展的信息电子类专业的编程基础课。在国家、省级的计算机二级考试中,大多数考生也选择C语言类考题。经过十余年的发展,高校C语言的教材体系结构和教学内容的组织都已经较为成熟。面对高职学生基础知识薄弱,学习自主性较差的现状,如何激发学生积极性和主动性,增强学生的动手能力和学习信心,以适应高职院校高技能应用人才的培养目标,是摆在每个C语言教学改革探索者面前的问题。C语言课程只靠“教本位”的模式而忽视学生的主体性是很难取到较好的教学效果的,因此笔者在对C语言进行教学改革的过程中,除针对高职学生培养目标和学生现状进行教学设计之外,还注重搭建网络教育平台,利用各种资源营造C语言的学习环境来发挥学生的主观能动性,切实提高他们自学的能力和C语言程序设计、分析、调试的能力。下面笔者将对教学改革过程中的教学系统设计和各类C语言教学资源的整合应用情况进行总结和探讨。

1目前存在的问题

首先,传统的授课方式需要改进。C语言目前的授课方式还是“教本位”的方式,课程以教师为中心,教师在讲台上讲授,学生被动地在台下听,要达到“学本位”的效果还有相当的距离。

其次,学生的学习自主性还有待提高。高职学生的现状决定了他们的学习能力和积极性都较薄弱,面临C语言这样的本身就有一定难度又需要大量练习的课程,学生离开课堂上45分钟填鸭式的教学后,如果课下不进行练习,很难学好C语言。

2教学系统设计

1962年,格拉泽明确地提出“教学系统”概念并要求对教学系统进行设计。教学设计已经经历了近半个世纪的发展,其理论和实践发展到今天,已经和现代教育技术、学习理论的最新进展紧密地联系在了一起。教学设计的发展体现在教学改革的各个方面。

“C语言程序设计”课程改革也体现了当代教学设计发展的三大趋势。

第一,注重信息技术与教育理念的整合。笔者通过利用多媒体、交互性的站点系统丰富了任务环境,强化了学生采用多种方法来解决问题的技能,把学生解决难题的行动过程可视化,使他们直接参与建模和模拟任务等过程。通过借助Moodle系统的支撑,这些过程的实施变得轻松而有条理。

第二,注重各种因素整合下的学习环境的建构。戴维·乔纳森在其建构主义的学习理论中指出学习不是传输的过程,也不是接受的过程。学习需要意志的、有意图的、积极的、自觉的、建构的实践,该实践包括互动的意图一行动一反思活动。知识和技能通常是在个体运用知识和技能的“情境(context)”中获得的。在课堂授课方面,教师一方面注重营造轻松、和谐的课堂气氛,使得学生乐于接受知识;另一方面,借助精心设计的多媒体课件,形象、动态地展示各个知识点。而在课后,如何构造良好的学习环境,使学生自觉地、建构地学习是各种学习组织所面临的问题。针对高职学生基础较薄弱,学习自主能力较差的现状,我们借助Moodle和OnlineJudge系统搭建了一个轻松愉快的7*24小时的学习环境,通过经常性的联系来维持一定程度上的互相关心和理解,从而形成学习C语言课程这一群体的归属感和社会情感纽带,及时地拉近教师与学生的距离,使得学生在自学过程中遇到的问题能及时得到解决,一定程度上刺激了学生的学习积极性,达到了较好的教学效果。

第三,注重新的评估理念和方法。评估需要超越对局部技能和离散的知识点的关注,而要把推动学生进步的更复杂的方面包含进来。笔者正在尝试把课程、教学、实施和评估进行总体规划,而Moodle和OnlineJudge系统成为评估的重要工具。根据教学大纲的规定,学生成绩由理论考试和平时成绩两部分组成。理论考试的测试评估中,无论从题型还是难度,都是向二级考试的要求靠拢。目前二级考试的考核趋势,已经渐渐地向如何用C语言解决实际问题的方向转变。而平时成绩部分,借助Moodle和OnlineJudge系统,可以较精确地表征每个同学的实践学习情况,特别是学生的学习能力以及利用C语言解决实际问题的能力。

3课程网站建设

C语言程序设计课程网站,主要面向教师和学生用户,涵盖了教学的各个环节,教师可以通过网站系统发布教学大纲、讲义和教案、多媒体视频课件、经典案例、相关资料下载等,可以布置作业、进行答疑、自助考试练习、开展专题讨论、建立专属聊天室、书写博客等,还可以结合“任务驱动”的方式让学生完成实验等。图1为站点功能图。

在该系统中,有三个核心功能部分,分别是站点系统,Moodle系统和OnlineJudge系统。三个系统使用统一的身份认证,达到了多系统整合统一的目的。图2为逻辑层次图。

3.1站点系统

这是用户主要接触的界面系统,在站点系统中,除实现了一些基本的站点功能,如站点新闻、课程资料、在线学堂、下载等外,更重要地,站点系统实现了Moodle和OnlineJudge的界面整合,使得用户在访问课程站点时,感觉不到是在异构的站点中进行切换,例如系统提供了统一的功能导航和统一的登录界面等。

3.2Moodle系统

Moodle是Modular Object-Oriented Dynamic LearningEnvironment(模块化面向对象的动态学习环境)的缩写。它是一个设计与开发遵从“社会建构主义教育学(social ConstructionistPedagogy)”的课程管理系统(CMS),一套免费、开放源代码的软件包。它协助教育者创建有效的在线学习社区。它的适应性很强,可以提供一名教师多至5万名学生的大学教育。Moodle在全球已经有了20万的注册用户,提供了175个国家75种语言包,是全球广泛采用的教育系统。

Moodle系统是以课程教学为中心的。在课程开展过程中,Moodle可以配合灵活的课程活动配置,如博客、论坛、测验、资源、投票、问卷调查、作业、聊天、专题讨论、程序教学等,并且提供了全面的用户日志和跟踪,如统计每个学生的活动,显示图形报告,包括每个模块的细节(最后访问时间、阅读次数),还有参与的讨论等,汇编为每个学生的详细的“故事”,为评估学生的学习能力提供了广泛而切实的依据。

3.3OnlineJudge系统

OnlineJudge系统是从ACM/ICPC竞赛的评判系统移植而

来的。近年来随着全国各高校ACM竞赛活动的展开,出现了大量在线题库,ACM网站层出不穷。国外的有UVA,Ural,SGU,USACO等著名网站,国内浙江大学、北京大学都有自己的OnlineJudge。

OnlineJudge系统可以发布问题集,让学生通过在线提交C语言程序源代码解决问题,还可以安排竞赛,并且可以提供成绩排名。

对于高职学生来说,过多时间花在ACM竞赛上,既不符合高职学生的培养目标,也不适合当前学生的现状。但是,借助这样的系统,将题目难度降低到高职学生能解决的程度,正迎合了“任务驱动式”教学的趋势,通过精心设计的案例设置,让学生通过C语言程序解决具体的实际任务,提高了C语言程序设计、分析、调试的能力。

3.4异类站点整合

(1)Tomcat和Apache整合

在整个C语言课程网站中,站点系统是笔者使用Tom-cat+JSP+Access实现的网站系统,OnlineJudge系统是笔者移植更改自北京大学OnlineJudge(PKU)的系统,采用Tom-cat+Servlet+MySQL为主要实现技术,Moodle系统使用的是Apache+PHP+MySQL的系统。要让以上三个站点系统达到统一服务器访问,必须将Tomcat和Apache整合在一起。作为一脉相承的Apache和Tomcat,使用Mod_jk模块对webserver进行通信,而通信的协议是AJPl2,AJPl3或者JNI协议中的一种。整合过程就是让apache的httpd.conf文件调用mod_jk.conf文件,mod_jk.conf文件又调用了workers.properties文件,进而配置好各自的虚拟主机。

(2)OnlineJudge和Moodle系统整合

笔者在移植的过程中,删除了OnlineJudge的登录系统,使用Moodle系统的登录系统进行身份验证,使得OnlineJudge系统中的排名(RankList)呈现的是Moodle用户,提供了教师评估学生解决问题能力的依据。

4结束语

目前OnlineJudge系统已经引入数十个实际问题和500余个案例源码,Moodle系统已经辅助进行了两个学期的c语言课程教学,已应用于多个专业的C语言教学中,并针对不同专业的学生特性和培养目标调整课程活动的配置。

上一篇:少年军事夏令营下一篇:后再相会小学六年级作文