客服管理系统c范文

2022-06-06

第一篇:客服管理系统c范文

C舆情监控系统

1系统背景

1.1 什么是互联网舆情

舆情是指在一定的社会空间内,围绕中介性社会事件的发生、发展和变化,民众对社会管理者产生和持有的社会政治态度。它是较多群众关于社会中各种现象、问题所表达的信念、态度、意见和情绪等等表现的总和。网络舆情形成迅速,对社会影响巨大,不仅需要各级党政干部密切关注,也需要社会各界高度重视。

随着因特网在全球范围内的飞速发展,网络媒体已被公认为是继报纸、广播、电视之后的“第四媒体”,网络成为反映社会舆情的主要载体之一。网络环境下的舆情信息的主要来源有:新闻评论、BBS、博客、聚合新闻(RSS)。网络舆情表达快捷、信息多元,方式互动,具备传统媒体无法比拟的优势。

1.2 网络问政与舆情监测

网络问政,就是政府通过互联网做宣传、做决策,了解民情、汇聚民网络问政智,以达到取之于民,用之于民。从2008年6月20日,胡锦涛总书记在人民网与网友在线聊天,到各省官员通过各种形式在网上与百姓沟通,中国官员越来越多地通过网络问政于民,使得政府的信息更加透明畅通。依托互联网的大平台,网络问政风生水起,网络监督亦风起云涌。一项调查显示,87.9%的网民非常关注网络监督;当遇到社会不良现象时,99.3%的网民会选择网络曝光。回看过往,从当年的孙志刚事件到一波三折的虎照丑闻,从黑砖窑官员的撤职、复职、再撤职到“天价香烟局长”周久耕被立案调查,从公务员出国“考察门”到“一夫二妻”区委书记董锋被曝光后半月成为阶下囚,网络一次又一次展示出巨大的能量。在网络面前,人人都是新闻记者,一个全民反腐的时代已经到来。

在刚刚结束的2010年第一季度中,从乡一级的“茶杯门”,到省一级的“疫苗事件”,从日记本里的“香艳局长”,到看守所里的“喝开水死”,从新泰“官二代”,到石家庄“骗官案”,从江苏年迈父子自焚抗拆迁,到贵州警察枪击误伤人命。如此短的时间内,涉及官员与权力的热点此起彼伏而能成榜,说明这确实是一个矛盾高发的时代。对于这些事态发生之后引发的舆论关注,政府怎么应对。

也正是每一次汹涌的舆情背后,都有是非黑白需要地方政府处置,所以应对舆情更不应该单独抽离出来,成为一个与前因无关的独立任务。与互联网在公共生活中初有担当、监督公权时不同,地方政府已经从不知所措变得渐渐适应,甚至也能熟练利用网络特点主动出击,积极进行舆情监测、预警和分析,对社会热点话题,突发事件、重大事件进行快速识别和定向跟踪,从而及时掌握舆情动向,对较大影响的重要事件快速发现、快速处理,从正面引导舆论和宣传。

1.3 舆情监测与舆情监控的区别

当前,有很多系统都号称是舆情监控系统,不少单位也号称对舆情进行监控,网络舆情监控表面上是技术手段自动抓取网站内容,实际上和派人入室布控没有区别。从法理和道义来看,舆情监控都是没有依据的,夸张的商业宣传往往会对所在单位以及国家的形象都会造成恶劣影响,对社会和个人都是一种侵害。实际上,舆情只能监测,只能掌握,而不能实施控制监管,是对民意的践踏和法律的侵犯,舆情的问题必须采用舆情的办法解决舆情的问题。舆情监测的目标不是为了监督并控制民意,而是采用技术手段,采集互联网,从而达到了解社会民情,挖掘民意,从而辅助国家决策,为科学决策和和谐社会建设更好的服务。

舆情监测的最早形式是社会调查,下基层了解民间疾苦,现在发展为网络舆情监测,

借助于互联网通道,采用技术手段,大大降低了社会舆情调查成本(社会调查的样本规模和代表性往往不足,如三峡移民调查1万人,调查人员需要走村串户,耗时几个月,而网络舆情可以在一个小时内采集到几百万的言论)。舆情监测一向都是各个国家和开明社会积极推动的事情,是完全合理合法为国为民的积极举措。

那么一旦发生危害国家和社会安全的舆情问题,如谣言、非法集资活动,我们应当如何正确处理呢?“防民之口甚于防川”,正确的方式是:舆情监测系统及时发现问题并预警,针对危机,第一时间内启动危机公关预案,快速利用多种舆情疏导手段进行澄清,如官方网站、在主流论坛发帖、新闻发布会等形式,与谣言赛跑,更早地告知民众真相,而不是简单粗暴地封堵。好的舆情监测系统应该做到实时发现问题、跟踪问题、分析问题,辅助决策者快速指定疏导预案。

1.4 什么是舆情监测系统

网络舆情监控系统是指通过对网络各类信息汇集、分类、整合、筛选等技术处理,再形成对网络热点、动态、网民意见等实时统计报表的软件工具。

舆情监控系统通过对热点问题和重点领域比较集中的网站信息,如:网页、论坛、BBS等,进行24小时监控,随时下载最新的消息和意见。下载后完成对数据格式的转换及元数据的标引。对下载本地的信息,进行初步的过滤和预处理。对热点问题和重要领域实施监控,前提是必须通过人际交互建立舆情监控的知识库,用来指导智能分析的过程。对热点问题的智能分析,首先基于传统基于向量空间的特征分析技术上,对抓取的内容做分类、聚类和摘要分析,对信息完成初步的再组织。然后在监控知识库的指导下进行基于舆情的语义分析,使管理者看到的民情民意更有效,更符合现实。最后将监控的结果,分别推送到不同的职能部门,供制定对策使用。

网络舆情监测系统是利用搜索引擎技术和网络信息挖掘技术,通过网页内容的自动采集处理、敏感词过滤、智能聚类分类、主题检测、专题聚焦、统计分析,实现各单位对自己相关网络舆情监督管理的需要,最终形成舆情简报、舆情专报、分析报告、移动快报,为决策层全面掌握舆情动态,做出正确舆论引导,提供分析依据。

1.5 舆情监测系统的应用范围

1.6 舆情监测系统在政府部门的应用

1.7 通用舆情监测系统是否适用于政府部门

2 技术背景

2.1舆情监测软件与搜索引擎的区别

2.2舆情监测软件与网站垂直搜索软件的区别

2.3舆情监测软件与互联网内容搜索软件的区别

2.4舆情监测软件的核心功能

3 CNSTAR舆情监测与分析系统(政府版)功能概述

4 CNSTAR舆情监测与分析系统(政府版)功能特点

4.1

5 系统软硬件组成

5.1 系统软件组成

5.2 系统硬件组成

6 培训与服务

6.1 培训机制

6.2 服务体系 7公司介绍

第二篇:通讯录管理系统 (c 和 链表)

通讯录(add_book)中的联系人包含以下信息项:姓名、手机、办公电话、家庭电话、电子邮箱、所在省市、工作单位、家庭住址,群组分类(亲属、同事、同学、朋友、其他)。

Name Mobile phones Office phone Family telephone E-mail In cities Work units0 Address Group classification (relative, colleagues, friends, classmates, other). 系统的主要功能包括:

1. 输入联系人的信息,要求:至少输入10个联系人的数据,且注意数据的多样性。

2. 按姓名对联系人信息进行排序,并将排序后信息存放到一个文本文件中。

3. 添加联系人的信息,在已经存在的通讯录文件中添加若干个联系人。要求:添加后仍按联系人的姓名排序,并保存至原文件。

4. 删除联系人的信息,输入一个姓名,若通讯录中有该联系人的信息,则删除该联系人,否则输出提示信息,并提示用户选择是否继续进行删除操作。

5. 修改联系人的信息,输入一个姓名,根据具体需要修改该联系人的某一项信息,将修改后的信息重新保存到通讯录文件中,并提示用户选择是否继续进行修改操作。

6. 按不同条件对通讯录进行查询操作,输出满足条件的联系人的信息。

(1) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓); (2) 按手机号码查询,输入全部号码或号码位段(如输入130、1

33、139等);

(3) 按群组分类查询,输入分类名称,输出该群组的全部联系人信息。

7. 输出联系人的信息Contact information,按一定格式输出信息,保证信息排列整齐美观。ContactPerson 程序源代码如下:

#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h"

#define LEN sizeof(struct LinkPerson) #define FORMAT printf(" 姓名 手机

办公电话

家庭电话

电子邮箱

所在省市

工作单位

家庭住址

群组 "); void print(struct LinkPerson *head); int nn=0; //统计联系人的个数 char selete[10];

//姓名、手机、办公电话、家庭电话、电子邮箱、所在省市、工作单位、家庭住址,群组分类(亲属、同事、同学、朋友、其他) typedef struct LinkPerson { char name[20], mobile[15], office_ph[15], home_ph[15], E_mail[40], in_cities[20], work_units[40],address[40],group[20]; struct LinkPerson *next; }LP; LP *creat() //创建 { LP *head,*p1,*p2; char ch[2]={"1"}; printf(" 请输入通讯录联系人信息: "); FORMAT; p1=p2=(struct LinkPerson *)malloc(LEN);

scanf("%s%s%s%s%s%s%s%s%s",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group); while( strcmp(p1->name,"0")!=0 ) {

nn++;

if(nn==1) head=p1;

else p2->next=p1;

p2=p1;

p1=(struct LinkPerson *)malloc(LEN);

scanf("%s%s%s%s%s%s%s%s%s",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group); } p2->next=NULL; free(p1); return head; } void save(LP *head) //函数功能:保存文件 { FILE *out; LP *p1=head; putchar(10); if ((out=fopen("people.txt", "w+"))==NULL)

{ printf("Can not open this file! "); exit(0); } fclose(out); if ((out=fopen("people.txt", "r+"))==NULL)

{ printf("Can not open this file! "); exit(0); } for(int i=0; i

fprintf(out,"%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

p1=p1->next; }

fclose(out);

putchar(10); } LP *read(void) //函数功能:读取文件 { FILE *fp; LP *head=NULL, *p1=NULL, *p2=NULL; int m=0;

if ((fp=fopen("people.txt", "r"))==NULL)

{ printf("Can not open this file! "); exit(0); }

while(!feof(fp)) {

p1=(LP *)malloc(LEN);

fscanf(fp,"%s%s%s%s%s%s%s%s%s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

m+=1;

if(m == 1) head=p1;

else p2->next=p1;

p2=p1;

} p2->next=NULL; fclose(fp); nn=m; return(head); } LP *array(LP *head) //函数功能:排序 { LP *p0,*p1,*p2,*h; h=p1=p2=head; if(nn<=1) return(h); for(int i=0; i

p1=p2=h;

for(int j=0; j

{

p2=p1->next;

if((p1==h) && strcmp(p1->name,p2->name)>0 )

{

h=p2;

p1->next=p2->next;

p2->next=p1;

p0=p2;

}

else if( strcmp(p1->name,p2->name)>0 )

{

p0->next=p2;

p1->next=p2->next;

p2->next=p1;

p0=p2;

}

else { p0=p1; p1=p2; p2=p2->next; }

} } return(h); } void print() //函数功能 :输出信息 {

LP *p1,*head; p1=head=read();

printf("共有联系人 %d 名 ",nn); FORMAT; if(head!=NULL)

do

{

printf("%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

p1=p1->next;

}while(p1!=NULL); } LP *add(void) //函数功能:增加联系人信息 { LP *head,*p1,*p2; head=read(); p2=head; while(p2->next != NULL) //找到原先数据的终点,作为新增数据的起点

{

p2=p2->next; } p1=(LP *)malloc(LEN); printf("请输入增加联系人的信息: "); FORMAT;

scanf("%s%s%s%s%s%s%s%s%s",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group); while( strcmp(p1->name,"0")!=0 ) {

nn++;

if(nn==1) head=p1;

else p2->next=p1;

p2=p1;

p1=(struct LinkPerson *)malloc(LEN);

scanf("%s%s%s%s%s%s%s%s%s",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

// } p2->next=NULL; free(p1);

head=array(head); save(head);

return (head); } LP *del() //函数功能:删除信息 { start_del: char name[20]; LP *head,*p1,*p2; p1=p2=head=read(); printf("请输入要删除的联系人姓名: "); scanf("%s",name); while( strcmp(p1->name,name)!=0 && (p1->next!=NULL) )

{ p2=p1; p1=p1->next; } //找出p1指向的节点

if( strcmp(p1->name,name)==0) {

if(p1==head) head=p1->next;

else p2->next=p1->next;

printf("del: %s ",name);

free(p1);

nn--;

printf("还有联系人%d位 ",nn); } else printf("没有你要删除的联系人! "); save(head);

printf(" 是否继续进行删除操作? 1.是 2.返回主菜单 3.退出 请输入:"); scanf("%s",selete); if( strcmp(selete,"1")==0 ) goto start_del; else if( strcmp(selete,"2")==0 ) return 0; else if( strcmp(selete,"3")==0 ) exit(0); else return(head);

} LP *modify() //函数功能:修改联系人信息 { start_mod: char name[20]; int select; LP *head,*p1,*p2; p1=p2=head=read(); printf("请输入要修改的联系人姓名: "); scanf("%s",name); while( strcmp(p1->name,name)!=0 && (p1->next!=NULL) )

{ p2=p1; p1=p1->next; } //找出p1指向的节点

if( strcmp(p1->name,name)==0 ) {

printf("将要修改的联系人的信息 ");

FORMAT;

printf("%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

printf("请输入要修改的选项 ");

printf(" 1.姓名

2.手机 3.办公电话 4.家庭电话

5.电子邮箱 6.所在省市 7.工作单位

8.家庭住址 9.群组 请输入:");

scanf("%d",&select);

printf("请输入该项新的信息:");

if(select==1) { scanf("%s", p1->name); }

if(select==2) { scanf("%s",p1->mobile); }

if(select==3) { scanf("%s",p1->office_ph); }

if(select==4) { scanf("%s",p1->home_ph); }

if(select==5) { scanf("%s",p1->E_mail); }

if(select==6) { scanf("%s",p1->in_cities); }

if(select==7) { scanf("%s",p1->work_units); }

if(select==8) { scanf("%s",p1->address); }

if(select==9) { scanf("%s",p1->group); }

save(head); } else { printf(" 没有该联系人,请重新输入! "); goto start_mod; } printf(" 是否继续进行修改操作? 1.是 2.返回主菜单 3.退出 请输入:"); scanf("%s",selete); if( strcmp(selete,"1")==0 ) goto start_mod; else if( strcmp(selete,"2")==0 ) return 0; else if( strcmp(selete,"3")==0 ) exit(0); else return(head); }

find() //函数功能 :查找 {

char select[10]; char name[20],mobile[15],group[20]; LP *p1,*p2,*head; start_f: p1=p2=head=read(); printf("按下列选项查询联系人信息 "); printf(" 1.按姓名

2.按手机号码

3.按群组分类

请选择:"); scanf("%s",select); if( strcmp(select,"1")==0 ) {

printf("请输入姓名:");

scanf("%s",name);

while( strcmp(p1->name,name)!=0 && (p1->next!=NULL) )

{ p2=p1; p1=p1->next; } //找出p1指向的节点

if( strcmp(p1->name,name)==0 )

{

FORMAT;

printf("%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

}

else printf("没有要查找的联系人信息!! "); } else if( strcmp(select,"2")==0 ) {

printf("请输入手机号码:");

scanf("%s",mobile);

while( strcmp(p1->mobile,mobile)!=0 && (p1->next!=NULL) )

{ p2=p1; p1=p1->next; } //找出p1指向的节点

if(strcmp(p1->mobile,mobile)==0)

{

FORMAT;

printf("%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

}

else printf("没有要查找的联系人信息!! ");

} else if( strcmp(select,"3")==0 ) {

int n_n=0;

printf("请输入群组:");

scanf("%s",group);

while( strcmp(p1->group,group)!=0 && (p1->next!=NULL) )

{ p2=p1; p1=p1->next; } //找出p1指向的节点

if(strcmp(p1->group,group)==0)

{

FORMAT;

printf("%s %s %s %s %s %s %s %s %s ",p1->name,p1->mobile,p1->office_ph,p1->home_ph,p1->E_mail,p1->in_cities,p1->work_units,p1->address,p1->group);

}

else printf("没有要查找的联系人信息!! "); } else { printf(" 请输入正确的选择!! "); goto start_f; } printf(" 1.继续查找

2.返回主菜单

3.退出 请选择:"); scanf("%s",select); if( strcmp(select,"1")==0 ) goto start_f; else if( strcmp(select,"2")==0 ) return 0; else if( strcmp(select,"3")==0 ) exit(0); else return 0; } void main() { printf(" 21 欢迎使用通讯录管理系统 "); start: LP *head; printf(" 1.新建联系人 2.添加联系人 3.删除 4.修改 5.查询 6.输出联系人的信息 7.退出 请输入选择:"); scanf("%s",selete); if( strcmp(selete,"1")==0 ) { head=creat(); head=array(head); goto start; } else if( strcmp(selete,"2")==0 ) { head=add(); goto start; }

else if( strcmp(selete,"3")==0 ) { head=del(); goto start;} else if( strcmp(selete,"4")==0 ) { modify(); goto start;} else if( strcmp(selete,"5")==0 ) { find(); goto start;}

else if( strcmp(selete,"6")==0 ) { print(); goto start;}

else if( strcmp(selete,"7")==0 ) exit(0); else goto start; // }

第三篇:C语言机票订票管理系统源代码

#include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #include //包含access函数的头文件 #include #include #include #include #define N 9999

//定义最多的航班数 #define PRINT "%d %s %s 星",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count

//宏定义输出格式

struct air

{ int num;

char start[20]; char over[20]; char time[10]; int count;

}s[N];

int i,a,m=0; char ii[10]; //定义结构体数组

//定义航班号 //航班起始站

//终点站

//飞行时间

//机票数量

期%s %d //定义全局变量

void add(); //函数声明增加航班信息函数

void print();

//显示航班信息 void search(); //查找航班信息 void dingpiao(); //订票业务 void tuipiao(); //退票 void read(); //读取文件

void save(); //保存文件 void output(); //输出格式 void paixu(); //航班排序 void chushihua(); //系统初始化 void build(); //建立数据文件 void paixu1(); //按航班号从小到大排序 void paixu2(); //从大到小 int head (); //进入订票系统

int main() //主函数 { int j;

system("color b0"); chushihua(); //系统初始化判断是否存在原始数据文件

system("cls");

head(); //打印出系统主界面

system("cls"); do {

printf("================================== ");

printf("1.增加航班信息 "

" 2.浏览航班信息 "

" 3.查找航班信息(按航班号) "

" 4.航班排序(按航班号) "

" 5.订票业务 "

" 6.退票业务 "

" 0.退出 "); printf("================================== ");

printf("请在0-6中选择以回车键结束: "); scanf("%d",&j); switch(j) {

}

case 1: add(); system("cls");

break;

//调用增加航班函数

case 2:print(); system("cls");//调用显示模块

break; case 3:search();system("cls"); //调用查找模块

break; case 4:paixu(); system("cls"); //调用排序函数

break; case 5:dingpiao();system("cls"); break;

//调用订票模块

case 6:tuipiao();system("cls"); //调用退票模块

break;

case 0:

//退出系统

save();system("cls");

printf(" 谢谢使用,再见! ");

printf(" ");

break; } }while(j!=0); //判断是否调用其他函数

void chushihua() //定义系统初始化函数 { if(access("hangban.dat",0)) {

build(); } else

read(); }

void build() {

//定义建立数据文件函数

FILE *fp; //定义文件指针

if((fp=fopen("hangban.dat","wb"))==NULL) {

//打开文件并判定是否出错

printf("创建文件失败! "); //打印出错提示

getchar(); return; } printf("请依次输入航班信息(以回车键结束): ");

//打印提示信息 printf("------------ "); for(i=0;i

printf("请输入航班号: ");

scanf("%d",&s[i].num); //输入航班号 printf("请输入起始站: "); scanf("%s",s[i].start); //输入起始站 printf("请输入终点站: "); scanf("%s",s[i].over); //输入终点站 printf("请输入时间(星期几): "); scanf("%s",s[i].time); //输入时间 printf("请输入机票数: "); scanf("%d",&s[i].count); //输入机票数 fwrite(&s[i],sizeof(struct air),1,fp); m++; printf("添加完毕,是否继续添加?请键入y或n以回车键结束:"); scanf("%s",ii); if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息 { fclose(fp);

//关闭文件

return; } } }

void read()

//定义读取文件函数 { FILE *fp; if((fp=fopen("hangban.dat","r"))==NULL) {

} printf("创建文件失败! "); getchar(); return; } i=0; while(!feof(fp)) { fread(&s[i],sizeof(struct air),1,fp);

i++; m++; //计算存在航班数 } m--; fclose(fp); printf("请稍候,正在初始化"); for(a=0;a<3;a++) {

printf(".");

Sleep(600); } printf(" ");

//逐块读取数据

void save() //定义保存函数 { FILE *fp; if((fp=fopen("hangban.dat","wb"))==NULL)

{

printf("创建文件失败! "); getchar(); return; } for(i=0;i

//逐块保存数据

fwrite(&s[i],sizeof(struct air),1,fp); fclose(fp); printf("正在保存数据并退出"); for(a=0;a<3;a++)

} {

printf(".");

Sleep(600); } printf(" "); printf(" "); void add() { do{

//定义增加航班信息函数

printf("请依次输入您要增加的航班信息(以回车键结束): ");

//打印提示信printf("------------ ");

printf("请输入航班号: ");

scanf("%d",&s[m].num); //读取航班号 printf("请输入起始站: "); scanf("%s",s[m].start); //读取起始站 printf("请输入终点站: "); scanf("%s",s[m].over); //读取终点站 printf("请输入时间(星期几): "); scanf("%s",s[m].time); //读取时间 printf("请输入机票数: "); scanf("%d",&s[m].count); //读取机票数 m++;

printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");

scanf("%s",ii); }while(!strcmp(ii,"y")); //判断是否继续添加

printf("正在保存,请稍候"); for(a=0;a<5;a++)

{

printf(".");

Sleep(600);

}

printf(" "); }

void output() //定义输出格式函数 {

printf("航班号 起始站 终点站 时间 机票数 "); //信息标题

for(i=0;i

} printf(PRINT);//打印出信息

void print() //定义显示航班信息函数 { printf("正在加载,请稍候");

for(a=0;a<5;a++)

{

printf(".");

Sleep(400);

}

printf(" ");

system("cls"); printf(" 目前我们有如下航班: "); output();

//调用输出格式函数

printf(" 请按回车键返回上层菜单 "); getchar(); getchar(); }

void search() //定义查询函数 { int n;

do {

printf(" 请输入航班号: ");

scanf("%d",&n); //输入查询的航班号

printf("正在查询");

for(a=0;a<5;a++)

{

printf(".");

Sleep(400);

}

printf(" ");

for(i=0;i

{

if(s[i].num==n)//按航班号判定输出条件

{

printf(" 您所查找的航班信息为: ");

printf("航班号 起始站 终点站 时间 机票数 ");

printf(PRINT); //显示信息

printf(" 查询完毕,按回车键继续");

getchar();

getchar();

return;

} } printf(" 对不起,没有您需要的信息! "); printf("是否重新查找?请键入y或n以回车键结束 "); scanf("%s",ii); }while(!strcmp(ii,"y"));//判定是否重新查找

}

void dingpiao() //定义订票业务函数 { int n,x; char a[10]="y"; do {

search(); //调用查询模块

if(!strcmp(ii,"n"))

{

printf("对不起!没有找到您所需要的航班,所以不能订票。 "); 所需航班

printf(" 请按回车键返回上层菜单 ");

getchar();

getchar();

strcpy(ii,"n");

break;

}

do

{

printf("请输入您要订的机票数(以回车键结束): ");

scanf("%d",&n); //输入所订机票数

printf("请稍候,正在订票");

for(x=0;x<3;x++)

{

printf(".");

Sleep(600);

}

printf(" ");

if(n<=0)

//判定机票数是否出错

//未查找到

{ printf("输入错误!至少需订1张机票。 "); } else if(s[i].count==0)//判定机票是否售完 {

} printf("对不起,你所选择的航班的机票已售完! "); break; else if(s[i].count!=0&&s[i].count>=n) //判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf("订票成功! "); break; } else if(s[i].count

printf("对不起,你所选择的航班只剩 %d张机票 ", s[i].count);

printf("是否需要重新输入机票数? 请输入y或n以回车键结束: ");//判定是否重新输入订票数

scanf("%s",a);

}

printf("请稍候,正在订票");

for(x=0;x<3;x++)

{

printf(".");

Sleep(600);

}

printf(" ");

} }while(!strcmp(a,"y")); printf("是否需要订其他航班的机票? 请输入y或n以回车键结束: "); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否继续订票

void tuipiao() //定义退票函数 { int n,x; char a[10]; do {

search(); //调用查询函数

if(!strcmp(ii,"n"))

{

printf("对不起!没有找到您所需要的航班,所以不能退票。 "); printf(" 请按回车键返回上层菜单 "); getchar(); getchar(); strcpy(ii,"n"); break; } printf("请输入您要退的机票数目: "); scanf("%d",&n);

//输入所退票数 printf("请稍候,正在退票"); for(x=0;x<3;x++) {

printf(".");

Sleep(600); } printf(" "); if(n<=0)

//判定票数是否有效

printf("输入错误!至少需退1张机票。 "); else { s[i].count=s[i].count+n; printf("退票成功! "); }

printf("是否继续? 请键入y或n以回车键结束: "); scanf("%s",a);

//判定是否继续退票

}while(!strcmp(a,"y")); //判定并跳出循环

}

void paixu() //定义排序函数 { int n;

printf(" ******************************************************************************** ");

printf("1.按航班号从小到大排序 "

" 2.按航班号从大到小排序 "); printf("******************************************************************************** ");

printf("请在1-2中选择以回车键结束: "); scanf("%d",&n); //输入排序方式

switch(n) {

case 1:paixu1();//调用从小到大排序函数

break;

case 2:paixu2();//调用从大到小排序函数

break; } printf("排序后的航班信息为: "); output();

//显示排序后航班信息

printf(" 请按回车键返回上层菜单 ");

getchar(); getchar(); /*for(a=0;a<5;a++)

{

printf(".");

Sleep(400);

}

printf(" ");*/ }

void paixu1() //定义从小到大排序函数 { int k,j; struct air t; for(i=0;i

{

k=i;

for(j=i+1;j

if(s[k].num>s[j].num)

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } printf("正在排序,请稍后");

for(a=0;a<5;a++)

{

printf(".");

Sleep(400);

}

printf(" "); }

void paixu2() //定义从大到小排序函数 { int k,j; struct air t; for(i=0;i

k=i;

for(j=i+1;j

if(s[k].num

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } printf("正在排序,请稍后");

for(a=0;a<5;a++) {

printf(".");

Sleep(400); } printf(" "); }

int head ()

//进入订票系统

{ printf("=================== "); printf("*

* ");

printf("*

欢迎使用机票订票管理系统

* "); printf("*

* "); printf("*

此处可以适当的加点文字

* "); printf("*

* "); printf("=================== "); printf("请按回车键进入界面"); getchar(); printf("正在进入系统选项"); for(a=0;a<3;a++) { printf("."); Sleep(600);

} } printf(" "); return 0;

第四篇:《C语言程序设计》考试系统

C language progamme design examination system

马国富

刘波

(安阳工学院 计算机工程系,河南 安阳455000)

Ma GuoFu,liu bo

(Department of Computer Engineering,Anyang Institute of Technology,Anyang 455000)

一:摘要

这一考试系统是一种计算机辅助教学软件,它包括教学模式,练习模式,考试模式。采用调用数据库的方式打开,可以实现随机选题和指定选题,而不是固定的试题。解决了由于教材更新和题库更新导致教学软件过时。大大提高了软件的利用价值,打破了教学软件内容的固化,其次三种工作模式极大地拓宽了软件的使用范围,不再是单一的教师教学软件或学生考试软件。可根据教学需要灵活地选择不同模式,同时少作修改即可用于其它课程。

系统解决了在多媒体教学中出现的模式僵化,内容固化的问题。更新教学内容只需建立一个新的数据源实现连接即可。

Abstract

The test system of the principle is a Computer extended education software, and this course is also the compulsory course in High etc. school.This system include Teaching mode. Practice mode Examination mode.You can use database open the examination database That is to say the content is up to you or at random.It is the revolution of test system This is the main reason we develop it.

二:关键词

考试系统 、多媒体技术、数据源、连接数据库

keyword examination system、multimedia technology、data soure、connection of database 三:课题研究的意义和目的

安阳工学院计科系毕业论文 2 3.1研究意义

现在,多媒体技术日趋成熟,多媒体系统以其能输出精彩的图形和图像、美妙的声音、动感的画面赢得了用户和社会各界广泛的关注和应用。如果把按传统考试方式同现代化的多媒体技术相结合,并且用多媒体著作工具及其它多媒体技术,编制一套符合高校考试需求的系统及其配套的多媒体教学软件,利用多媒体技术生动、直观、形象展示信息的特点,辅助教师授课和学生进行考试,尤其对部分有限制性的实验环节,可利用活动视频技术进行展示,这将会解决一系列目前存在的问题。总之,该课题是在计算机辅助教学及考试上进行的一次积极有意义的尝试,为其他实践性较强的课程进行多媒体辅助教学开辟一条新的路子,具有一定的理论和现实意义。

3.2目 的

传统的考试手段主要依靠有纸试卷,几乎没有可重用性。本课题将实现:用计算机辅助考试系统,把多媒体生动、直观的显示出来,使学生不再将考试视为一种枯燥无味的东西,提高了考试效果,使学生在一种愉悦的心情中进行考试,把枯燥的重复变为充满乐趣、具有启发性的考试过程,使学生能比较全面的学习知识,掌握技能,达到素质教育的要求。

四:系统流程图设计

4.1 初始化流程设计

在使用Authorware创建任何多媒体项目的时候,都应该先设置当前项目文件的窗口大小,将其设置为“800×600”,然后选择“演示居中屏幕”,同时取消对“显示标题栏”和“显示菜单栏”复选框的选择。

4.2 主界面的设计

本界面采用了Photoshop7.0图形图像处理软件来绘制。为了避免界面的单调和呆板,用蒙版和滤镜技术加以美化。该界面把Photoshop中的图层技术、图层蒙版技术、文字效果及滤镜等功能完美的结合了起来。并且在底部设置了一个Flash动画,增加视觉效果。

4.3背景音乐的交互控制

该多媒体教学以MIDI作为背景音乐,背景音乐的交互控制包括背景音乐的随机选曲播放、停止等功能,另外当该教学程序处于活动状态时,能够随时调整背景音乐和讲解声音的大小及比例,让使用者在一种轻松悦耳的环境中考试(调出WINDOWS的音量控制实现),还能够暂停背景音乐,当再次进入活动状态时则能重新播放背景音乐。

为了充分考虑用户计算机的不同配置情况,首先利用BUDAPI.U32的BASOUNDCARD函数判断用户机器是否已经安装了声卡,如果已经安装则执行背景音乐播放,否则不允许播放任何背景音乐操作.第 2 页 共 8 页

安阳工学院计科系毕业论文 3 程序如下:

IF BASOUNDCARD() THEN MIDI:=1 TEST(MIDI,MIDILOOP (FILELOCATION^”MUSICMUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI()) END IF 软件中的背景音乐交互控制是通过交互响应来实现的。在程序执行过程中,用户始终可以通过按钮控制背景音乐的播放与暂停。在计算图标“播放音乐”后添加一交互图标并命名为“音乐控制”,并在交互图标右边添加三个计算分支。设置“STOP/PLAY”分支为按钮响应交互,其功能是实现对背景音乐的控制。由于在整个程序执行过程中它都是有效的,因此须设置其为永久按钮,即选择“PERPETUAL”属性选项,同时设置“ACTIVE IF”条件为:BASOUNDCARD(),即检测到用户没有安装声卡的情况下该按钮及响应分支无效。

4.4内容的导航设计

该多媒体教学涉及内容繁多,不仅包括文本、图片、声音和动画,而且还有其它多媒体工具与Authorware 配合,同时,还把视频文件导入,以增加实用性。为使用户操作简单方便,设计了合理的教学内容导航。主文件与各章节之间的导航设计根据结构规划中的该章节内容的栏目划分,在流程设计中为这些栏目设计了导航,如图1为主程序内容导航的设计流程图。

图1 主程序内容导航

这样的流程设计使整个主程序结构清晰,可读性强。由于该文件结构是主-分结构,即主文件调用各章节模块文件的方式,因此在主文件的章节内容中实际存放的是一个起链接桥梁作用的调用脚

第 3 页 共 8 页

安阳工学院计科系毕业论文 4 本,而具体的考试试题题型内容则放在各章节的模块文件内。

4.5各模块的内容流程设计

图中的考试模式、练习模式、教学模式及退出系统这四部分主要程序流程图如下图

2、图

3、图

4、图5所示。

图2

第 4 页 共 8 页

安阳工学院计科系毕业论文 5

图3

图4

图5

第五部分的原理演示则是通过热区交互以及调入用VC6.0制作的演示内容的库文件,抽象的工作原理形象化,具体化。在打包的过程中采用了分步打包,首先对每部分进行打包。通过主文件调用其它各部分,这样避免了主文件过大,影响运行速度。

五: 以完成单选题为例来看具体实现过程

从单选题的数据库题库中随机抽取相应题数的问题;每一题只能选择一个答案;用户可以按次序做答,可跳过不答,在回答过程中,可以随时返回已做过的题目进行修改;交卷后会给出完成情况可以查

第 5 页 共 8 页

安阳工学院计科系毕业论文 6 看每题的回答情况.最后回到选题主界面,并把学生所做的答案成绩保存到数据库中。

当用户在主界面中,选择了“考试模式”后,系统就会进入到登录界面系统会提示输入用户名和密码,当输入后,点击“确定”后,系统将会进入到题型选择界面。在提示框中输入用户名和密码,我们点击“确定”后,就会进入到正式的单选题型界面中,选择“单选题”单击。

C语言程序设计考试系统的选择题从数据库中取出选择题,在一个界面上显示。利用三个热区域交互按钮“上一题”“下一题,”“完成”,按钮和四个热区域设置计算图标用来记录学生所选择的答案。在学生选择“完成”后,弹出学生做题的情况界面,

然后回到选题主界面,并把学生所做的答案成绩保存到数据库中。

5.1“未命名”用来擦除以前的图像

5.1.1 打开“未命名”的属性,进入“未命名”的属性窗口。

5.1.2在“属性窗口”中单击擦除标签在设置过渡效果进行设置 5.1.3单击“确定”按钮

5.2 设置“单选界面”插入一个图像

5.2.1双击“单选界面”图标进入显示图标窗口

5.2.2单击 绘图工具箱 图标进行绘制一个和窗口矩形一样大的矩形

5.2.3设置矩形的颜色为“绿色”

5.2.4单击显示图标窗口的关闭按钮,关闭保存对“单选界面”的设置 5.3 设置交互“进入”

5.3.1在交互图标的右边拖放一个群组“单选” 5.3.2设置单选的热区为“按钮“ 5.3.3单击确定后,双击“选择”。

5.3.3.1“未命名”用来擦除上次运行的图形 5.3.3.2在“打开数据库”的输入如下源程序:

第 6 页 共 8 页

安阳工学院计科系毕业论文 7 hint0:="您的数据库没有连接上......" --显示连接数据库的信息 title:="数据库连接...." ODBChandle:=ODBCOpen(WindowHandle,"","database","","") --得到数据源

getrecord:="select count(sequence) from erigister" --得到记录的个数 record:=ODBCExecute(ODBChandle,getrecord) if ODBChandle=0 then --测试连接数据库是否连接成功 MessageBox(WindowHandle,hint0,title,17) end if ODBCClose(ODBChandle) ODBChandle:=ODBCOpen(WindowHandle,"","database","","") if ODBChandle=0 then MessageBox(WindowHandle,hint0,title,17) end if sqlstring1:="select ssdb from erigister where sequence="^record^""-从表中选择单选库表题 ssdatabase:=ODBCExecute(ODBChandle,sqlstring1) getrecord:="select count(sequence) from "^ssdatabase^"" record:=ODBCExecute(ODBChandle,getrecord) --ssdb数据库的记录个数,以便产生随机数 sssum:=0 number1:=1 sui:=[] sui[1]:=Random(1,record,1) --下面程序用来产生一个随机数不能出现相同的题目 i:=2 repeat while i<=record flag:=0 repeat while flag=0 sui[i]:=Random(1,record,1) flag1:=0 repeat with p:=1 to i-1 if sui[i]=sui[p] then flag1:=1 end repeat if flag1=0 then flag:=1 end repeat i:=i+1 end repeat

5.3.3.3 在“做选择的背景”显示图标中设计单选题的界面如上图5.4 5.3.3.4 在“数据库的操作”中输入如下代码:在这里,我们就要实现对数据库的随机读取和跟踪答案的长短来选择界面

x:=0 ran:=sui[number1] result:="" record1:=Number(record)

第 7 页 共 8 页

安阳工学院计科系毕业论文 8 record:=record1 --得到记录的个数

sqlstring1:="select topic from "^ssdatabase^" where sequence="^ran^""分别得到选择题各项 sqlstring2:="select a from "^ssdatabase^" where sequence="^ran^"" sqlstring3:="select b from "^ssdatabase^" where sequence="^ran^"" sqlstring4:="select c from "^ssdatabase^" where sequence="^ran^"" sqlstring5:="select d from "^ssdatabase^" where sequence="^ran^"" sqlstring6:="select result from "^ssdatabase^" where sequence="^ran^"" get1:=ODBCExecute(ODBChandle,sqlstring1) --get1得到选择题目内容 get2:=ODBCExecute(ODBChandle,sqlstring2) --get2得到选择项A内容 get3:=ODBCExecute(ODBChandle,sqlstring3) --get3得到选择项B内容 get4:=ODBCExecute(ODBChandle,sqlstring4) --get4得到选择项C内容 get5:=ODBCExecute(ODBChandle,sqlstring5) --get5得到选择项D内容 get6:=ODBCExecute(ODBChandle,sqlstring6) --get6得到选择题的答案 inputa:=1 --用来设置热区域的激活条件

5.3.3.5 空“操作”用来设置跳转标志

5.3.3.6

在交互图标右边拖入四个热区域

在计算图标中从左到右的四个计算图标中输入: result:="A" result:="b" result:="c" result:="d"在交互属性中设置激活条件为inputa=1: ,鼠标指针设置为标准鼠标指针,其它的为默认设置.其中result变量用来记录用户所选的答案. 5.3.3.7拖一个交互图标“未命名”在它的右边拖两个计算图标为“上一题”和“下一题”,再拖一个群组“完成”放在“下一题”右边 ,设置热区为按钮。在“上一题”的激活条件中输入number1>1,鼠标指针设置为:标准的鼠标指针。在“下一题”的激活条件中输入:number1

六 结束语

根据对教师上课时课堂练习的分析,开发出该考试系统,主要是能够方便课堂练习,同时还可用于期中期末测试,该系统主要是针对《C语言程序设计》课程来设计的。对该系统做简单修改,即可用于其它课程。

参考文献

专著:王嘉宁 朱隽著 《Photoshop7.0中文版新概念百例》[M] 中国水利水电出版社 2004年4月 专著:龚祥国主编 《Photoshop图像处理实用教程》[M] 科学出版社 2002年 2月

专著: 王龙 金海主编 《Flash MX实战入门新概念》[M] 中国水利水电出版社 2005年5月 专著: 李恒著《Authorware 6.0多媒体实例大制作》[M] 冶金工业出版社 2002 年4月 专著: 袁海东著《Authorware 7.0教程 》[M] 电子工业出版社 2004年9月 专著: 郝蕾蕾著 《Authorware课件制作》[M] 中国水利水电出版社 2001年7月

第 8 页 共 8 页

第五篇:C语言课程设计学生选课系统

题目

一、学生选课管理系统

第一部分:课程设计名称、目的、要求

第二部分:程序总体设计思路

第三部分:程序功能划分、图示及流程图

第四部分:程序设计数据、运行结果

第五部分:程序的优缺点

第六部分:心得体会

第七部分:附录(源程序)

第八部分:附录(参考文献)

目录

... ........... . ..... ............... ................... ............. ...........

第一部分:课程设计名称、目的、要求

名称:学生选修课程系统设计

目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C++ 6.0 内容:

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 【功能】

系统以菜单方式工作

课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出

查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项)

第二部分:程序总体设计思路

由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。

具体的设计思路如下:

程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。

整个程序的设计思路到此结束。

第三部分:程序功能划分、图示及流程图

【功能模块划分及其流程图】

本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:

1. 登录界面函数;void login() 2. 学生登录界面据函数:void stu_login() 3. 管理员登录界面函数:void man_login() 4. 退出界面函数:void bye_sys()

5. 课程选择函数:void c_select() 6. 课程浏览函数:void c_view() 7. 课程查询函数:void c_search() 8. 课程增加函数:void c_add() 9. 课程删除函数:void c_delete() 10. 菜单函数:void index() 11. 主函数部分; main()

总体设计:

学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数

系统功能模块图

部分函数流程图:

1、 课程选择函数:

开始输入要选择的课程的编号j=0;j

2、 课程查询函数

开始输入要查询的课程的编号j=0;j

3、 课程增加函数

开始输入要增加的课程的编号j=0;j

4、课程删除函数

开始输入要删除的课程的编号nj=0;j

本程序是一款应用软件,故数据设计、程序运行结果应在程序的

运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。 【软件运用举例】

1、程序开始界面如下:

选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面:

2、再选择所要进行的操作,如进行课程增加,结果如下:

下面可以进行继续增加课程或者退出:

3、选择课程浏览,可以分页查看相应的课程信息: 第一页:

第二页:

4、课程查询

查找结果:

4、 管理员课程删除操作:

删除后可以进行浏览,观察删除后的结果:

可见删除后只有一条记录。删除操作完成正确。 下面进行学生操作的使用方法:

1、学生登陆界面:

2、选择学生选课选项:

3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。

第五部分:程序的优缺点

【程序的优点】

算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。

[算法上的优点]主要体现在以下三点:

1. 程序采用main主函数方式设计,程序的主体的功能大都由该功能

完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。

2. 程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。

3. 插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。

[功能上的优点] 主要体现在以下两点:

1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。 2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。

【程序的缺点】 主要表现在以下两点:

1、 本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。

2、 本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。

第六部分:心得体会

选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。

本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。

通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。

程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。

对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。

总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。

第七部分:附录

一、参考文献:

1、李丽娟主编 ,C语言程序设计教程(第二版),人民邮电出版社

2、严蔚敏主编,数据结构(C语言),清华大学出版社

3、崔单主编,C语言程序设计案例精粹,电子工业出版社

4、谭浩强主编,程序设计(第三版),清华大学出版社

二、源程序

#include"stdio.h" #include"stdlib.h" #include"windows.h" #include"string.h"

void index();//首页 void login(); void bye_sys();//退出界面

void stu_login();//学生登录菜单

void c_select(); void c_view();//课程浏览

void c_add();//增加课程 void c_delete(); void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数

struct course//定义课程结构体

{

int c_num;

char c_name[20];

int c_score;

int c_nelepeo;//课程已选人数

int c_melepeo;//课程人数上限 }; struct student { char s_number[10];

char s_password[10]; }; struct manager { char m_name[10]; char m_password[10]; };

void index()//首页 {

char input;

printf(" ***************************** ");

printf("

湖南大学学生选课系统 ");

printf(" ***************************** ");

printf(" ***************************** ");

printf(" ***************************** ");

printf(" ***************************** ");

printf(" **********设计者:刘晓斌****** ");

input=getchar();

system("cls"); } void login()//登陆界面

{

void stu_login();

void man_login();

void bye_sys();

int input;

do

{

system("cls");

printf(" 1.学生登录 ");

printf(" 2.管理员登陆 ");

printf(" 3.退出本系统 ");

printf(" 请选择服务类别:");

scanf("%d",&input);

if (input!=1&&input!=2&&input!=3) //输入数不等于选项的时候打印画面

{

printf(" 输入出错!请重新选择~ ");

printf(" 按任意键返回选择页面~ ");

getchar();getchar();

system("cls");

}

if(input==3)//如果输入3退出系统

{

bye_sys();

}

}while(input!=1&&input!=2&&input!=3);

switch(input)

{

case 1:stu_login();break;

case 2:man_login();break;

} }

void bye_sys()//退出界面 { exit(0); }

void man_login() {

void c_add();

void c_delete();

void c_view();

void c_searchm();

int in;

do

{

system("cls");

printf(" 1.新增课程 ");

printf(" 2.删除课程 ");

printf(" 3.课程浏览 ");

printf(" 4.课程查询 ");

printf(" 5.退出 ");

printf(" 请选择服务种类:");

scanf("%d",&in);

if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5)

{

printf(" 没有这项服务 按任意重新选择");

getchar();getchar();

}

}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5);

switch(in)

{

case 1:c_add();break;

case 2:c_delete();break;

case 3:c_viewm();break;

case 4:c_searchm();break;

case 5:login();break;

} }

void stu_login()//学生登录菜单

{

void c_select();

void c_view();

void c_searchs();

void login();

int input;

do

{

system("cls");

printf(" --学生登陆--");

printf(" 1.学生选课 ");

printf(" 2.课程浏览 ");

printf(" 3.课程查询 ");

printf(" 4.退出 ");

scanf("%d",&input);

if(input!=1&&input!=2&&input!=3&&input!=4)

{

printf(" 没有这项服务~ ");

printf(" 按任意键重新选择");

getchar();

getchar();

}

}while(input!=1&&input!=2&&input!=3&&input!=4);

switch(input)

{

case 1:c_select();break;

case 2:c_views();break;

case 3:c_searchs();break;

case 4:login();break;

} }

void c_select() {

int n,in,i=0,j;int flag=0;

FILE *fp;

FILE *fp1;

char input;

struct course courses[10];

if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程

{

printf(" 课程不存在 ");

printf(" <按任意键返回管理菜单> ");

input=getchar();

input=getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

}

printf(" 请输入你要选课程的编号:");

scanf("%d",&n);

if((fp1=fopen("courseselect.dat","rb"))==NULL)

{

fp1=fopen("courseselect.dat","wb");

}

else

{

fclose(fp1);

fp1=fopen("courseselect.dat","ab");

}

for(j=0;j

if(courses[j].c_num==n)

flag++;

if(flag==0)

{

printf(" 不存在对应课程 ");

printf(" 继续选课请按1,退出请按2: ");

scanf("%d",&in);

switch(in)

{

case 1:c_select();break;

case 2:stu_login();break;

default:

printf("输入错误,将返回登录界面! ");

login();break;

}

}

else

{

fwrite(&courses[j],sizeof(struct course),1,fp1);

fclose(fp1);

printf(" 选课成功 请选择:");

printf(" 1.继续选课");

printf(" 2.退出,返回登录界面!");

scanf("%d",&in);

switch(in)

{

case 1:c_select();break;

case 2:stu_login();break;

default:break;

}

} }

void c_viewm()//课程浏览

{

void stu_login();

void c_view() ;

int

inp,i=0,n=0;

FILE *fp;

char input;

struct course courseview[10];

if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程

{

system("cls");

printf(" 课程不存在 ");

printf(" <按任意键返回管理菜单> ");

getchar();getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courseview[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

do

{

system("cls");

if(i==1)

{

printf(" 没有记录! ");

getchar();getchar();

man_login();

}

else

{

printf(" ------共有%d条记录-------",i-1);

printf(" 课程编号: %d ",courseview[n].c_num);

printf(" 课程名字: %s ",courseview[n].c_name);

printf(" 课程学分: %d ",courseview[n].c_score);

printf(" 课程已选人数: %d ",courseview[n].c_nelepeo);

printf(" 课程人数上限: %d ",courseview[n].c_melepeo);

printf(" 1.上一页 2.下一页 3.回目录");

printf(" 请选择:");

scanf ("%d",&inp);

switch(inp)

{

case 1:

{

if(n==0)

{

printf(" 已到达首页 按任意键返回");

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case 2:

{

if(n==i-2)

{

printf(" 已到达尾页 按人意见返回");

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case 3:{man_login();break;}

default:

{

printf(" 操作错误 按任意键返回");

getchar();getchar();

break;

}

}

}

}while(inp!=3);

} }

void c_views()//课程浏览

{

void stu_login();

void c_view() ;

int

inp,i=0,n=0;

FILE *fp;

char input;

struct course courseview[10];

if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程

{

system("cls");

printf(" 课程不存在 ");

printf(" <按任意键返回管理菜单> ");

getchar();getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courseview[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

do

{

system("cls");

if(i==1)

{

printf(" 没有记录! ");

getchar();getchar();

stu_login();

}

else

{

printf(" ------共有%d条记录-------",i-1);

printf(" 课程编号: %d ",courseview[n].c_num);

printf(" 课程名字: %s ",courseview[n].c_name);

printf(" 课程学分: %d ",courseview[n].c_score);

printf(" 课程已选人数: %d ",courseview[n].c_nelepeo);

printf(" 课程人数上限: %d ",courseview[n].c_melepeo);

printf(" 1.上一页 2.下一页 3.回目录");

printf(" 请选择:");

scanf ("%d",&inp);

switch(inp)

{

case 1:

{

if(n==0)

{

printf(" 已到达首页 按任意键返回");

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case 2:

{

if(n==i-2)

{

printf(" 已到达尾页 按人意见返回");

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case 3:{stu_login();break;}

default:

{

printf(" 操作错误 按任意键返回");

getchar();getchar();

break;

}

}

}

}while(inp!=3);

} }

void c_searchs() {

void stu_login();

void c_searchs();

int id,i=0,j,inp,k;

int flag=0;

FILE *fp;

struct course coursesear[10];

if ((fp=fopen("course.dat","rb"))==NULL)

//判断课程信息是否存在

{

system("cls");

printf(" 课程不存在 按任意键返回");

getchar();getchar();

stu_login();

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&coursesear[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

system("cls");

printf(" 请输入你要查询的课程编号:");

scanf("%d",&id);

do//检查输入是否符合要求

{

for(j=0;j

{

if(id==coursesear[j].c_num)

{

flag++;

k=j;

}

}

if(flag==1)

{

system("cls");

printf(" 课程编号:%d ",coursesear[k].c_num);

printf(" 课程名字:%s ",coursesear[k].c_name);

printf(" 课程学分:%d ",coursesear[k].c_score);

printf(" 课程已选人数:%d ",coursesear[k].c_nelepeo);

printf(" 课程人数上限:%d ",coursesear[k].c_melepeo);

getchar();getchar();

printf(" 1.回目录继续查询 2.退出查询系统 ");

printf("请选择:");

scanf("%d",&inp);

switch(inp)

{

case 1:c_searchs();

case 2:stu_login();

default:

{

printf(" 没有这项服务 请按任意键重新输入");

getchar();getchar();

}

}

}

else

{

system("cls");

printf(" 不存在对应记录 ");

printf(" 1.回目录继续查询 2.退出查询系统 ");

printf("请选择:");

scanf("%d",&inp);

switch(inp)

{

case 1:c_searchs();

case 2:stu_login();

default:

{

printf(" 没有这项服务 请按任意键重新输入");

getchar();getchar();

}

}

}

}while(inp!=1);

}

void c_searchm() {

void stu_login();

void c_searchm();

int id,i=0,j,inp,k;

int flag=0;

FILE *fp;

struct course coursesear[10];

if ((fp=fopen("course.dat","rb"))==NULL)

//判断课程信息是否存在

{

system("cls");

printf(" 课程不存在 按任意键返回");

getchar();getchar();

stu_login();

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&coursesear[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

system("cls");

printf(" 请输入你要查询的课程编号:");

scanf("%d",&id);

do//检查输入是否符合要求

{

for(j=0;j

{

if(id==coursesear[j].c_num)

{

flag++;

k=j;

}

}

if(flag==1)

{

system("cls");

printf(" 课程编号:%d ",coursesear[k].c_num);

printf(" 课程名字:%s ",coursesear[k].c_name);

printf(" 课程学分:%d ",coursesear[k].c_score);

printf(" 课程已选人数:%d ",coursesear[k].c_nelepeo);

printf(" 课程人数上限:%d ",coursesear[k].c_melepeo);

getchar();getchar();

printf(" 1.回目录继续查询 2.退出查询系统 ");

printf("请选择:");

scanf("%d",&inp);

switch(inp)

{

case 1:c_searchm();

case 2:man_login();

default:

{

printf(" 没有这项服务 请按任意键重新输入");

getchar();getchar();

}

}

}

else

{

system("cls");

printf(" 不存在对应记录 ");

printf(" 1.回目录继续查询 2.退出查询系统 ");

printf("请选择:");

scanf("%d",&inp);

switch(inp)

{

case 1:c_searchm();

case 2:man_login();

default:

{

printf(" 没有这项服务 请按任意键重新输入");

getchar();getchar();

}

}

}

}while(inp!=1); }

void c_add()//增加课程 {

void c_add();

void man_login();

int i=0,j,inp;

FILE *fp;

struct course course_new;

struct course courses[10];

system("cls");

printf(" 请输入课程信息");

printf(" 1.课程编号:");

scanf("%d",&course_new.c_num);

printf(" 2.课程名字:");

scanf("%s",course_new.c_name);

printf(" 3.课程学分:");

scanf("%d",&course_new.c_score);

printf(" 4.课程已选人数:");

scanf("%d",&course_new.c_nelepeo);

printf(" 5.课程人数上限:");

scanf("%d",&course_new.c_melepeo);

if((fp=fopen("course.dat","rb"))!=NULL)

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

for(j=0;j<=i-1;j++)

if(course_new.c_num==courses[j].c_num)

{

system("cls");

printf(" 对不起,这个编号已经使用过 按任意键返回管理菜单");

getchar();getchar();

man_login();

break;

}

}

if((fp=fopen("course.dat","rb"))==NULL)

{

fp=fopen("course.dat","wb");

}

else

{

fclose(fp);

fp=fopen("course.dat","ab");

}

fwrite(&course_new,sizeof(struct course),1,fp);

fclose(fp);

printf(" 信息输入完毕 按任意键继续");

getchar();getchar();

do

{

system("cls");

printf(" 1.继续输入");

printf(" 2.返回管理菜单");

printf(" 请选择");

scanf("%d",&inp);

if(inp!=1&&inp!=2)

{

printf("输入不符合要求 按任意键重新选择");

getchar();getchar();

}

}while(inp!=1&&inp!=2);

switch(inp)

{

case 1:c_add();break;

case 2:man_login();break;

} }

void c_delete()//查询后删除 {

FILE *fp;

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

struct course courses[10];

void c_delete();

void man_login();

printf(" 请输入你要删除的课程编号:");

scanf("%d",&n);

if((fp=fopen("course.dat","rb"))!=NULL)

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

else

{

printf(" 不存在任何课程 按任意键返回");

getchar();getchar();

man_login();

}

for(j=0;j

{

if(courses[j].c_num==n)

{

flag=1;

fp=fopen("course.dat","wb");

for(k=0;k

fwrite(&courses[k],sizeof(struct course),1,fp);

fclose(fp);

fp=fopen("course.dat","ab");

for(k=j+1;k

{

fwrite(&courses[k],sizeof(struct course),1,fp);

}

printf(" 记录已删除! 按任意键返回 ");

getchar();getchar();

man_login();

fclose(fp);

}

}

if(flag==0)

{

printf(" 不存在对应的课程 按任意键返回");

getchar();getchar();

man_login();

} // printf(" 记录已删除! 按任意键返回 ");

}

int main() {

index(); login(); return 0; }

上一篇:地基基础试卷2范文下一篇:管理信息系统a范文